我正在尝试使用Ruby SDK设置存储桶策略,如下所示:
s3 = Aws::S3::Resource.new(region:'us-east-1')
obj = s3.bucket('my-bucket-name')
policy = AWS::S3::Policy.new
policy.allow(
:actions => [:get_object],
:resources => [obj],
:principals => :any)
obj.policy = policy
obj.save!
但这似乎并没有节省。我浏览了ruby文档,但不清楚如何执行此操作。如果可能的话,我也希望能够打印出当前的存储桶策略。
看下面的例子。这使您可以设置策略并检索策略(请记住要更改存储桶名称并在需要时添加凭据/更改区域)。
您可能需要细化策略本身以将其限制为某些对象(文件夹和文件都是对象)。请记住,如果您具有S3布局(例如my-bucket-name / folder / file),并且希望仅限制到该文件夹,则它将arn:aws:s3:::my-bucket-name/folder/*
作为ARN。
require 'aws-sdk'
require 'json'
s3 = Aws::S3::Client.new(region: 'us-east-1')
policy = {
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::my-bucket-name/*"]
}
]
}
s3.put_bucket_policy({
bucket: "my-bucket-name",
policy: policy.to_json
})
=> #<struct Aws::EmptyStructure>
resp = s3.get_bucket_policy({
bucket: "my-bucket-name",
})
resp.policy.read
=> "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"AddPerm\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:GetObject\",\"Resource\":\"arn:aws:s3:::my-bucket-name/*\"}]}"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句