10

aws-sdk gemを使用してすべてのユーザーに READ 権限を付与するコードを書いています。宝石のドキュメントで、次のことがわかりました。

bucket.objects.each do |object|
  puts object.key
  acl = object.acl
  acl.grant(:read).to("TODO: how can I specify 'ALL'???")
  object.acl = acl.to_xml
end

それはすべて理にかなっていますが、すべてのユーザーに読み取り許可を付与する方法がよくわかりません。

4

1 に答える 1

28

あなたが持っている例は機能しますが、複雑な ACL (アクセス制御リスト) に適しています。Amazon S3 には、オブジェクトに使用できる既定の ACL が多数あります。次のスニペットは、バケット内のすべてのオブジェクトの ACL を更新して、誰でもそれらを読み取れるようにします。

bucket.objects.each{|obj| obj.acl = :public_read }

または、オブジェクトをアップロード (またはコピー) するときに、オブジェクトの ACL を設定できます。

# upload a file and set the acl so the world can download it
obj = bucket.objects['object-key'].write(file, :acl => :public_read)

puts obj.public_url
#=> 'https://..."
于 2012-10-19T03:57:48.613 に答える