title: Why I get ElasticBeanstalk::ExternalInvocationError?
body: <p>My app is built on RubyOnRails and its deployed as an elastic beanstalk app using passenger, I am trying to add headers to nginx server and restart it, here is my config file, a script from .ebextensions folder in aws elastic beanstalk:</p>
  
  <pre><code>packages: 
      yum:
          nginx: [] 
  
  files:
      "/etc/nginx/conf.d/webapp.conf" :
          mode: "000644"
          owner: root
          group: root
          content: |
              server {
  
                  location /assets {
                    alias /var/app/current/public/assets;
                    gzip_static on;
                    gzip on;
                    expires max;
                    add_header Cache-Control public;
                  }
  
                  location /public {
                    alias /var/app/current/public;
                    gzip_static on;
                    gzip on;
                    expires max;
                    add_header Cache-Control public;
                  }
  
              }
  
  # This reloads the server, which will both make the changes take affect and makes sure the config is valid when you deploy
  container_commands:
    01_reload_nginx:
      command: "sudo service nginx reload"
  </code></pre>
  
  <p>However I got this error:</p>
  
  <pre><code>[2017-12-13T06:23:48.635Z] ERROR [17344] : Command CMD-AppDeploy failed!
  [2017-12-13T06:23:48.635Z] INFO  [17344] : Command processor returning results: 
  {"status":"FAILURE","api_version":"1.0","results":[{"status":"FAILURE","msg":"container_command 01_reload_nginx in .ebextensions/01_elastic_beanstalk_webapp.config failed. For more detail, check /var/log/eb-activity.log using console or EB CLI","returncode":7,"events":[]}]}
  </code></pre>
  
  <p>/var/log/eb-activity.log:</p>
  
  <pre><code>[2017-12-13T06:23:48.584Z] INFO  [17344] - [Application update fix-command-nginx-reload-hope@2/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_myapp_website/Command 01_reload_nginx] : Starting activity...
  [2017-12-13T06:23:48.619Z] INFO  [17344] - [Application update fix-command-nginx-reload-hope@2/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_myapp_website/Command 01_reload_nginx] : Activity execution failed, because:  (ElasticBeanstalk::ExternalInvocationError)
  
  
  [2017-12-13T06:23:48.619Z] INFO  [17344] - [Application update fix-command-nginx-reload-hope@2/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_myapp_website/Command 01_reload_nginx] : Activity failed.
  </code></pre>
  
  <p>although if I ssh into the instance and execute <code>sudo service nginx reload</code> it will be executed normally..
  Any idea?</p>
  
  <p><strong>EDIT</strong></p>
  
  <pre><code>$ cat /proc/version
  Linux version 4.9.43-17.39.amzn1.x86_64 (mockbuild@gobi-build-64011) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Fri Sep 15 23:39:41 UTC 2017
  </code></pre>
  
  <p>deploy command:</p>
  
  <pre><code>eb deploy my-app -v
  </code></pre>
  
  <p><strong>headers of requested assets</strong>:</p>
  
  <pre><code>Connection: keep-alive
  Content-Encoding: gzip
  Content-Type: application/x-javascript
  Date: Fri, 24 Aug 2018 11:03:50 GMT
  ETag: W/"12cd8ea0-20db3"
  Last-Modified: Mon, 31 Dec 1979 04:08:00 GMT
  Server: nginx/1.12.1
  Transfer-Encoding: chunked
  Via: 1.1 8cc9957dff77c27e9931ab0aaf344ec9.cloudfront.net (CloudFront)
  X-Amz-Cf-Id: 0NlE-FiGgzczadHYeK7HMMsDsGRmaB8Sefvo89phHWw3LSx01t5rgQ==
  X-Cache: Miss from cloudfront
  </code></pre>
  
  <p><strong>missing headers</strong>:</p>
  
  <pre><code>   access-control-max-age: 3000
     age: 48214
  </code></pre>
  
  <p><strong>the update conf file at server</strong></p>
  
  <pre><code>$ cat /etc/nginx/conf.d/webapp.conf
  server {
  
      location /assets {
        alias /var/app/current/public/assets;
        gzip_static on;
        gzip on;
        expires max;
        add_header Cache-Control public;
        add_header 'Access-Control-Allow-Origin' '*';
      }
  
      location /public {
        alias /var/app/current/public;
        gzip_static on;
        gzip on;
        expires max;
        add_header Cache-Control public;
        add_header 'Access-Control-Allow-Origin' '*';
      }
  
  }
  </code></pre>
  
  <p><strong>EDIT</strong></p>
  
  <p><code>service nginx configtest</code> result: </p>
  
  <pre><code>$ sudo service nginx configtest
  nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  nginx: configuration file /etc/nginx/nginx.conf test is successful
  </code></pre>