amazon-web-services - 是否可以在 AWS::OpsWorks::Instance 资源中使用 AWS::CloudFormation::Init 和元数据?

标签 amazon-web-services aws-cloudformation aws-opsworks

我想通过 opsworks 创建一个堆栈,并且想在我的堆栈实例中配置用户数据。我不需要自动扩展组,因此是否可以像我们在 AWS::EC2::Instance 中那样在 AWS::OpsWorks::Instance 资源中使用元数据和 AWS::CloudFormation::Init 以及启动配置?

 "Resources": {
      "MyInstance": {
        "Type": "AWS::EC2::Instance",
        "Metadata" : {
          "AWS::CloudFormation::Init" : {
            "config" : {
              "packages" : {},
              "groups" : {},
              "users" : {},
              "sources" : {},
              "files" : {},
              "commands" : {},
              "services" : {}
            }
          }
        },
        "Properties": {
          [...]
        }
      }
    }

最佳答案

TLDR:使用 Chef 配方和说明书来配置 AWS::OpsWorks::Instance,而不是 cfn-init

在内部,OpsWorks 使用 cloud-init 在实例上安装 AWS OpsWorks Stacks 代理(请参阅 Using Custom AMIs: Startup Behavior )。大概出于这个原因,OpsWorks 实例不支持设置自定义用户数据脚本,因此您无法像在常规 AWS: 上那样在启动时运行 cfn-init: EC2::Instance 资源。

要解决此问题,您可以 use a custom AMI并配置 AMI 以在启动时调用 cfn-init

但是,强烈建议不要使用这样的解决方法 - 您实际上不需要使用 cfn-init (或其相应的 AWS::CloudFormation::Init首先,OpsWorks 堆栈中的元数据)。 cfn-init 与 OpsWorks 提供的更强大的基于 Chef 的配置管理完全正交,这可能是您首先使用 OpsWorks 的原因。充分利用它!使用 Chef 食谱和说明书来配置您的实例。

如果您确实需要使用 cfn-init 和自定义用户数据(例如,为了支持旧代码),那么我建议您坚持使用标准 EC2 实例,直到您可以移植您的应用程序逻辑转移到定制厨师食谱。

关于amazon-web-services - 是否可以在 AWS::OpsWorks::Instance 资源中使用 AWS::CloudFormation::Init 和元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41057173/

相关文章:

amazon-web-services - 使用 Terraform 将 AWS Lambda 日志写入 CloudWatch 日志组

ruby-on-rails - 如何使用 Chef 预编译 Assets ?

amazon-web-services - Chef 12 + AWS Opsworks + 从 s3 部署应用程序

amazon-web-services - 使用 CDK 创建自定义 AWS IAM 策略

ruby - 使用切片!在变量上修改填充变量的节点属性

python - Django S3 Direct 上的 CORS 错误

node.js - 在 Elastic Beanstalk AWS 中为 NodeJs 应用程序提供静态文件

amazon-web-services - 无法读取AWS中的查询参数

amazon-web-services - 如何监控 AWS CloudFormation 上的自动扩展?

amazon-web-services - Cloudformation 错误 - 标识符为 'AWS::ApiGateway::Model' 的类型为 'Empty' 的资源已存在