AWS CloudFormation 用户数据

AWS CloudFormation 用户数据

我正在尝试将 $var 传输到 UserData 以调用 EC2 实例内的脚本。

我的示例代码:

AWSTemplateFormatVersion: 2010-09-09
Resources:
  ASLaunchConfig:
    Type: 'AWS::AutoScaling::LaunchConfiguration'
    Properties:
      AssociatePublicIpAddress: false
      ImageId: ami-0bxxxxxxxxccb
      InstanceType: 't2.medium'
      KeyName: 'keyname'
      LaunchConfigurationName: 'LaunchConfig'
      UserData: !Base64 | 
            #!/bin/bash
            blabla-${ClusterName}
            somecode
            somecode
Parameters:
  ClusterName:
    Description: Cluster Name
    Type: String
    Default: cluster-dev
    AllowedValues:
      - cluster-dev
      - cluster-qa

但是在通过 CloudFormation 构建“启动配置”之后,我在 EC2 UserData 字符串中收到了如下内容:

#!/bin/bash
blabla-${ClusterName}
somecode
somecode

我期待类似的事情:

#!/bin/bash
blabla-cluster-dev
somecode
somecode

我检查了很多主题,但仍然找不到决定。

答案1

您错过了!Sub替换变量的选项。试试这个:

UserData:
  Fn::Base64:
    !Sub |
      # rest of it

关键这是:

如果您使用简短形式并立即包含另一个函数...,请对其中一个函数使用完整的函数名称。

例子:

!Base64
  "Fn::Sub": string

Fn::Base64:
  !Sub string

相关内容