【问题标题】:How to set Amazon bucket policy using the Ruby SDK?如何使用 Ruby SDK 设置 Amazon 存储桶策略?
【发布时间】:2016-02-19 07:45:48
【问题描述】:

我正在尝试使用 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 documentation,但不清楚如何执行此操作。如果可能的话,我还希望能够打印出存储桶的当前策略。

【问题讨论】:

    标签: ruby amazon-web-services amazon-s3


    【解决方案1】:

    看看下面的例子。这允许您设置策略和检索策略(如果需要,请记住更改存储桶名称并添加凭据/更改区域)。

    您可能希望细化策略本身以将其限制为某些对象(文件夹和文件都是对象)。请记住,如果您有一个 S3 布局,例如 my-bucket-name/folder/file,并且您希望仅限制到该文件夹​​,那么它将 arn:aws:s3:::my-bucket-name/folder/* 作为 ARN。

    settinggetting 政策的文档。

    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/*\"}]}"
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 2011-09-10
      • 2023-02-26
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多