Mik*_*nko 5 amazon-web-services aws-cloudformation
是否可以在Fn :: GetAtt中使用Fn :: ImportValue。目前,我正在尝试执行以下操作
"ParentId": {
"Fn::GetAtt": [
{
"Fn::ImportValue": {
"Fn::Sub": "${ParentStack}:RestApi"
}
},
"RootResourceId"
]
}
Run Code Online (Sandbox Code Playgroud)
但是我面临一个错误。“模板错误:每个Fn :: GetAtt对象都需要两个非空参数,即资源名称和资源属性”。
小智 6
就目前而言,不可能在“ Fn :: GetAtt”块中包含“ Fn :: ImportValue”。我对此的最好解释是,您要获取其属性值的资源不在当前模板的范围内。
您可以尝试从“父”模板中导出您感兴趣的所有属性值。
因此,您的父模板将如下所示:
"Outputs" : {
"RestApi": {
"Value" : { "Ref": "RestApi" },
"Export" : { "Name": "RestApi" }
},
"RestApiRootResourceId": {
"Value" : { "Fn::GetAtt": ["RestApi", "RootResourceId"] },
"Export" : { "Name" : "RestApiRootResourceId" }
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在子模板中,您可以从父模板引用API根资源ID:
"Resources" : {
"XApiResource": {
"Type": "AWS::ApiGateway::Resource",
"Properties": {
"RestApiId": {"Fn::ImportValue" : "RestApi"},
"ParentId": {"Fn::ImportValue" : "RestApiRootResourceId"},
"PathPart": "apiPath"
}
}
}
Run Code Online (Sandbox Code Playgroud)
尽管它有点复杂,但语法看起来是正确的,因此问题可能是第一个参数解析为空值(因为第二个参数显然是您所说的字符串)。
您可以尝试通过删除堆栈中失败的任何部分、创建堆栈的输出并查看它是否有值来确定是否是这种情况。
就像是:
"Outputs" : {
"ParentStack" : {
"Value" : "Fn::Ref": "ParentStack"
},
"ParentStackRestAPI" : {
"Value" : "Fn::Sub": "${ParentStack}:RestApi"
},
"ImportedValue" : {
"Value" : "Fn::ImportValue": {
"Fn::Sub": "${ParentStack}:RestApi"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3401 次 |
| 最近记录: |