我们有一个堆栈,它使用另一个堆栈的输出和跨堆栈引用,Fn::ImportValue
在一个 swagger 定义主体中使用。
注:其他部分省略以缩短代码
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
放在舞台变量本身上,但它仍然没有出现。
非常感谢您的想法!