【问题标题】:Cloudformation Parameter map and using !join to join API Gateway uriCloudformation 参数映射和使用 !join 加入 API Gateway uri
【发布时间】:2021-01-24 07:08:40
【问题描述】:

我正在使用映射来映射 API Gateway uri wrt 区域和环境。在策略中使用 !FindInMap[KensisAPIMap, !Ref "AWS::Region", !Ref envname]]]

使用下面的模板 sn-p 创建堆栈时,我收到 “模板错误:每个 Fn::Join 对象都需要两个参数,(1) 字符串分隔符和 (2) 要连接的字符串列表或返回要加入的字符串列表(例如 Fn::GetAZs)的函数。" 错误

Mappings: 
 DataAPIMap: 
  us-west-2: 
    DevOne: "09lvg5kd1l/*/PUT/*/*/*/v2"
    TestOne: "default"
  eu-central-1: 
    devTwo: "sixv6a77sg/*/PUT/*/*/*/v2"
    TestTwo: "default" 
 KensisAPIMap: 
  us-west-2: 
    devOne:
        - !Join ["", [!Sub '${AWS::Region}:${AWS::AccountId}:we4x5ulbsl/*/PUT/s']]
  eu-central-1: 
    devTwo: 
        - !Join ["", [!Sub 'us-west-2', !Ref KensisActId ,':we4x5ulbsl/*/PUT/s']]
Resources:
   ----

谢谢

【问题讨论】:

  • 您到底在哪里使用FindInMap?它没有显示在您的问题中。
  • 我在策略 PolicyDocument 中使用它:版本:2012-10-17 声明:-效果:允许操作:'execute-api:Invoke' 资源:-!加入 ["",[!Sub 'arn:aws:execute-api:',!FindInMap [TAAccountAPIMap, !Ref "AWS::Region", !Ref vpcname]]]

标签: mapping amazon-cloudformation aws-api-gateway


【解决方案1】:

在 us-west-2:devOne 中,您似乎根本不需要 Join。 所以:

KensisAPIMap: 
  us-west-2: 
    devOne: !Sub '${AWS::Region}:${AWS::AccountId}:we4x5ulbsl/*/PUT/s'

关于 devTwo 像这样尝试吗?注意缩进

devTwo: 
    Fn::Join: 
     - ""
     - - us-west-2 
       - !Ref KensisActId 
       - :we4x5ulbsl/*/PUT/s

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2016-11-02
    • 2018-02-03
    • 1970-01-01
    • 2022-01-20
    • 2016-12-03
    • 2020-09-28
    • 2016-07-21
    • 2019-12-01
    相关资源
    最近更新 更多