Amazon Linux 2 用の Amazon EC2 インスタンスでインスタンスロールを使用して AWS CodeCommit リポジトリで Git オペレーションを実行するにはどうすればよいですか?
最終更新日: 2020 年 10 月 20 日
Amazon Linux 2 用の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでインスタンスロールを使用して AWS CodeCommit リポジトリで Git オペレーションを実行したいと考えています。
簡単な説明
AWS コマンドラインインターフェイス (AWS CLI) 認証情報ヘルパーを使用して、EC2 インスタンスの AWS Identity and Access Management (IAM) ロールを使用して CodeCommit リポジトリで Git オペレーションを実行できます。
注: 認証情報ヘルパーの使用は、IAM ユーザーを必要としない CodeCommit リポジトリの唯一の接続方法です。
解決方法
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
1. EC2 インスタンスの IAM ロールを作成し、次の IAM ポリシーの例をロールにアタッチします。arn:aws:codecommit:us-east-1:111111111111:testrepo を、CodeCommit リポジトリの ARN に置き換えます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codecommit:GitPull",
"codecommit:GitPush"
],
"Resource": "arn:aws:codecommit:us-east-1:111111111111:testrepo"
}
]
}
注: ステップ 1 のポリシーでは、IAM ロールが CodeCommit リポジトリで Git のプルアクションとプッシュアクションを実行できます。CodeCommit に IAM ポリシーを使用する例の詳細については、CodeCommit に ID ベースのポリシー (IAM ポリシー) を使用するを参照してください。
2. ステップ 1 で作成した IAM ロールを EC2 インスタンスにアタッチします。
3. EC2 インスタンスに Git をインストールします。
注: 詳細については、Git ウェブサイトの Downloads を参照してください。
4. EC2 インスタンスで認証情報ヘルパーをセットアップするには、次のコマンドを実行します。
$ git config --global credential.helper '!aws codecommit credential-helper $@'
$ git config --global credential.UseHttpPath true
注: ステップ 4 のコマンドは、AWS 認証情報プロファイルで Git 認証情報ヘルパーの使用を指定します。認証情報プロファイルにより、Git は、CodeCommit リポジトリとやり取りするために AWS での認証が必要となるたびに、HTTPS と暗号化で署名されたバージョンの EC2 インスタンスロールを使用できます。
5. 名前と電子メールアドレスを明示的に設定するには、次のコマンドを実行します。
$ git config --global user.email "testuser@example.com"
$ git config --global user.name "testuser"
注: 名前とメールアドレスは、ユーザー名とホスト名に基づいて自動的に設定されます。
6. リポジトリを EC2 インスタンスにクローンするには、次のコマンドを実行します。
$ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/testrepo
7. CodeCommit リポジトリにコミットを作成します。
注: Windows を使用している場合は、AWS CLI 認証情報ヘルパーを使用して、Windows 上の AWS CodeCommit リポジトリへの HTTPS 接続のセットアップ手順を参照してください。