【问题标题】:cloudformation post deployment scriptcloudformation 部署后脚本
【发布时间】:2019-09-05 20:55:54
【问题描述】:

我有一个名为 db:migrate 的 npm 脚本,我想在每次在 aws 上部署后运行它。该脚本运行一个名为 migrate.js(如果存在)的文件,该文件负责进行数据库迁移。

我正在使用 aws cloudformation 进行部署,但我不确定最好的方法是使用某种形式的部署后脚本来运行该脚本:npm run db:migrate。

我认为可能有某种形式的 cloudformation 部署后挂钩可以使用,但我发现的只是 cloudformation 自定义资源。显然,我可以在每次部署后触发一个 lambda 函数。问题是我不知道如何从 lambda 函数访问 ECS 容器以运行 db:migrate 脚本。

如果有任何见解,我将不胜感激。

【问题讨论】:

    标签: javascript npm aws-lambda amazon-cloudformation


    【解决方案1】:

    您可以将用户数据添加到您的模板(EC2/启动模板/启动配置) https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

    【讨论】:

    • 我可以在 Fargate ECS 集群中使用 UserData 吗?
    • 另外,使用 userdata 会在每个 EC2 实例上运行我的 npm 命令吗?如果我只想运行一次怎么办?
    • 您无法在 Fargate ECS 集群上使用 Userdata,因为 Fargate 无法访问运行容器的服务器。您可以使用 docker 专用命令(CMD、ENTRYPOINT)来执行您的应用程序需要的任何启动脚本。用户数据将在 ASG 配置的每个 EC2 实例上运行。实现脚本幂等性由您决定
    • 问题是,该脚本与容器或 EC2 实例并不真正相关。我不需要为每个 EC2 实例运行它。我只需要运行一次部署后脚本。不幸的是它看起来不像 cloudformation 有类似部署后挂钩的东西,我可以用它来运行一次。
    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2015-07-28
    • 2011-04-27
    • 2021-03-01
    • 2017-04-07
    相关资源
    最近更新 更多