LoginSignup
1
4

More than 5 years have passed since last update.

CodeCommitをAWS-CLIからつかう

Posted at

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 作成

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"
     }
 }
グループにPowerUser権限の付与
 $ aws iam attach-group-policy --group-name codecommit_poweruser --policy-arn "arn:aws:iam::aws:policy/AWSCodeCommitPowerUser"
PowerUser用アカウント作成
$ 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"
    }
}
PowerUser用グループにIAMアカウントを追加
 $ aws iam add-user-to-group --group-name  codecommit_poweruser --user-name codecommit_poweruser
PowerUser用ssh鍵の作成
 $ cd ~/.ssh/ &&  ssh-keygen -f codecommit_poweruser

PowerUser用 ssh 公開鍵のIAMへの登録

既にssh公開鍵が設定されていないか確認
 $ aws iam list-ssh-public-keys --user-name codecommit_poweruser
 {
    "SSHPublicKeys": [],
    "IsTruncated": false
 }
IAMアカウントにssh公開鍵追加
 $ 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"
    }
 }
グループにReadOnly権限の付与
 $ aws iam attach-group-policy --group-name codecommit_readonly --policy-arn "arn:aws:iam::aws:policy/AWSCodeCommitReadOnly"
ReadOnly用IAMアカウント作成
  $ aws iam get-user --user-name codecommit_readonly
  codecommit_readonly ユーザがいないことを確認

  $ aws iam create-user --user-name codecommit_readonly
ReadOnly用グループにIAMアカウントを追加
 $ aws iam add-user-to-group --group-name  codecommit_readonly --user-name codecommit_readonly
ReadOnly用ssh鍵の作成
 $ cd ~/.ssh/ && ssh-keygen -f codecommit_readonly

ReadOnly用 ssh 公開鍵のIAMへの登録

既に設定されていないか確認
 $ aws iam list-ssh-public-keys --user-name codecommit_readonly
 {
    "SSHPublicKeys": [],
    "IsTruncated": false
 }
IAMアカウントにssh公開鍵追加
 $ 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で

SHHPublicKeyIdの確認
    aws iam --region us-east-1 list-ssh-public-keys --user-name username

でも確認できる

$ vi ~/.ssh/config

下記追加した

~/.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:8b:flag_ba:6f: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
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4