amazon-web-servicesterraformuser-datalaunch-configuration

How ro run a shell script on aws elastic beanstalk environment instance launch


I am using Terraform script to create aws elastic beanstalk environment, I need to launch a shell script on instance launch

I have already tried the following

resource "aws_elastic_beanstalk_environment" "Environment" {
    name = "${var.ebs_env_name}"
    application = "${var.ebs_app_name}"
    ---
    ---
    ---
    setting = {
      namespace = "aws:autoscaling:launchconfiguration"
      name = "user_data"
      value = "${file("user-data.sh")}"
   }
}

This is throwing error

Error applying plan:

1 error(s) occurred:

aws_elastic_beanstalk_environment.Environment: ConfigurationValidationException: Configuration validation exception: Invalid option specification (Namespace: 'aws:autoscaling:launchconfiguration', OptionName: 'user_data'): Unknown configuration setting. status code: 400, request id: xxxxx-xxxxxx

Please Help


Solution

  • Thanks for the Answer, I found a solution

    I have created a folder .ebextensions and created a file inside the folder called 99delayed_job.config (you can give any name)

    enter image description here

    commands: 
      create_post_dir: 
        command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/pre"
        ignoreErrors: true
    files: 
      /opt/elasticbeanstalk/hooks/appdeploy/pre/99_restart_delayed_job.sh: 
        group: root
        mode: "000755"
        owner: root
        content: |-
            #!/usr/bin/env bash
            <My shell script here>
    

    A and zipped with 'Dockerrun.aws.json' this zip I am sending to s3 and used to deploy

    enter image description here

    Working fine :)