【问题标题】:how to make .ebextensions work when deploying a node js application?部署节点 js 应用程序时如何使 .ebextensions 工作?
【发布时间】:2014-06-01 20:34:42
【问题描述】:

在使用 elasticbeanstalk 部署节点 js 应用程序时,我无法理解如何使用 .ebextensions。我在 May 应用程序的顶层目录中创建了一个名为 01run.config 的文件:

my_app:
   |-- server.js
   |-- site/(...)
   |-- node-modules
   |-- .ebextensions/01run.config

.ebextensions 文件包含我的 AWS 凭证和一个引用我的应用程序使用的 S3 捆绑包的参数。

option_settings:
  - option_name: AWS_SECRET_KEY
    value:  MY-AWS-SECRET-KEY
  - option_name: AWS_ACCESS_KEY_ID
    value: MY-AWS-KEY-ID
  - option_name: PARAM1
    value: MY-S3-BUNDLE-ID

使用eb create 部署我的应用程序后,会创建一个包含许多变量的.elasticbeanstalk/optionsettings.my_app-env,其中PARAM1 设置为“”。凭据也不存在。 我想我在某处读到 .ebextensions 是在启动应用程序时,所以我在 optionsettings.my_app-env' 中看不到这些变量并不一定是坏事。但是,变量没有设置,应用程序无法正常工作。我会很感激任何解释。 我发现官方文档有点难以理解。

【问题讨论】:

    标签: node.js amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    看来问题是我没有将.ebextensions 提交给git。显然,该文件是在初始化您的应用程序时读取的,因此它必须是发送到 elasticbeanstalk 的捆绑包的一部分。

    我想到了使用配置文件来设置来自亚马逊文档http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_custom_container.html 的身份验证密钥。 但是,我没有提交该文件,因为很明显您不应该提交您的身份验证密钥(有关此讨论的更多信息:How do you pass custom environment variable on Amazon Elastic Beanstalk (AWS EBS)?)。

    我最终简化了文件以包含 PARAM1 选项,并在整个 elasticbenastalk 在线界面中传递了密钥和访问密钥 ID。

    【讨论】:

    • 亚马逊的文档很糟糕!
    【解决方案2】:

    您的配置文件示例缺少命名空间。您必须为每个选项设置指定命名空间。

    【讨论】:

    【解决方案3】:

    您可以在.elasticbeanstalk/optionsettings.[your-env-name] 文件中传递环境选项。

    您应该有一个名为[aws:elasticbeanstalk:application:environment] 的部分。它可能填充有PARAM1=...等。只需在此部分下添加您的环境变量。不应提交.elasticbeanstalk 目录中的文件。

    在执行eb update 之后,如果您转到基于 Web 的 EBS 控制台,您可以验证是否已添加选项。应该会出现新选项。我相信通过控制台添加的任何旧选项都不会被删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2015-11-08
      • 2014-11-20
      • 1970-01-01
      • 2018-07-29
      • 2019-11-26
      相关资源
      最近更新 更多