CodeCommit をCLIからつかう方法について
CLIから閲覧権限操作が可能なgitリポジトリ CodeCommit。
CLIでの操作をまとめています。
GUI操作 参考
日本語
ユーザ観点での紹介 http://dev.classmethod.jp/cloud/aws/aws-codecommit-released/
英語 sshでの利用方法 http://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html
目次
このエントリでは下記のような流れで、リモートのgitリポジトリにデータを入れるところまで行きます。
-
CodeCommitへのアクセス権限(ポリシー)を持ったグループの作成
-
リポジトリにアクセスするAWS IAMアカウントの作成
-
そのアカウントのssh公開鍵の作成、登録
( これを、書き込みができるPowerUserとReadOnlyユーザを作成します ) -
CodeCommit側でのリポジトリ操作
- リストアップ
- 作成
- 削除
-
作業端末側 ~/.ssh/config 設定
-
サーバのfingerprintを ~/.ssh/known_hosts に追加
-
手元のディレクトリを git管理にしてpushする
CodeCommit用 IAMアカウント作成
CodeCommit PowerUserと ReadOnly用の設定をします
グループを作成、
IAMアカウントを作成、
グループ内にIAMアカウントを追加します
PowerUser 作成
$ aws iam create-group --group-name codecommit_poweruser
{
"Group": {
"Path": "/",
"CreateDate": "2016-05-25T23:36:43.207Z",
"GroupId": "********************",
"Arn": "arn:aws:iam::***********:group/CodeCommit_PowerUser",
"GroupName": "CodeCommit_PowerUser"
}
}
$ aws iam attach-group-policy --group-name codecommit_poweruser --policy-arn "arn:aws:iam::aws:policy/AWSCodeCommitPowerUser"
$ aws iam create-user --user-name codecommit_poweruser
{
"User": {
"UserName": "codecommit_poweruser",
"Path": "/",
"CreateDate": "2016-05-26T00:00:03.883Z",
"UserId": "**********************",
"Arn": "arn:aws:iam::482789188173:user/codecommit_poweruser"
}
}
$ aws iam add-user-to-group --group-name codecommit_poweruser --user-name codecommit_poweruser
$ cd ~/.ssh/ && ssh-keygen -f codecommit_poweruser
PowerUser用 ssh 公開鍵のIAMへの登録
$ aws iam list-ssh-public-keys --user-name codecommit_poweruser
{
"SSHPublicKeys": [],
"IsTruncated": false
}
$ aws iam upload-ssh-public-key --user-name codecommit_poweruser --ssh-public-key-body "$(cat ~/.ssh/codecommit_poweruser.pub)"
{
"SSHPublicKey": {
"UserName": "codecommit_poweruser",
"Status": "Active",
"SSHPublicKeyBody": "ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXX hoge@localhost.localdomain",
"UploadDate": "2016-04-20T23:51:41.425Z",
"Fingerprint": "8e:c5:32:85:d0:0d:7d:2b:e5:36:6a:e9:5a:62:89:24",
"SSHPublicKeyId": "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}
ReadOnly グループの作成
$ aws iam create-group --group-name codecommit_readonly
{
"Group": {
"Path": "/",
"CreateDate": "2016-05-25T23:54:03.143Z",
"GroupId": "**********************",
"Arn": "arn:aws:iam::************:group/CodeCommit_ReadOnly",
"GroupName": "codecommit_readonly"
}
}
$ aws iam attach-group-policy --group-name codecommit_readonly --policy-arn "arn:aws:iam::aws:policy/AWSCodeCommitReadOnly"
$ aws iam get-user --user-name codecommit_readonly
codecommit_readonly ユーザがいないことを確認
$ aws iam create-user --user-name codecommit_readonly
$ aws iam add-user-to-group --group-name codecommit_readonly --user-name codecommit_readonly
$ cd ~/.ssh/ && ssh-keygen -f codecommit_readonly
ReadOnly用 ssh 公開鍵のIAMへの登録
$ aws iam list-ssh-public-keys --user-name codecommit_readonly
{
"SSHPublicKeys": [],
"IsTruncated": false
}
$ aws iam upload-ssh-public-key --user-name codecommit_readonly --ssh-public-key-body "$(cat ~/.ssh/codecommit_readonly.pub)"
{
"SSHPublicKey": {
"UserName": "codecommit_readonly",
"Status": "Active",
"SSHPublicKeyBody": "ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXX hoge@localhost.localdomain",
"UploadDate": "2016-04-20T23:51:41.425Z",
"Fingerprint": "XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX",
"SSHPublicKeyId": "XXXXXXXXXXXXXXXXXXXXXXX"
}
}
$ aws iam list-ssh-public-keys --user-name codecommit_readonly
$ git clone ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/
CodeCommit側でのリポジトリ操作
$ aws codecommit --region us-east-1 list-repositories
$ aws codecommit --region us-east-1 create-repository --repository-name hoge
$ aws codecommit --region us-east-1 delete-repository --repository-name hoge
作業端末側 ~/.ssh/config 設定
~/.ssh/config 編集 ssh通信できるようにする
指定の公開鍵を使ってアクセスするように設定
※ ~/.ssh/config の [ User ]は AWS IAMアカウントで確認できる SSHPublicKeyId にする
この値はAWS-CLIで
aws iam --region us-east-1 list-ssh-public-keys --user-name username
でも確認できる
$ vi ~/.ssh/config
下記追加した
Host git-codecommit.*.amazonaws.com
User AKI***************
IdentityFile ~/.ssh/codecommit_readonly.pem
上記は CodeCommit用に作成したアカウントのAccess Key Idと、
作成した鍵のファイル名にしている。
サーバのfingerprintをknown_hostsに追加する
下記は2015/09/04に実施した。この時のCodeCommit側フィンガープリントは
『a6:9c:7d:bc:35:f5:d4:5f:8b6f:c8:bc:d4:83:84.』だった
手元のディレクトリを git管理にしてpushする
$ git init
$ git config credential.helper '!aws codecommit credential-helper $@'
$ git config credential.UseHttpPath true
$ git remote add codecommit ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/${PWD##*/}
$ git commit
$ git push -u repogitory_name master