gpt4 book ai didi

json - 如何构建此 JSON CloudFormation 模板

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

从此article ,它展示了如何部署 AWS::Serverless::Function作为“代理”进行路由、A/B 测试等。

示例模板采用 YAML 格式,但我们需要使用 JSON,因为 AWS dotnet 模板正是基于 JSON 构建的。

YAML 中有一行我无法弄清楚如何转换为 JSON 模板:

LambdaFunctionARN: !Ref LambdaEdgeFunctionSample.Version

在 JSON 模板中 Ref仅引用另一个资源或参数。你不能RefResource.Property 。为此,您可以使用 Fn::GetAtt .

我已经尝试过Fn::GetAtt ,但出现错误“版本是此资源的未知属性”(在编辑器中)和 Template error: every Fn::GetAtt object requires two non-empty parameters, the resource name and the resource attribute部署期间:

"LambdaFunctionARN":{"Fn::GetAtt":["LambdaEdgeFunctionSample","Version"]}}

请注意,这些都在底层使用 AWS::Serverless::Function,因此正在进行更多转换。

具体来说,当转换 JSON 模板时,它会创建:

"LambdaEdgeFunctionSampleVersion1cfc342538": {
"Type": "AWS::Lambda::Version",
"DeletionPolicy": "Retain",
"Properties": {
"FunctionName": {
"Ref": "LambdaEdgeFunctionSample"
}
}
},

但我不能使用LambdaEdgeFunctionSampleVersion1cfc342538很明显,这是一个临时 ID。

如何在 JSON 模板中实现与 YAML 模板相同的功能?

最佳答案

显然,AWS SAM 在实际处理模板之前会对 !Ref LambdaEdgeFunctionSample.Version 进行转换。

所以,在 Json 中,它是相同的,并且 SAM 进行转换:

{"Ref":"LambdaEdgeFunctionSample.Version"}

转换为

{
"Ref": "LambdaEdgeFunctionSampleVersionf76b18e3ba"
}

关于json - 如何构建此 JSON CloudFormation 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72647838/

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