【发布时间】:2016-11-28 04:05:44
【问题描述】:
我正在尝试使用云形成创建一个模板,该模板设置一个将日志写入 S3 存储桶的负载均衡器。我不想让每个人都拥有完全访问权限(例如 *),而是想限制 PutObject 仅访问负载均衡器帐户或服务:
{
"Resources": {
"LoggingBucketPolicy": {
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": {
"Ref": "LoggingBucket"
},
"PolicyDocument": {
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": {
"Fn::Join": [
"",
[
"arn:aws:s3:::",
{
"Ref": "LoggingBucket"
},
"/*"
]
]
},
"Principal": {
"Ref": "ElasticLoadBalancingAccountID" //How do I set this dynamically?
}
}
}
}
}
}
documentation 提供各个地区 ELB 实例的账户 ID。但是,我正在创建的模板有一个可用区参数,用户可以在其中选择一个可用区来部署堆栈。所以我最理想的做法是在我的存储桶策略中使用某种ref 变量,该变量根据可用区获取负载均衡器的帐户ID。
我还查看了official documentation 中的示例,但使用Ref 的示例并没有真正定义变量。
我如何做到这一点?
编辑:我指的是可用区而不是区域。输入参数为用户提供区域中可用区域的下拉列表。
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-cloudformation