で
CodeCommit
目標
- Cloud9にてSSHを使ってCodeCommitにアクセス
- リポジトリの作成 / Clone / Push の実行まで
手順
1. IAMユーザを準備.
- 適当なIAMユーザを作成します。
- aws configure 等を利用してaws-cliの設定をしておきます
2. IAMユーザに AWSCodeCommitFullAccess ポリーシをアタッチ
AWSCodeCommitFullAccess ポリシーがないとCodeCommitにアクセスできません。
3. Cloud9にて、ssh-keygen を実行
~/.ssh 直下に鍵ファイルが作成されます。
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): <空白>
Enter passphrase (empty for no passphrase): <空白>
Enter same passphrase again: <空白>
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:zQlTv/U3V3sUqNMMxxxxxxxxxxxxxxxxqFCfM ubuntu@ip-172-31-25-169
The key's randomart image is:
+---[RSA 2048]----+
| ..*+=+B+o|
| . B.B+*oo.|
| = *o%E+ +|
| B B.*.+=|
| S + o ==|
| =|
| |
| |
| |
+----[SHA256]-----+
$ cd ~/.ssh
nohara:~/.ssh $ ls
id_rsa id_rsa.pub known_hosts
4. aws-cliを使って, 公開鍵をアップロード
GUIだとコピペに失敗することがあるので、awscli経由でちゃちゃっとやります
$ aws iam upload-ssh-public-key ¥
--user-name terraformer ¥
--ssh-public-key-body file://id_rsa.pub
{
"SSHPublicKey": {
"UserName": "terraformer",
"SSHPublicKeyId": "APKAxxxxxxxxxx",
"Fingerprint": "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
"SSHPublicKeyBody": "ssh-rsa AAAAB3NzaC1yc2ExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxHkxVD+ifmz ubuntu@ip-172-31-25-169\n",
"Status": "Active",
"UploadDate": "2019-08-04T03:14:27Z"
}
}
5. SSHの接続テスト
$ ssh APKAxxxxxxxxxx@git-codecommit.ap-northeast-1.amazonaws.com
You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.Connection to git-codecommit.ap-northeast-1.amazonaws.com closed by remote host.
Connection to git-codecommit.ap-northeast-1.amazonaws.com closed.
6. ssh/configにHostを登録
$ vim ~/.ssh/config
Host git-codecommit.*.amazonaws.com
User APK*********HA
IdentityFile ~/.ssh/id_rsa
7. configにパーミッションを設定 (重要)
$ chmod 600 ~/.ssh/config
設定は以上です。
残りは、gitの操作になります。参考まで。
既存のリモートリポジトリにpushする場合
# リモートリポジトリをclone
$ git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/your-remote-repository
# ..ローカルで変更を add & commit
# リモートリポジトリにプッシュ
$ git push origin master ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/your-remote-repository
以上
新規にリポジトリを作成する場合
aws-cli でリモートリポジトリを新規作成
$ aws codecommit create-repository --repository-name new-your-repository
{
"repositoryMetadata": {
"accountId": "869853594551",
"repositoryId": "16c9c7a2-2928-4a02-8e0e-377165a2509a",
"repositoryName": "new-your-repository",
"lastModifiedDate": 1564889728.186,
"creationDate": 1564889728.186,
"cloneUrlHttp": "https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/new-your-repository",
"cloneUrlSsh": "ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/new-your-repository",
"Arn": "arn:aws:codecommit:ap-northeast-1:1234567890:MyDemoRepo"
}
}
上からcloneUrlSshをコピ-する
$ git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/new-your-repository
Cloning into 'MyDemoRepo2'...
warning: You appear to have cloned an empty repository.
$ cd MyDemoRepo2/
$ git remote -v
origin ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/MyDemoRepo2 (fetch)
origin ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/MyDemoRepo2 (push)
以上
Tips: Gitにリモートリポジトリ関連コマンド
$ git remote add origin ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/your-remote-repository
$ git remote rm origin
$ git remote -v