0
從昨天開始,當我試圖將文件上傳到我的S3存儲桶之一時,我得到了一個Access Denied錯誤。S3拒絕訪問
Javascript代碼:
var pass = new stream.PassThrough();
var contentType = (input.fileName.endsWith('.html') ? 'text/html' : 'text/javascript');
var params = {
Bucket: 'BUCKET_NAME',
Key: input.fileName,
Body: pass,
ACL: 'public-read',
ContentType: contentType
};
S3.upload(params, function(err, data) {
if (err) {
console.error('Error while uploading file: ' + err + '. Uploading file ' + params.Key + ' to Bucket ' + params.Bucket + '.');
throw err
}
});
return pass;
我最初的想法是,這是因爲IAM策略,雖然我並沒有改變任何東西,它以前的工作。
IAM策略:
{
"Action": [
"s3:PutObject",
"s3:PubObjectACL"
],
"Resource": [
"arn:aws:s3:::BUCKET_NAME/*"
],
"Effect": "Allow"
}
我在這個一直盯着在過去的幾個小時,但我實在看不出有什麼問題。根據this鏈接,它應該是配置策略的正確方法。而且昨天這工作得很好。
編輯> 我剛剛嘗試過「行動」:「*」,我得到了同樣的結果。
顯然這是罪魁禍首:ACL:'公衆閱讀'。不知道爲什麼,因爲我授予s3:PutObjectACL。據我所知,這應該允許你這樣做。 – Bjorn121