微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

嵌套 CloudFormation - 子模板未拾取参数

如何解决嵌套 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

在 Cluster 子堆栈中,我设置了一个顶级参数,然后在资源部分调用该参数;

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 交叉堆栈,您的输出应如下所示:

'REV'

否则你必须用

导入它
'REV'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。