Cloudformation无法识别UserData脚本中的Shell变量

时间:2017-02-06 23:02:13

标签: shell amazon-web-services amazon-cloudformation

我注意到使用CloudFormation的UserData: Fn::Base64: !Sub | #!/bin/bash echo HOME: $HOME echo USER: $USER echo PATH: $PATH 属性运行的脚本无法识别EC2实例的shell变量。例如,下面的模板部分在配置时不会打印任何值。有没有办法解决这个问题?

Stargazer

1 个答案:

答案 0 :(得分:2)

请注意,cloud-init User-Data Script执行的环境通常不包含HOMEUSER个变量,因为脚本已执行在非登录shell中为root

尝试env中的UserData命令,查看可用的完整环境变量列表:

Description: Output shell variables.
Resources:
  Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-9be6f38c # amzn-ami-hvm-2016.09.1.20161221-x86_64-gp2
      InstanceType: m3.medium
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash
          env

在Amazon Linux AMI上(请注意,结果将取决于您正在运行的AMI!),我在Console Output中获得以下输出:

TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
RUNLEVEL=3
runlevel=3
PWD=/
LANGSH_SOURCED=1
LANG=en_US.UTF-8
PREVLEVEL=N
previous=N
CONSOLETYPE=serial
SHLVL=4
UPSTART_INSTANCE=
UPSTART_EVENTS=runlevel
UPSTART_JOB=rc
_=/bin/env