のぴぴのメモ

自分用のLinuxとかの技術メモ

AWS CodeCommitでgit認証にAWS CLIの認証情報ヘルパーを使用する

CodeCommitに作成したgitレポジトリに接続するための認証に、AWS CLIを利用する方法です。gitの認証ヘルパーに"aws codecommit credential-helper"を利用するのがポイントです。

1.手順: IAMユーザ作成とAWS CLIプロファイル設定

1.1 CodeCommit用のIAMユーザを作成

グループ"CodeCommitUserGrp"を作成し、AWSCodeCommitPowerUserポリシーを付与。
ユーザ"User01"を、"CodeCommitUserGrp"で作成する。

  • グループ設定
    • グループ名: CodeCommitUserGrp
    • アタッチするポリシ: AWSCodeCommitPowerUser
# 設定
aws iam create-group --group-name CodeCommitUserGrp
aws iam attach-group-policy --group-name CodeCommitUserGrp --policy-arn arn:aws:iam::aws:policy/AWSCodeCommitPowerUser
# 設定確認
aws iam get-group --group-name CodeCommitUserGrp
aws iam list-attached-group-policies --group-name CodeCommitUserGrp
  • ユーザ設定
    • ユーザ名: User01
    • 所属グループ: CodeCommitUserGrp
# 設定
aws iam create-user --user-name User01
aws iam add-user-to-group --user-name User01 --group-name CodeCommitUserGrp 
# 設定確認
aws iam get-user --user-name User01
aws iam list-groups-for-user --user-name User01

1.2 ユーザのアクセスキーとシークレットキーを生成

PCのAWS CLIに設定するアクセスキーとシークレットキーを生成します。AccessKeyIdとSecretAccessKeyを控えます。(漏洩しないよう注意!!)

aws iam create-access-key --user-name User01
{
    "AccessKey": {
        "UserName": "User01", 
        "Status": "Active", 
        "CreateDate": "2019-08-12T09:55:52Z", 
        "SecretAccessKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 
        "AccessKeyId": "YYYYYYYYYYYYYYYYYYYY"
    }
}

1.3 AWS CLIにプロファイルを作成

AWS CLIがセットアップされていない場合は、こちらの記事を参照してCLIをインストールして下さい。
AWS CLIをセットアップ後に、aws CLIにcodecommitというプロファイルを作成し、先ほど生成したアクセスキーとシークレットキーを登録します。

aws --profile codecommit configure
AWS Access Key ID [None]: YYYYYYYYYYYYYYYYYYYY
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: json

2.手順: gitの認証ヘルパー設定

gitコマンドがインストールされていない場合は、先にgitをインストールします。(インストール方法は記載しないので、別途検索して下さい)

2.1 gitの初期設定(ユーザ設定&pushモード設定)

(1)メールアドレス、(2)名前、(3)push時のモードを設定します。

git config --global user.email "xxxxxxx@gmail.com"
git config --global user.name "xxxxxxxx"
git config --global push.default simple

git config --global -l

2.2 gitの認証ヘルパーにAWSコマンドを設定

公式ドキュメントの情報を参考に、下記コマンドで認証ヘルパーとしてAWSコマンドを指定します。

git config --global credential.helper '!aws --profile codecommit codecommit credential-helper $@'
git config --global credential.UseHttpPath true

ただし、私の環境では上記コマンドで正しく反映されなかったため、"~/.gitconfig"のcredential句の部分を、下記の通り正しい内容に修正しました。(こちらの記事を参考にしました)

[credential]
   helper = "!aws --profile codecommit codecommit credential-helper $@"
   UseHttpPath = true

3.手順: CodeCommitのレポジトリからcloneのテスト

git clone <レポジトリhttpsのURL>