簡體   English   中英

無法從 AWS S3 下載:訪問被拒絕

[英]Cannot download from AWS S3: Access Denied

所以我在 EC2 上托管了一個 Web 應用程序,它允許用戶從 S3 上傳/下載照片。 EC2 和 S3 在同一區域。

憑據:根據官方文檔,憑據應由我創建並關聯到 EC2 的 IAM 角色(具有s3fullAccess權限)自動提供。

問題:用戶(來自瀏覽器)無法下載照片,但可以成功上傳。 下載鏈接由aws-sdkgetSignedUrl()方法生成。

錯誤信息

InvalidAccessKeyId:我們的記錄中不存在您提供的 AWS 訪問密鑰 ID。

首先, access key似乎是正確的,因為用戶可以成功上傳內容。

我的猜測是,由於用戶點擊瀏覽器中的鏈接下載,EC2和S3之間沒有交互,因此下載時不使用IAM角色。 但不是用 EC2 憑證生成的signedDownloadUrl嗎? 並且在查詢字符串中完全提供了訪問密鑰對。 所以我的猜測可能是錯誤的..

任何建議/想法表示贊賞。

編輯

我沒有創建 IAM 用戶,只有一個 IAM 角色。 不知道這是否重要。

ASIA...來自 IAM 角色的一組臨時憑證的臨時訪問密鑰 ID。 (角色憑證始終是臨時的。) AKIA...是 IAM 用戶。

這里的問題是伴隨憑證的x-amz-security-token沒有在生成 S3 簽名 URL 的簽名過程中使用,所以它沒有出現在簽名 URL 中......但它需要在那里這工作。

如果您使用臨時安全憑證 [...] 簽署您的請求,您必須通過添加x-amz-security-token標頭在您的請求中包含相應的安全令牌。

http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#UsingTemporarySecurityCredentials

如果您不包含x-amz-security-token ,系統會假定它應該在 IAM ussr 數據庫中查找 access-key-id,並且在那里找不到它,這會導致InvalidAccessKeyId: The AWS Access您提供的密鑰 ID 在我們的記錄錯誤中不存在

請注意,您不能簡單地將其添加到已生成的 URL 中。 它需要被納入簽署過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM