遇到同样的问题。我从Matt和malte早期评论中的政策文件开始,但只是让它与这个一起工作:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetReplicationConfiguration",
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging",
"s3:GetObjectRetention",
"s3:GetObjectLegalHold"
],
"Effect": "Allow",
"Resource": [
"${aws_s3_bucket.source.arn}",
"${aws_s3_bucket.source.arn}/*"
]
},
{
"Action": [
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags",
"s3:GetObjectVersionTagging"
],
"Effect": "Allow",
"Condition": {
"StringLikeIfExists": {
"s3:x-amz-server-side-encryption": [
"aws:kms",
"AES256"
],
"s3:x-amz-server-side-encryption-aws-kms-key-id": [
"${aws_kms_key.replica.arn}"
]
}
},
"Resource": [
"${aws_s3_bucket.replica.arn}/*"
]
},
{
"Action": [
"kms:Decrypt"
],
"Effect": "Allow",
"Condition": {
"StringLike": {
"kms:ViaService": "s3.${aws_s3_bucket.source.region}.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn": [
"${aws_s3_bucket.source.arn}/*"
]
}
},
"Resource": [
"${aws_kms_key.source.arn}"
]
},
{
"Action": [
"kms:Encrypt"
],
"Effect": "Allow",
"Condition": {
"StringLike": {
"kms:ViaService": "s3.${aws_s3_bucket.replica.region}.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn": [
"${aws_s3_bucket.replica.arn}/*"
]
}
},
"Resource": [
"${aws_kms_key.replica.arn}"
]
}
]
}
请注意更改,可能来自 CRR 策略的 V3(从控制台选择时,AWS 创建 s3crr_kms_v3_*):
"Condition": {
"StringLikeIfExists": {
"s3:x-amz-server-side-encryption": [
"aws:kms",
"AES256"
],
"s3:x-amz-server-side-encryption-aws-kms-key-id": [
"${aws_kms_key.replica.arn}"
]
}
}
关于使用 KMS 的 S3 CRR 的 Terraform 文档仍然非常有限。