Skip to content

[AWS] 將 AWS S3 bucket 中的物件連結改為公開存取

Published: at 11:06 AM (2 min read)

Table of Contents

Open Table of Contents

描述

aws-s3-public-access

預設在 AWS S3 建立 bucket 時,上傳的檔案連結是無法公開存取的,因此你會發現當你複製 Object URL 時,會發現連結並不運作,只能透過 Open 產生一個稱為 Presigned URL 的連結,但這個連結會有時效性,當時間到期後就無法存取了,那要怎麼讓這個檔案可以公開存取呢?

將整個 bucket 或特定檔案設定為公開存取

  1. 建立 bucket 時,取消勾選 Block all public access prevent-public-access
  2. 確定 bucket 的 Permissions 設定有正確的 Block public access 設定 public-access
  3. 新增 bucket policy
    ⚠️ 請將以下的 JSON 貼上,BucketName 需要替換為你的 bucket 名稱
    如果你只想開放特定檔案可以改成 arn:aws:s3:::{BucketName}/{ObjectName}
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "PublicRead",
          "Principal": "*",
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": ["arn:aws:s3:::{BucketName}/*"]
        }
      ]
    }
    
  4. 確定 bucket 的 Permissions 設定有正確的 Bucket policy 設定 bucket-policy
  5. 完成設定,現在你在 bucket 中的 Object URL 可以公開存取給所有使用者 🎉

參考資料


Previous Post
[LeetCode] 23. Merge k Sorted Lists
Next Post
[LeetCode] 22. Generate Parentheses