我有一个云形成模板,需要根据其他云形成的输出变量构建IAM策略。与策略对应的资源部分是下面的一个。
当我收到Fn:ImportedValue不是字符串的错误时,问题是条件中的Fn :: ImportValue以及资源部分中的问题。
因此,我的问题是如何将资源或条件部分引用到不同云形成的输出?
谢谢, 林
{
"LambdaPolicy": {
"DependsOn": [
"LambdaRole"
],
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyName": {
"Ref": "FunctionName"
},
"Roles": [
{
"Ref": "LambdaRole"
}
],
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
},
{
"Sid": "AllowAccesToDL",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "*",
"Condition": {
"ArnLike": {
"Fn::GetAtt": [
{
"Fn::ImportValue": [
{
"Fn::Join": [
"-",
[
{
"Ref": "BasisStackName"
},
"OutputBucketNameFromOtherBucket"
]
]
}
]
},
"Arn"
]
}
}
}
]
}
}
}
}
答案 0 :(得分:0)
Ref
内在函数在同一个CloudFormation堆栈中有效。它不会对你之前创建的独立堆栈起作用。
您可以将资源(S3存储桶?)名称声明为第二个模板的输入参数,然后在创建第二个堆栈时手动提供存储桶名称。