2

アップロードの途中で失敗したカスタム AMI がec2-upload-bundleありますが、残りの項目は AWS コントロール パネル経由でアップロードされました。ただし、これは、バケットのバンドルされた部分の約半分に、AMI を正常に起動するために必要と思われる「za-team」権限が付与されていないことを意味します。「za-team」に関連する「開く/ダウンロード」権限を、バケット内で不足しているファイルに一括で適用するにはどうすればよいですか?

4

1 に答える 1

0

私はRubyが初めてなので、これを理解するのに少し時間がかかりました。ただし、以下はバケット内のすべてのファイルをループし、ファイルに示されている権限を追加します。acl.grantコマンドに関連する SDK ドキュメントには、スクリプトの実行内容に関する情報が少し含まれています。

#!/usr/bin/ruby

# -----------------------------------------------------------------------------
# This script provides a means of updating all of the files in an S3 bucket to
# have the correct permissions. As this script is effectively throwaway it 
# doesn't do much beyond making sure it runs at least once, however, is worth
# keeping around as a reference in the event the problem arises again.
# -----------------------------------------------------------------------------
require 'rubygems'
require 'aws-sdk'

# The following is the Amazon ID for the za-team group which is used for EC2
# operations in S3 buckets
za_team = '6aa5a366c34c1cbe25dc49211496e913e0351eb0e8c37aa3477e40942ec6b97c'

# Note the configuration points
AWS.config({
  :access_key_id => '[Access Key Here]',
  :secret_access_key => '[Secret Access Key Here]',
})
bucket_name = '[Bucket Name Here]'

# Get the bucket information
s3 = AWS::S3.new
bucket = s3.buckets[bucket_name]

# Update the ACL for each item in the bucket
bucket.objects.each do |object| 
  puts object.key
  acl = object.acl
  acl.grant(:read).
      to(:canonical_user_id => za_team)
  object.acl = acl.to_xml
end
于 2012-08-24T13:53:30.567 に答える