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

时间:2016-08-06 16:35:44

标签: amazon-web-services amazon-s3 chef aws-opsworks

我需要使用AWS Opsworks设置部署过程。我创建了我的堆栈并添加了各自的图层。我已经配置了我的应用程序,基本上是存储在s3存储桶中的war存档

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

我可以分割网址并从中获取存储桶密钥和区域的一种方法,并可以将其与aws sdk一起使用。但是这样做的正确方法是什么。有没有其他我可以使用的图书馆。

提出这个问题,以了解做正确的程序是什么。

2 个答案:

答案 0 :(得分:0)

查看s3_file cookbook,您确实可以指定一个完整的s3网址:

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

答案 1 :(得分:-1)

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

您可以将它作为依赖项添加到您的cookbook中来包含在您的cookbook中(确保您已下载食谱并在当地的cookbook路径中)。