首页 > 解决方案 > 从现有资源构建云形成中的字符串路径

问题描述

我正在云形成模板中创建一个托管策略,该策略锁定对 s3 容器和密钥路径的访问。我已按照 aws 中的文档使用 !Join 但我收到格式错误的模板错误。

   Resource:
     - !GetAtt ACHSFTPProxyBucket.Arn
     -
     - !Join
         - - ''
           - !GetAtt SomeBucketICreated.Arn
           - /supersecret/upload/* #note I've also wrapped this in quotes and no dice

我过去曾使用操作条件限制访问,但想知道这是否可以在资源行和 !Join 上完成。

一旦部署在控制台的 json 编辑器中,输出应该如下所示

Resource:[
   "arn:aws:s3:::bucketbname", 
   "arn:aws:s3:::bucketbname/supersecret/upload/*"
]

我已经在控制台中手动修改了 json 以测试策略是否有效,它只是试图弄清楚如何将其转换为模板。

构造与字符串结合的arn的正确方法是什么

标签: amazon-cloudformationamazon-iam

解决方案


你需要Fn::Sub. 类似的东西:

   Resource:
     - !GetAtt ACHSFTPProxyBucket.Arn
     - !Sub '${SomeBucketICreated.Arn}/supersecret/upload/*'

推荐阅读