小编Nee*_*hah的帖子

AWS CloudFormation:使用 {{resolve}} 使用动态引用嵌套子会导致错误并且不执行解析以从 Parameter Store 获取值

我正在尝试使用 AWS CloudFormation 模板创建一个 EC2 实例,其中包含使用模板中的动态引用和跨堆栈引用生成的一些用户数据。有一个参数存储在 AWS Systems Manager Parameter Store 中,带有Name:/MyCustomParameterValue:Test1

这个想法是将一个参数传递给引用另一个 cloudformation 堆栈(StackB)的模板堆栈(堆栈 A)。堆栈 B 导出一个引用“StackB::ParameterStoreName”的变量。堆栈 A 用于Fn::ImportValue: 'StackB::ParameterStoreName'获取它的值,以便它可以与动态引用方法一起使用,以使用从 AWS SSM Parameter Store 获取它的值{{resolve:ssm:/MyCustomParameter:1}}并将其值传递给模板中的 UserData 字段。我在尝试在Fn::Sub:这个用例中使用嵌套函数时遇到了困难。

我尝试删除|管道并使用带有转义换行符的双引号,但这不起作用。

我还尝试使用不同类型的资源,它的属性在哪里工作。下面是一个有效的代码示例。

Resources:
  TestBucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: 
        Fn::Sub:
          - '${SSMParameterValue}-12345'
          - SSMParameterValue: 
              Fn::Sub:
                - '{{resolve:ssm:${SSMParameterName}:1}}'
                - SSMParameterName: 
                    Fn::ImportValue:
                      !Sub '${CustomStack}::ParameterStoreName'
Run Code Online (Sandbox Code Playgroud)

以下是我拥有的当前代码的摘录:

Parameters:
  CustomStack:
    Type: "String"
    Default: "StackB"
Resources:
  MyCustomInstance:  
    Type: 'AWS::EC2::Instance'
        Properties:
        UserData:
            Fn::Base64:
            Fn::Sub:
                - |
                #!/bin/bash -e …
Run Code Online (Sandbox Code Playgroud)

aws-cloudformation aws-cli amazon-eks

5
推荐指数
1
解决办法
3122
查看次数

标签 统计

amazon-eks ×1

aws-cli ×1

aws-cloudformation ×1