2016-01-06 143 views
0

我有一個名爲鬥:在區域db-backup-productionIreland (s3.eu-west-1.amazonaws.com)AWS博託 - 上傳文件到S3原因S3ResponseError:403禁止

我嘗試使用以下策略來上傳文件:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::db-backup-production/*" 
     } 
    ] 
} 

我收到以下錯誤所有的時間

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden 

,當我使用此策略上傳:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": "s3:*", 
      "Resource": "*" 
     } 
    ] 
} 

上傳作品。我在做什麼錯了?

+0

你收到與任何的建議工作? –

+0

實際上是湯姆@的答案幫助 –

回答

0

,如果你只是做一個S3「放」,你的政策應該給你足夠的權利。但是,如果你是上市或通過SDK獲取鬥對象,CLI調用等,還需要在水桶本身的權利。

爲了提供這些權利,使用該策略的「資源」部分作爲一個數組,並添加「ARN:AWS:S3 ::: DB-備份製作」,因爲這陣中的資源。我想到某事像這樣:

"Resource": ["arn:aws:s3:::db-backup-production/*", "arn:aws:s3:::db-backup-production" ] 
+0

你有你爲什麼需要這樣的雙重資源引用任何技術參考/原因是什麼? –

+0

不,實際上是第一個政策,應努力把一個對象。我現在無法測試,但我很確定我遇到類似的情況,我必須添加存儲桶資源。值得嘗試一下,但是沒有以這種方式鏈接到文檔。 Asaf,你只是從boto執行putObject,還是你還啓動了其他的s3動作? – Tom

0

當指定S3存儲權限,則需要考慮桶本身的權限,並分別,權限桶的內容。

一種方法是需要兩個資源的規格爲同一桶:

"Resource": ["arn:aws:s3:::db-backup-production","arn:aws:s3:::db-backup-production/*"] 

第一資源指定桶水平範圍和DB-備份生產/ *將成爲對象的水平範圍。

但是,你考慮在兩個語句單獨的對象和水桶級權限作爲如下:

"Version": "2012-10-17", "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": ["s3:ListBucket"], 
     "Resource": ["arn:aws:s3:::db-backup-production"] 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:PutObject", 
     "s3:GetObject", 
     "s3:DeleteObject" 
     ], 
     "Resource": ["arn:aws:s3:::db-backup-production/*"] 
    } ] } 

這種形式給你更多的細粒度控制的資源,無論是桶和對象級別。

Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket