2017-03-06 118 views
0

我正在嘗試向我的存儲區發佈帖子,而且我對於formdata的政策應該如何與我的存儲區政策相匹配有點困惑。s3存儲桶政策發佈

@time = Time.now.utc 
@time_policy = @time.strftime('%Y%m%dT000000Z') 
@date_stamp = @time.strftime('%Y%m%d') 

ret = {"expiration" => 1.day.from_now.utc.xmlschema, 
     "conditions" => [ 
      {"bucket" => Rails.application.secrets.aws_bucket}, 
      {"x-amz-credential": "#{Rails.application.secrets.aws_access_key_id}/#{@date_stamp}/us-west-2/s3/aws4_request"}, 
      {"x-amz-algorithm": "AWS4-HMAC-SHA256"}, 
      {"x-amz-date": @time_policy }, 
     ] 
     } 

    @policy = Base64.encode64(ret.to_json).gsub(/\n|\r/, '') 

桶政策:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Allow Get", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::example-development/*" 
     }, 
     { 
      "Sid": "AddPerm", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "arn:aws:iam::123456789:user/example" 
      }, 
      "Action": "s3:*", 
      "Resource": ["arn:aws:s3:::example-development/*","arn:aws:s3:::example-development"] 
     } 
    ] 
} 

做這些比賽?我沒有偶然發現任何顯示兩者並行比較的文檔。

回答

1

條件獨立於政策。

條件強制執行上載的特定屬性。例如,{ "{acl": "public-read" }強制執行上載必須將ACL設置爲public-read的規則。如果上傳未設置該值,則上傳將被拒絕。

存儲桶策略在有人試圖訪問Amazon S3時執行。因此,"s3:x-amz-acl": "public-read"表示只要該值爲真,人們就可以訪問存儲桶。這是一個非常奇怪的事情放在存儲桶策略中,因爲該屬性只與PutObject操作有關。從S3讀取對象時,它不適用。

有關使用PutObject的示例,請參閱Specifying Conditions in a Policy

+0

我同意,我真的只是想讓上傳工作。當時,我不確定一個非特定的桶是否有問題。 –