如何使用 cloudformation 更改 s3 存储桶策略?
How to change s3 bucket policies with cloudformation?
我希望能够使用 cloudformation 更改 s3 存储桶的策略。但是,当我尝试这样做时,我遇到了错误:
2017-12-21 18:49:10 UTC TestBucketpolicyAwsS3Bucketpolicy CREATE_FAILED API: s3:PutBucketPolicy Access Denied
以下是由于此问题而失败的 cloudformation 模板示例:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "",
"Resources": {
"TestBucketpolicyAwsS3Bucketpolicy": {
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": "alex-test-bucket-123",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Resource": "arn:aws:s3:::alex-test-bucket-123/*",
"Action": [
"s3:GetObject*",
"s3:DeleteObject*",
"s3:PutObject*"
]
}
]
}
}
}
}
}
我已经尝试更改我的 IAM 用户和我想使用 cloudformation 管理的实际存储桶的策略,但两种解决方案都没有解决问题。我怎样才能删除此 "s3:PutBucketPolicy"
限制?
编辑: 我认为问题可能在于只有 IAM 角色才能访问 "s3:PutBucketPolicy"
操作。我可能需要创建一个具有 s3 访问权限的角色,然后与运行此 cloudformation 模板的用户建立信任关系。
https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html
IAM 用户无法直接运行s3:PutBucketPolicy
操作。您需要创建一个单独的 IAM 角色并使用 trust relationship to assume that IAM role.
将其附加到您的用户
您的角色将需要 s3 和 cloudformation 访问权限。下面的政策文件将起作用。
{
"Version": "2012-10-17",
"Statement": {
"Action": [
"s3:*",
"cloudformation:*"
],
"Resource": "*",
"Effect": "Allow"
}
}
然后需要在您的配置或 AWS_STS_ROLE_ARN
环境变量中设置您的 IAM 角色的 arn 以及您的 aws 访问密钥。
一旦您担任该角色,您就可以更改 s3 存储桶策略。
请注意,当您在配置或环境变量中设置 AWS_STS_ROLE_ARN
时,这将覆盖您的用户拥有的任何权限。
我希望能够使用 cloudformation 更改 s3 存储桶的策略。但是,当我尝试这样做时,我遇到了错误:
2017-12-21 18:49:10 UTC TestBucketpolicyAwsS3Bucketpolicy CREATE_FAILED API: s3:PutBucketPolicy Access Denied
以下是由于此问题而失败的 cloudformation 模板示例:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "",
"Resources": {
"TestBucketpolicyAwsS3Bucketpolicy": {
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": "alex-test-bucket-123",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Resource": "arn:aws:s3:::alex-test-bucket-123/*",
"Action": [
"s3:GetObject*",
"s3:DeleteObject*",
"s3:PutObject*"
]
}
]
}
}
}
}
}
我已经尝试更改我的 IAM 用户和我想使用 cloudformation 管理的实际存储桶的策略,但两种解决方案都没有解决问题。我怎样才能删除此 "s3:PutBucketPolicy"
限制?
编辑: 我认为问题可能在于只有 IAM 角色才能访问 "s3:PutBucketPolicy"
操作。我可能需要创建一个具有 s3 访问权限的角色,然后与运行此 cloudformation 模板的用户建立信任关系。
https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html
IAM 用户无法直接运行s3:PutBucketPolicy
操作。您需要创建一个单独的 IAM 角色并使用 trust relationship to assume that IAM role.
您的角色将需要 s3 和 cloudformation 访问权限。下面的政策文件将起作用。
{
"Version": "2012-10-17",
"Statement": {
"Action": [
"s3:*",
"cloudformation:*"
],
"Resource": "*",
"Effect": "Allow"
}
}
然后需要在您的配置或 AWS_STS_ROLE_ARN
环境变量中设置您的 IAM 角色的 arn 以及您的 aws 访问密钥。
一旦您担任该角色,您就可以更改 s3 存储桶策略。
请注意,当您在配置或环境变量中设置 AWS_STS_ROLE_ARN
时,这将覆盖您的用户拥有的任何权限。