gpt4 book ai didi

amazon-web-services - 如何仅在资源存在时才使用 Fn::GetAttr?

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

我正在制作一个主堆栈和两个嵌套堆栈。第一个嵌套堆栈是创建 Lambda 的堆栈。第二个嵌套堆栈创建 Apigateway。

在制作 Apigateway 时,我将一些 Lambda 输出发送到 Apigateway 模板。但某些 Lambda 输出在某些情况下不会创建。

因此,当我使用 Fn::GetAttr 将一些输出发送到 Apigateway 模板时。我收到错误,因为输出不存在。

[Lambda 模板(嵌套堆栈)]

由于条件 conditionNeedMock,未创建 MockServerArn 输出。

...
Outputs:
MockServerArn:
Condition: conditionNeedMock
Description: lambdaMock function Arn
Value: !GetAttr lambdaMock.Arn
...

[主模板]

LambdaStack.Ouputs.MockserverArn 未创建,因此我在使用 !GetAttr 时收到错误。

...
Resources:
LambdaStack:
Type: AWS::CloudFormation::Stack
...

ApiGatewayStack:
Type: AWS::CloudFormation::Stack
DependsOn: LambdaStack
Properties:
TemplateURL: apigateway.yml
TimeoutInMinutes: 20
Parameters:
paramMockServerArn: !GetAtt LambdaStack.Outputs.MockServerArn
...

最佳答案

唯一可行的方法(不引入自定义资源)是如果 conditionNeedMock 也在根堆栈中:

paramMockServerArn: !If [conditionNeedMock, !GetAtt LambdaStack.Outputs.MockServerArn, !Ref "AWS::NoValue"]

关于amazon-web-services - 如何仅在资源存在时才使用 Fn::GetAttr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71448166/

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