我注意到使用CloudFormation的UserData:
Fn::Base64: !Sub |
#!/bin/bash
echo HOME: $HOME
echo USER: $USER
echo PATH: $PATH
属性运行的脚本无法识别EC2实例的shell变量。例如,下面的模板部分在配置时不会打印任何值。有没有办法解决这个问题?
Stargazer
答案 0 :(得分:2)
请注意,cloud-init
User-Data Script执行的环境通常不包含HOME
和USER
个变量,因为脚本已执行在非登录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