amazon-web-services - 嵌套 CloudFormation - 子模板未拾取参数
问题描述
我正在构建一个嵌套 CloudFormation 模板来构建 EKS 集群、节点组和相关角色。IAM 堆栈构建得很好,当它开始集群堆栈时,它失败并出现以下错误;“参数:模板中不存在 [IAMRoleARN]”。
在 IAM 堆栈中,我为创建的角色 ARN 定义了一个输出/导出;
Outputs:
ClusterRoleArn:
Value: !GetAtt ClusterRole.Arn
Description: EKS cluster role ARN
Export:
Name:
Fn::Sub: "${AWS::StackName}-ClusterRoleArn"
在我的父堆栈中,我将导出作为集群子堆栈参数的一部分导入;
EksClusterStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: '{bucket name withheld}'
Parameters:
EksVpc: !Ref EksStackVpc
ClusterName: !Ref EksClusterName
IAMRoleARN:
Fn::GetAtt:
- EksIamStack
- Outputs.ClusterRoleArn
VpcSecurityGroup: !Ref EksVpcSecurityGroup
ClusterSubnet1: !Ref EksSubnet1
ClusterSubnet2: !Ref EksSubnet2
在集群子堆栈中,我设置了一个顶级参数,然后我在资源部分调用它;
Parameters:
IAMRoleARN:
Type: String
Description: ARN of the IAM role created for the cluster in the
EKS IAM stack
Cluster:
Type: "AWS::EKS::Cluster"
Properties:
Name: !Ref ClusterName
Version: "1.19"
RoleArn: !Ref IAMRoleARN
ResourcesVpcConfig:
SecurityGroupIds:
- !Ref ClusterControlPlaneSecurityGroup
- !Ref VpcSecurityGroup
SubnetIds:
- !Ref ClusterSubnet1
- !Ref ClusterSubnet2
非常感谢我可能缺少的任何想法!
解决方案
如果您只想导出 ARN 交叉堆栈,您的输出应如下所示:
Outputs:
ClusterRoleArn:
Value: !GetAtt ClusterRole.Arn
否则,您将不得不使用
Fn::ImportValue: !Sub ${AWS::StackName}-ClusterRoleArn
推荐阅读
- java - 如果我真的不需要引用的数据,我应该懒惰地定义一个 JPA ManyToOne,还是只在我的实体中映射原始 id?
- docker - hcsshim::System::CreateProcess 期间遇到错误:Windows 系统调用失败:系统找不到指定的文件。(0x2)
- javascript - 找不到模块 '../../images/Logo.png'.ts(2307) 红色错误仍在显示
- r - 使用另一列值创建新列
- delve - 如何运行直到深入研究中的某行?
- c++ - 在 C++ 中使用数据库检查的登录循环
- azure - CLI cmd 何时返回
- javascript - 为什么这些复选框在 Safari 中有效,但在 Chrome 或 Firefox 中无效?
- azure-language-understanding - 如何训练具有非常密切相关话语的 luis,应该以 2 种不同的意图进行训练
- mysql - 在 mysql 中使用 if 子句和标签时的 GROUP BY 问题