[英]Amazon S3 getObject() receives access denied with NodeJS
我正在嘗試使用 nodeJS 獲取存儲在 Amazon S3 中的文件,但我的訪問被 aws 拒絕。
AccessDenied:在 Request.callListeners (/home/marc/ Disco/Projects/AtlasFitness/server/node_modules/aws-sdk/lib/sequential_executor.js:106:20) 在 Request.emit (/home/marc/Disco/Projects/AtlasFitness/server/node_modules/aws-sdk/lib/ sequence_executor.js:78:10) 在 Request.emit (/home/marc/Disco/Projects/AtlasFitness/server/node_modules/aws-sdk/lib/request.js:688:14) 在 Request.transition (/home/ marc/Disco/Projects/AtlasFitness/server/node_modules/aws-sdk/lib/request.js:22:10) 在 AcceptorStateMachine.runTo (/home/marc/Disco/Projects/AtlasFitness/server/node_modules/aws-sdk/ lib/state_machine.js:14:12) 在 /home/marc/Disco/Projects/AtlasFitness/server/node_modules/aws-sdk/lib/state_machine.js:26:10 在請求。 (/home/marc/Disco/Projects/AtlasFitness/server/node_modules/aws-sdk/lib/request.js:38:9) 在請求。 (/home/marc/Disco/Projects/AtlasFitness/server/node_modules/aws-sdk/lib/request.js:690:12) 在 Request.callListeners (/home/marc/Disco/Projects/AtlasFitness/server/node_modules/ aws-sdk/lib/sequential_executor.js:116:18)
獲取對象展開:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::atlasfitness-progress-s3/*"
}
]
}
這是我的 CORS 政策:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"GET",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
下面是 NodeJS 中的代碼:
import AWS from 'aws-sdk';
const s3 = new AWS.S3({
region: process.env.AWS_BUCKET_REGION,
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
})
export const getFileS3 = (fileKey) => {
const dowloadParams = {
Key: fileKey,
Bucket: 'atlasfitness-progress-s3'
}
return s3.getObject(dowloadParams).createReadStream()
}
如果有人知道如何修復它,我將非常感謝您的幫助,我是 AWS 的初學者。
您的 ACL 配置未受影響,您的政策是正確的,您沒有任何限制性存儲桶政策,您的代碼在我看來也非常好。
仔細檢查fileKey
包含對象的完整密鑰,例如folder1/folder2/folder3/myFile.extension
。
您指定的鍵可能不存在文件 - 確保fileKey
的值與對象的鍵完全匹配。
究其原因,你得到一個403 Access Denied
的響應,而不是一個404 Not Found
響應你不具有權限的s3:ListBucket
-讀的原因AWS返回403
,而不是404
在我的答案安全原因在這里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.