我正在制作一個主堆疊和兩個嵌套堆疊。第一個嵌套堆疊是創建 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
...
uj5u.com熱心網友回復:
唯一可行的方法(不引入自定義資源)是 ifconditionNeedMock也在根堆疊中:
paramMockServerArn: !If [conditionNeedMock, !GetAtt LambdaStack.Outputs.MockServerArn, !Ref "AWS::NoValue"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/442432.html
上一篇:Lambda函式是否預裝了AWS庫?(boto3,botocore)
下一篇:將資料直接放入S3-IA
