4

我正在使用 Terraform 脚本创建 aws 弹性 beanstalk 环境,我需要在实例启动时启动一个 shell 脚本

我已经尝试过以下

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")}"
   }
}

这是抛出错误

申请计划时出错:

发生 1 个错误:

aws_elastic_beanstalk_environment.Environment:ConfigurationValidationException:配置验证异常:无效的选项规范(命名空间:'aws:autoscaling:launchconfiguration',OptionName:'user_data'):未知的配置设置。状态码:400,请求ID:xxxxx-xxxxxx

请帮忙

4

2 回答 2

7

感谢您的回答,我找到了解决方案

我创建了一个文件夹 .ebextensions 并在文件夹中创建了一个名为 99delayed_job.config 的文件(您可以提供任何名称)

在此处输入图像描述

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 并用 'Dockerrun.aws.json' 压缩这个 zip 我发送到 s3 并用于部署

在此处输入图像描述

工作正常:)

于 2017-04-20T06:26:33.743 回答
3

我找不到有关 AWS Elastic Beanstalk 服务的任何信息,这些信息公开了修改user_data实例的方法。但是,您可以调整使用的 AMI,因此您可以使用Packer之类的工具为自己构建一个包含 AMI 的自定义 AMI user_data

于 2017-04-19T14:25:14.450 回答