0

以下はテンプレートの一部です。そこにパス変数をエクスポートします。しかし、テンプレートから実行すると、これは機能しません。サーバーにSSH接続して同じ行を実行すると動作し、gradleを使用できます。しかし、ちょうどテンプレートから、それは何とか実行されません。他のchmodコマンドが機能するので、ブロックは明確に実行されます。どんな助けも高く評価されます。CloudFormation変数をエクスポートする方法

... 
     "LaunchConfiguration": { 
      "Type": "AWS::AutoScaling::LaunchConfiguration", 
      "Metadata": { 
       "AWS::CloudFormation::Init": { 
        "config": { 
        "packages": { 
         "yum": { 
         "java-1.8.0-openjdk-devel": [] 
         } 
        }, 
        "sources": { 
         "/opt": "https://services.gradle.org/distributions/gradle-3.4.1-bin.zip", 
         "/home/ec2-user": "https://github.com/ABC/XYZ/archive/master.zip" 
        }, 
        "files": { 
         "/tmp/gradle_config": { 
         "content": { 
          "Fn::Join": ["", 
          [ 
           "#!/bin/bash -ex\n", 
           "chmod -R 755 gradle-3.4.1/\n", 
           "export PATH=$PATH:/opt/gradle-3.4.1/bin\n" //<<<< This does not work 
          ] 
          ] 
         }, 
         "mode": "000500", 
         "owner": "root", 
         "group": "root" 
         }, 
         "/tmp/app_config": { 
         "content": { 
          "Fn::Join": ["", 
          [ 
           "#!/bin/bash -ex\n", 
           "chmod -R 777 XYZ-master/\n" 
          ] 
          ] 
         }, 
         "mode": "000500", 
         "owner": "root", 
         "group": "root" 
         } 
        }, 
        "commands": { 
         "01_config": { 
          "command": "/tmp/gradle_config", 
          "cwd" : "/opt" 
         }, 
         "02_config": { 
          "command": "/tmp/app_config", 
          "cwd" : "/home/ec2-user" 
         } 
        } 
        } 
       } 
      }, ... 

答えて

1

解決策が見つかりました。これらの行はすべてrootユーザーとして実行されます。したがってexport PATH...は私のec2-userではありませんでした。私が処理する方法は、パスをグローバルに(グローバルに)/etc/environmentファイルに入れることです。私のコードスニペットで

、単に置き換える

"export PATH=$PATH:/opt/gradle-3.4.1/bin\n",

"echo \"PATH=$PATH:/opt/gradle-3.4.1/bin\" >> /etc/environment"",

関連する問題