2017-02-06 3 views
0

CloudFormationのUserData属性で実行されるスクリプトがEC2インスタンスのシェル変数を認識しないことに気がつきました。たとえば、以下のテンプレートセクションでは、プロビジョニング時に値は表示されません。これを回避する方法はありますか?スクリプトは非ログインシェルにrootとして実行されているのでcloud-initUser-Data Scriptが実行されます環境は通常、HOMEUSER変数が含まれていないことをCloudDataがUserDataスクリプトのシェル変数を認識しない

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

あなたのインスタンスのシステムログを見ることができ(AWSコンソールから:あなたを選択EC2インスタンス - >アクション - > [インスタンス設定] - > [システムログを取得します)がありますかどうかを確認するために任意のエラー? – spg

答えて

2

注意。 、(結果はあなたが実行しているAMIに依存することに注意!)アマゾンのLinux AMIでは

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 

は、利用可能な環境変数の完全なリストを見るためにあなたのUserDataenvコマンドを試してみてください私は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 
関連する問題