Chef 12 + AWS Opsworks + 从 s3 部署应用程序

Posted

技术标签:

【中文标题】Chef 12 + AWS Opsworks + 从 s3 部署应用程序【英文标题】:Chef 12 + AWS Opsworks + Deploy App from s3 【发布时间】:2016-12-12 21:15:33 【问题描述】:

我需要使用 AWS Opsworks 设置部署流程。我已经创建了我的堆栈并添加了相应的层。我已经配置了我的应用程序,它基本上是一个存储在 s3 存储桶中的战争档案

当我触发应用程序的部署事件时,我的配方正在执行,但问题是我得到了一个 s3 url。没有官方的 aws sdk 支持使用 s3 url 复制 s3 文件。

一种方法是我可以拆分 url 并从中获取存储桶密钥和区域,并可以将其与 aws sdk 一起使用。但是正确的方法是什么。有没有其他我可以使用的库。

问这个问题是为了了解什么是正确的做法。

【问题讨论】:

【参考方案1】:

看s3_file cookbook,确实可以指定完整的s3 url:

s3_file "/tmp/somefile" do
    remote_path "/my/s3/key"
    bucket "my-s3-bucket"
    aws_access_key_id "mykeyid"
    aws_secret_access_key "mykey"
    s3_url "https://s3.amazonaws.com/bucket"
    owner "me"
    group "mygroup"
    mode "0644"
    action :create
    decryption_key "my SHA256 digest key"
    decrypted_file_checksum "SHA256 hex digest of decrypted file"
end

【讨论】:

【参考方案2】:

AWS 维护着一本用于与其各种服务集成的说明书。 s3_file 资源应该能够完成您所需要的。这是他们自述文件中的一个示例:

aws_s3_file '/tmp/foo' do
  bucket 'i_haz_an_s3_buckit'
  remote_path 'path/in/s3/bukket/to/foo'
  aws_access_key aws['aws_access_key_id']
  aws_secret_access_key aws['aws_secret_access_key']
  region 'us-west-1'
end

您可以通过将其作为依赖项添加到 metadata.rb 中来将其包含在您的说明书中(确保您已下载说明书并在本地说明书路径中)。

【讨论】:

你能用 s3 url 吗??

以上是关于Chef 12 + AWS Opsworks + 从 s3 部署应用程序的主要内容,如果未能解决你的问题,请参考以下文章

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

无法在 AWS Opsworks 上使用 Chef 12 查找 Chef 社区食谱

AWS opsworks 上的 chef 12 脚本无法安装 jenkins

使用 Chef 12 从 AWS OpsWorks 中的堆栈设置获取自定义 JSON

AWS Opsworks 中的 Chef 环境

Chef 12 + AWS Opsworks + 从 s3 部署应用程序