2017-02-06 56 views
0

我注意到,使用CloudFormation的UserData属性运行的脚本无法识别EC2实例的shell变量。例如,下面的模板部分在配置时不会打印任何值。有什么办法可以解决这个问题吗?Cloudformation无法识别UserData脚本中的Shell变量

UserData: 
    Fn::Base64: !Sub | 
    #!/bin/bash 
    echo HOME: $HOME 
    echo USER: $USER 
    echo PATH: $PATH 
+0

你可以看看你的情况下的系统日志(从AWS控制台:选择你的EC2实例 - >操作 - >实例设置 - >获取系统日志),看看是否有任何错误? – spg

回答

2

注意,如果cloud-initUser-Data Script被执行环境不通常含有HOMEUSER变量,因为脚本是在非登陆shell为root执行。

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

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