在策略资源中使用AWS :: Region

时间:2020-03-02 22:11:49

标签: amazon-web-services amazon-cloudformation

我正在尝试根据当前的云形成堆栈区域动态更改s3资源名称。 Cloudformation堆栈更新没有任何错误。 难道我做错了什么?我希望将{AWS :: Region}的政策解析为us-east-1。

        Version: 2012-10-17
        Statement:
          - Sid: RestrictS3Access
            Effect: Allow
            Action:
              - 's3:GetObject'
            Resource:
              - !Sub "arn:aws:s3:::dnsa-${AWS::Region}test/${cognito-identity.amazonaws.com:sub}"
              - !Sub "arn:aws:s3:::dnsa-${AWS::Region}test/${cognito-identity.amazonaws.com:sub}/*"

我希望看到以下政策。我正在从AWS控制台检查结果。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "s3:GetObject"
        ],
        "Resource": [
            "arn:aws:s3:::dnsa-us-east-1/${cognito-identity.amazonaws.com:sub}",
            "arn:aws:s3:::dnsa-us-east-1/${cognito-identity.amazonaws.com:sub}/*"
        ],
        "Effect": "Allow",
        "Sid": "RestrictS3Access"
    }

1 个答案:

答案 0 :(得分:0)

如果您希望${cognito-identity.amazonaws.com:sub}保持不变,则需要使用${!}对其进行转义。

    Version: 2012-10-17
    Statement:
      - Sid: RestrictS3Access
        Effect: Allow
        Action:
          - 's3:GetObject'
        Resource:
          - !Sub "arn:aws:s3:::dnsa-${AWS::Region}test/${!cognito-identity.amazonaws.com:sub}"
          - !Sub "arn:aws:s3:::dnsa-${AWS::Region}test/${!cognito-identity.amazonaws.com:sub}/*"