AWS: S3
我在想要不要給 AWS 文章一個獨立的專案,但想想還是先不要:畢竟 Web 開發也不會 AWS 服務全都用吧?
Amazon S3 就是放檔案的服務。所以要當圖床、上傳文件、還是放啥、甚至架靜態網站都隨意;如果只是從主控台放檔案也還算簡單,開個 Bucket 然後上傳就是。下次試試看用 API 接上去。
但檔案權限授權機制就很麻煩了。在 AWS 裡面有幾種管理機制:
- Block public access (bucket settings):封鎖存取:最優先。可以蓋過其他機制。
- Bucket policy:許可政策:以 JSON 設定整個 Bucket 的權限。
- Access control list (ACL):存取控制清單,需要去 Object Ownership 設定開啟才能用。特點是能特定特定檔案。
- Cross-origin resource sharing (CORS):設定跨來源資源分享。前後端都知道的
Access-Control-Allow-Origin
。
這邊就說最簡單的:讓網路所有人都能訪問檔案。
- 關掉所有 Block public access 設定。
- 編輯並複製以下檔案到 Bucket policy 的 Statement:
{
"Sid": "AccessAllFiles",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": [
"{ARN編號}",
"{ARN編號}/*"
]
}
{ARN編號}
在 Bucket 清單應該能看到。Amazon Resource Name 啥的。
就這樣。
參考資料
- amazon web services - AWS S3 Bucket Permissions - Access Denied - Stack Overflow
- AWS新手的30天之旅 - 7. S3 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
- Controlling ownership of objects and disabling ACLs for your bucket - Amazon Simple Storage Service
- Blocking public access to your Amazon S3 storage - Amazon Simple Storage Service
- Policies and permissions in Amazon S3 - Amazon Simple Storage Service
- Access control list (ACL) overview - Amazon Simple Storage Service
- Configuring cross-origin resource sharing (CORS) - Amazon Simple Storage Service