私は 2 つの AWS アカウントを持っています。
DEV: 111111111111
PROD: 999999999999
という名前の製品アカウントにコード コミット リポジトリを作成しましたprodRepo
。
私がやりたいことはDEV
、PROD
アカウントの ec2 インスタンスがこのレポに読み取り専用アクセスできるようにすることです。git clone
などgit pull
など...
PROD
次の IAM インスタンス プロファイルを使用して、自分のアカウントでこれを簡単に行うことができます。codecommit-tester
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codecommit:BatchGetRepositories",
"codecommit:Get*",
"codecommit:GitPull",
"codecommit:List*"
],
"Resource": "arn:aws:codecommit:us-east-1:999999999999:prodRepo"
}
]
}
信頼関係ポリシーは次のとおりです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
}
次に、git 構成で aws 資格情報ヘルパーを使用して、マシンに資格情報を保存することなく、読み取り専用の git 操作を実行します (インスタンス メタデータからコード コミットの資格情報を取得します)。
$ cat ~/.gitconfig
[credential]
helper = !aws codecommit credential-helper $@
UseHttpPath = true
私が抱えている問題は、アカウントに IAM ポリシー/ロールを作成して、DEV
アカウントと同じことを行うことPROD
です。これが私が試したものです。
アカウントの信頼関係を編集してPROD
、DEV アカウントを信頼するようにしました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": "sts:AssumeRole"
}
}
DEV
これは、アカウントがこの役割を引き受けることができることを意味すると思います。DEV
アカウントで、ロールにアタッチされたこれらの IAM ポリシーを作成しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codecommit:BatchGetRepositories",
"codecommit:Get*",
"codecommit:GitPull",
"codecommit:List*"
],
"Resource": "arn:aws:codecommit:us-east-1:999999999999:prodRepo"
}
]
}
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::999999999999:role/codecommit-tester"
}
}
この IAM インスタンス プロファイルを使用して ec2 インスタンスを起動した後、DEV アカウントで資格情報ヘルパーを使用すると、次のエラーが発生しますgit clone
。
$ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/prodRepo
Cloning into 'prodRepo'...
fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/prodRepo/': The requested URL returned error: 403
では、これを機能させるために、上の IAM ロール/ポリシーで見逃したものは何DEV
ですか?