amazon-web-services - 在无服务器中创建 S3 存储桶策略 - 发生错误:BucketPolicy - 策略语法无效
问题描述
我正在尝试在我的 serverless.yml 文件中添加一个 S3 存储桶策略,该策略将授予我在存储桶上创建的权限的 IAM 用户。
我首先在控制台中直接在不同阶段(开发)的存储桶上添加策略,现在我尝试在不同阶段(测试)复制无服务器中的策略。
但是,即使我遵循aws 文档,我似乎也不能完全正确。这是我的 serverless.yml 文件中的策略。为了减少出错的可能性,我直接复制了我的 Principal 和 Resource。
S3CredentialsBucket:
Type: 'AWS::S3::Bucket'
BucketPolicy:
Type: "AWS::S3::BucketPolicy"
Properties:
Bucket: !Ref S3CredentialsBucket
PolicyDocument:
Id: ProdAnsiblePolicy
Version: "2012-10-17"
Statement:
-
Effect: Allow
Principal: 'arn:aws:iam::***********:user/prodAnsible'
Action: 's3:*'
Resource: 'arn:aws:s3:::test-mr-2-current-tenant-configurations'
下面是我直接在控制台中添加到存储桶的策略,这意味着用户可以将对象放入存储桶中。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::***********:user/prodAnsible"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::dev-2-current-tenant-configurations"
},
{
"Sid": "statement2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::***********:user/prodAnsible"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::dev-2-current-tenant-configurations/*"
}
]
}
事实上,我在尝试部署时收到以下错误:"An error occurred: BucketPolicy - Invalid policy syntax."
. 任何帮助将不胜感激!
最后看一下无服务器文件 cloudformation-template-update-stack.json。
"S3TenantConfigBucket": {
"Type": "AWS::S3::Bucket"
},
"BucketPolicy": {
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": {
"Ref": "S3TenantConfigBucket"
},
"PolicyDocument": {
"Id": "ProdAnsiblePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::249161078948:user/prodAnsible"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test-mr-2-current-tenant-configurations/*"
}
]
}
}
}
}
还值得注意的是,这是创建存储桶的方式:
events:
- s3:
bucket: ${self:custom.s3_bucket}
event: s3:ObjectCreated:*
根据无服务器文档,这是一种事件驱动的方法 在此先感谢!
解决方案
如果您指定的原则是 IAM 用户,您需要将其添加为AWS
键的值。参考:AWS JSON 策略元素:主体
S3CredentialsBucket:
Type: 'AWS::S3::Bucket'
BucketPolicy:
Type: "AWS::S3::BucketPolicy"
Properties:
Bucket: !Ref S3CredentialsBucket
PolicyDocument:
Id: ProdAnsiblePolicy
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
AWS: 'arn:aws:iam::***********:user/prodAnsible'
Action: 's3:*'
Resource: 'arn:aws:s3:::test-mr-2-current-tenant-configurations'
推荐阅读
- python - 由于缺少存根文件,Sphinx 没有迭代 .rst 文件
- api - 如何获取 facebook webhook 请求的静态 IP/域
- vba - (SQL Like 语句) + (ACCESS Combobox IMPUT) + (ACCESS SubFormulary OUTPUT)
- python - 如何将噪声签名/配置文件/指纹/PRNU 应用于新图像?
- r - r中的“情节”打包问题
- sql - 为表中的每一列创建一行视图
- configuration - 高级配置属性/属性页面在 VS2019 中消失了
- linux - 在 NAT 后面设置 Libreswan IPSec
- jspdf - 尝试测试页时自动打印失败
- excel - Excel VBA break For...下一个循环