で
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


