/

如何將您的 S3 存儲桶設為公開

如何將您的 S3 存儲桶設為公開

我之前寫過一篇關於如何上傳圖片至 S3 的文章

在我準備好 S3 存儲桶,並且成功上傳了圖片並將 URL 存儲在數據庫後,我發現這些圖片無法被公開以只讀的方式訪問。

圖片雖然存在,但任何人都無法查看。

如果我試圖訪問它,只會看到類似下面這樣的錯誤信息:

1
2
3
4
5
6
7
8
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>E5FBYNEYEFNZH</RequestId>
<HostId>
iImqC8XkvmPP4/BJxNGDZrPrDr7us1u3UeZqH8prlv3dk69R9m7uOaaaZDvTLAtne2rLkRWZ4=
</HostId>
</Error>

我覺得可能是權限問題,所以首先我試圖編輯“阻止公共訪問”設置,將原有的阻止設置禁用:

但是這並沒有解決問題,圖片依然無法訪問。

於是,我嘗試在單個文件的權限設置中,將“Everyone (公共訪問)”設置為“只讀”:

這樣做對於單個文件是有效的。

因此,我前往一般存儲桶權限,那裡有一個相似的 ACL 權限面板,我試圖設置相同的設置。

我將“Everyone (公共訪問)”設置為“只讀”,但結果並不如預期。

雖然我明確地設置了公共訪問權限,但是人們仍然無法公開查看文件。

事實上,沒有通過點擊操作可以實現這一點。

我必須設置一個存儲桶策略,可以從存儲桶權限頁面進行設置,然後我添加了以下內容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::YOURBUCKETNAME/*"
}
]
}

請將 YOURBUCKETNAME 修改為您的存儲桶名稱。

通過添加這一段內容,我成功讓它生效。添加後,您可以將“阻止公共訪問”設置如下:

這就是全部了。現在,我的文件(在這種情況下是圖片)可以公開訪問了。

tags: [“S3”, “AWS”, “存儲桶”, “公開訪問”, “阻止訪問”]