如何将应用程序限制为 AWS Opsworks 中的一种类型的层?

Posted

技术标签:

【中文标题】如何将应用程序限制为 AWS Opsworks 中的一种类型的层?【英文标题】:How to limit an app to one type of layer in AWS Opsworks? 【发布时间】:2014-05-07 01:54:26 【问题描述】:

如何在 AWS Opsworks 中将应用程序限制为每个默认部署到一层?

我已经从 Github 设置了一个 webhook 来自动将我的应用部署到 Opsworks,但是当它应该只部署到一个层时,该应用被部署到了我的所有层。

【问题讨论】:

我想我面临着同样的问题:当我将代码推送到一个 Github 存储库时,我的所有层都被重新部署。这是预期的行为吗?你找到解决办法了吗? 不 - 抱歉 - 没有可用的修复程序。我现在将所有部署都切换到 CoreOs 和 Docker,而不是 Opsworks .. 【参考方案1】:

如果可能,请提供显示您的图层和实例设置方式的屏幕截图。我认为这可能是导致层安装应用程序的错误配置。

默认情况下,Opsworks 不会在所有层上安装应用程序,除非在层集中指定它来运行该实例的相关配方。

【讨论】:

谢谢。我试图澄清。问题是如何将应用程序限制为仅部署到 Opsworks 中的一个(或多个)层。现在它似乎试图将应用程序部署到我的堆栈中的所有层。 @ChristianLandgren 你能展示一下你是如何布置层食谱的截图吗?由于您不小心在结构中使用了部署所有类型的情况,因此可以更轻松地确定是否发生这种情况。如果食谱是开源的,链接它们也会很有帮助 我的食谱没有什么特别之处,但是我已经定制了食谱并且它们是开源的,所以如果您认为这可能是问题的原因,请仔细阅读它们。 github.com/irony/opsworks-cookbooks。这是我的图层配方:cl.ly/image/2m2U0S1G3Z2x【参考方案2】:

我为同样的问题挣扎了一会儿,我想我终于得到了答案:

    创建一个新的 SNS 主题。

    创建一个 AWS Lambda 函数,使用 javascript AWS-SDK 为您启动部署。所以你可以得到这个想法:

var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1'; // Opsworks only uses this one for Stacks in any region
var opsworks = new AWS.OpsWorks();
opsworks.describeStacks(, function(err, data) 
  console.log(data);
  context.succeed(message);
);

    将所需的策略分配给此 lambda 函数,以允许您从 AWS API 调用任何内容。

    设置 Github 将通知发送到 SNS 主题,而不是直接调用 Opsworks。

【讨论】:

以上是关于如何将应用程序限制为 AWS Opsworks 中的一种类型的层?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将 Play 2.4 模块的执行限制为单个主机?

如何在 MacOS 中安装 chef 12 以部署到 AWS Opsworks?

AWS+OpsWorks:如何使用 OpsWorks 启用 EC2 实例的详细监控

通过 aws opsworks 进行 cron 作业

如何对从 AWS OpsWorks 部署的应用程序拥有组可写文件权限?

如何使用内置 Java 应用层在 AWS OpsWorks 上部署 Jenkins?