【发布时间】:2020-08-20 03:13:17
【问题描述】:
我们有一个堆栈,它使用另一个堆栈的输出和跨堆栈引用,在一个 swagger 定义主体中使用Fn::ImportValue。
注:其他部分省略以缩短代码
SampleApi:
Type: AWS::Serverless::Api
Properties:
StageName: Stage
Variables:
SampleFunctionName:
Fn::ImportValue:
!Sub ${OtherStackName}-SampleFunctionName
DefinitionBody:
swagger: 2.0
paths:
/sample:
get:
x-amazon-apigateway-integration:
uri:
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${stageVariables.SampleFunctionName}/invocations
其中${OtherStackName}-SampleFunctionName 是从其他堆栈导入的函数的名称。
现在,我们现在的问题是我们不能将它放在端点的uri 中。 Cloudformation 在 sam deploy 期间抱怨它,说 ${stageVariables.SampleFunctionName} 是 Fn::Sub 中的非法属性。
我尝试了几种方法,包括将整个 uri 放在舞台变量本身上,但仍然没有出现。
非常感谢您的想法!
【问题讨论】:
标签: amazon-web-services amazon-cloudformation sam