gpt4 book ai didi

amazon-web-services - AWS SAM - 如何将阶段变量与 swagger 端点 uri 上的 Fn::Sub 结合起来

转载 作者:行者123 更新时间:2023-12-03 07:18:11 28 4
gpt4 key购买 nike

我们有一个堆栈,它利用另一个堆栈的输出,并在 swagger 定义主体中使用 Fn::ImportValue 进行跨堆栈引用。

Note: other parts ommitted to shorten the code

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 部署期间提示这一点,称 ${stageVariables.SampleFunctionName} 是 Fn::Sub 中的非法属性。

我尝试了多种方法,包括将整个 uri 放在阶段变量本身上,但它仍然没有出现。

非常感谢您的想法!

最佳答案

Fn::Sub 从 SAM CLI v0.21.0 版本开始受支持。 0.21.0以下版本不支持大部分Cloudformation内在函数。

可以查看以下链接了解更多详细信息:

https://github.com/awslabs/aws-sam-cli/issues/528

https://github.com/awslabs/aws-sam-cli/releases/tag/v0.21.0

如果您使用的版本低于上述版本,您可以尝试使用 Fn::Join 而不是 Fn::Sub 作为解决方法

                uri: !Join
- ''
- - 'arn:aws:apigateway:'
- !Ref "AWS::Region"
- ':lambda:path/2015-03-31/functions/arn:aws:lambda:'
- !Ref "AWS::Region"
- ':'
- !Ref "AWS::AccountId"
- ':function:${stageVariables.SampleFunctionName}/invocations'

关于amazon-web-services - AWS SAM - 如何将阶段变量与 swagger 端点 uri 上的 Fn::Sub 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61613488/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com