CloudFormation中如何在Sub内部的ImportValue里嵌套使用Sub?
修正后的正确写法
你当前的配置存在嵌套函数语法格式错误,Fn::ImportValue 原生支持嵌套Fn::Sub作为入参,不需要给Fn::Sub添加单引号,修正后代码如下:
LambdaPermission: Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunction FunctionName: !GetAtt MyLambdaFunction.Arn Principal: apigateway.amazonaws.com SourceArn: !Sub - arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${ApiGateway}/*/POST/CreateBofAParameter - ApiGateway: !ImportValue Fn::Sub: ${ApiStack}--APIID
可选简化写法
你也可以直接将ImportValue逻辑合并到外层Sub中,无需额外定义参数映射,注意用!转义告诉外层Sub不解析内部函数即可:
LambdaPermission: Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunction FunctionName: !GetAtt MyLambdaFunction.Arn Principal: apigateway.amazonaws.com SourceArn: !Sub "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${!ImportValue ${ApiStack}--APIID}/*/POST/CreateBofAParameter"
注意事项
- 需确认模板参数段已正确声明
ApiStack参数,参数类型为String,无拼写错误 - 需确认导出
${ApiStack}--APIID的CloudFormation栈已部署完成,导出名称匹配
内容的提问来源于stack exchange,提问作者Jamills102
相关产品推荐
相关产品推荐

