コピー コマンドを実行して、アカウント A の s3 バケットからアカウント B の redshift にデータをコピーしようとしています。2 つの異なる IAM ロールを作成しました。1 つはアカウント A の s3 用で、もう 1 つはアカウント B の redshift 用です。 IAM ロールを redshift クラスターに追加し、s3 ロールの信頼エンティティとしても追加しました。
s3 IAM ロールの信頼ポリシーは次のとおりです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<redshiftAccountId>:root"
},
"Action": "sts:AssumeRole"
}
]
}
以下は、redshift IAM ロールのインライン ポリシーです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"rds-db:connect",
"redshift:GetClusterCredentials",
"redshift:JoinGroup",
"redshift:CreateClusterUser"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::<s3AccountId>:role/<s3Role>"
}
]
}
copy コマンドを実行するたびに、次のエラーが発生します。
ERROR: User arn:aws:redshift:<redshiftAccountRegion>:<redshiftAccountId>:dbuser:<redshift-cluster>/<database-user> is not authorized to assume IAM Role arn:aws:iam::<redshiftAccountid>:role/<redshift-role>,arn:aws:iam::<s3AccountId>:role/<s3Role>