ro 如何在 aws 弹性 beantalk 环境实例启动上运行 shell 脚本

Bik*_*h M 3 amazon-web-services user-data launch-configuration terraform

我正在使用 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")}"
   }
}
Run Code Online (Sandbox Code Playgroud)

这是抛出错误

应用计划时出错:

发生了 1 个错误:

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

请帮忙

Bik*_*h M 6

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

我创建了一个文件夹 .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>
Run Code Online (Sandbox Code Playgroud)

A 并用“Dockerrun.aws.json”压缩这个 zip 我发送到 s3 并用于部署

在此处输入图片说明

工作正常:)

  • !! 警告 !!“自定义平台挂钩是 Amazon Linux AMI 平台上存在的一项旧功能。在 Amazon Linux 2 平台上,/opt/elasticbeanstalk/hooks/ 文件夹中的自定义平台挂钩完全停止使用。Elastic Beanstalk 不会读取或执行它们。Amazon Linux 2 平台支持一种新型平台挂钩,专门用于扩展 Elastic Beanstalk 托管平台。” - https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platform-hooks.html (2认同)