2015-04-26 107 views
0

使用s3cmd在使用我的root權限(訪問密鑰和密鑰)進行配置後,每當我嘗試使用syncget從存儲桶下載某些內容時,我都會收到這個奇怪的我的權限錯誤root帳戶:根用戶被拒絕從s3存儲桶下載

WARNING: Remote file S3Error: 403 (Forbidden): 

所有者是另一個用戶我一直在使用IAM控制檯做,但我是正確的期望,root用戶應始終得到全面和不受限制地訪問? 還使用aws -cli我得到一個未知的錯誤

A client error (Unknown) occurred when calling the GetObject operation: Unknown 

而且我想我不得不添加一個水桶政策,使root訪問權限(奇怪,因爲它的聲音),作爲第一步,我添加annonymous與訪問此政策

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::myBucket/*" 
      ] 
     } 
    ] 
} 

但仍然錯誤是與上述相同。存儲桶的所有者也是root用戶(試圖訪問的用戶與所有者相同)。我在這裏弄錯了什麼?如何恢復root用戶訪問由我自己的IAM用戶創建的自己的存儲桶?

+0

您是否檢查過您的存儲桶ACL?另外,您是否嘗試過使用簡單的HTTP/S GET而不使用'aws-cli'或's3cmd'?上述存儲桶策略的匿名訪問應允許AWS身份驗證之外的匿名請求。我知道這並不能回答這個問題,但它可以幫助確定問題所在。 – johnml

+0

謝謝。這可能是我以前(使用Web控制檯)製作一個存儲桶的場景,但在此之後,我使用's3cmd'上傳可能具有不同的憑據。現在嘗試使用根證書進行下載。 's3cmd setacl --acl-grant = all:canonicalID --recursive s3:// bucket'不起作用。另外,我不知道「簡單的HTTP/S GET」是什麼意思。 – Arman

+0

「不起作用」意味着在使用'setacl'後沒有問題,它說「ACL已更新」,但錯誤仍然存​​在。 – Arman

回答

1

重新檢查存儲狀態以及S3是否處於生命週期狀態總是一個好主意,因此在這種情況下它可能已轉移到Glacier。在這裏,我嘗試使用s3cmd命令訪問Glacier對象,並且我收到了無用的和不相關的權限錯誤。將此作爲對s3cmd未來版本的增強功能添加以獲得更好的警告/錯誤消息將是一個不錯的主意。

1

對於任何S3的讀權限的工作,你需要的不只是讓這些對象也讓ListBucket在桶上,ListAllMyBucketsGetBucketLocation,我的綜合版本:

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "arn:aws:s3:::*" 
    }, 
    { 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": [ 
      "s3:Get*", 
      "s3:List*" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::myBucket/*", 
      "arn:aws:s3:::myBucket" 
     ] 
    } 
] 
} 

查看更多例子在AWS IAM Documentation

相關問題