相关疑难解决方法(0)

具有资源属性 CloudFormation 的 UserData 脚本

主要问题:如何在云形成模板中引用依赖资源属性来构建用户数据脚本。

我尝试过的

  1. 方法在这里列出。
  2. 子函数的例子

我正在为三节点 Kafka 集群构建 CloudFormation 模板。

我在这里采用的方法是使用 EC2 实例上的 UserData 脚本在集群的每个节点上配置 Zookeeper 和 Kafka。

我使用SubBase64函数用PrimaryPrivateIpAddress我的 NetworkInterface填充我的用户数据脚本,但它们作为空字符串而不是实际值出现。我知道这些值被正确填充,因为它们是我在模板中输出的一部分。

我在下面包含了我的模板的资源块作为参考。为了简洁起见,我省略了一些无趣的部分。我还说明了我尝试过的几种不同的方法来解决 EC2 资源块不一致的问题。

EC2I8MWW:
  Type: 'AWS::EC2::Instance'
  DependsOn:
    - EC2NI2E8ES
    - EC2NI2PFST
    - EC2NI54B66
  Properties:
    KeyName: !Ref DesiredKeyName
    InstanceType: !Ref InstanceType
    NetworkInterfaces:
      - NetworkInterfaceId: !Ref EC2NI54B66
        DeviceIndex: "0"
    UserData:
      Fn::Base64:
        Fn::Sub:
          - |
            #!/bin/bash
            CONF="/etc/zookeeper/conf.dist/zoo.cfg"
            PRIVATE_1=${Private1}
            PRIVATE_2=${Private2}
            PRIVATE_3=${Private3}
            echo "# Zookeeper configuration for Talentreef" > "$CONF"
            cat <<EOT >> "$CONF"
            maxClientCnxns=50 …
Run Code Online (Sandbox Code Playgroud)

yaml amazon-ec2 amazon-web-services aws-cloudformation

6
推荐指数
1
解决办法
6312
查看次数