使用預先簽章的 URL 來共用物件 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用預先簽章的 URL 來共用物件

根據預設,所有 Amazon S3 物件皆為私有,只有物件擁有者才具有存取這些物件的許可。不過,物件擁有者可以透過建立預先簽章的 URL 與其他人共用物件。預先簽章的 URL 會使用安全認證授與下載物件的時間限制許可。URL 可以在瀏覽器中輸入,也可以由程式用來下載物件。預先簽章的 URL 所使用的登入資料是產生 URL AWS 的使用者登入資料。

如需預先簽章的 URL 一般資訊,請參閱 使用預先簽章的 URL 來下載和上傳物件

您可以使用 Amazon S3 主控台、 AWS Explorer for Visual Studio (Windows) 或 建立用於共用物件的預先簽章 URL,而無需撰寫任何程式碼 AWS Toolkit for Visual Studio Code。您也可以使用 AWS Command Line Interface (AWS CLI) 或 AWS SDKs,以程式設計方式產生預先簽章的 URL。

您可以執行以下步驟,使用 Amazon S3 主控台產生預先簽章 URL 以共用物件。當使用主控台時,預先簽章 URL 的最長過期時間為自建立時間起算 12 小時。

使用 Amazon S3 主控台產生預先簽章的 URL
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/s3/ 開啟 Amazon S3 主控台。

  2. 在左側導覽窗格中,選擇一般用途儲存貯體

  3. 一般用途儲存貯體清單中,選擇包含您要預先簽章 URL 之物件的一般用途儲存貯體名稱。

  4. Objects (物件) 清單中,選取要為其建立預先簽章 URL 的物件。

  5. 物件動作選單中,選擇使用預先簽章的 URL 來共用

  6. 指定預先簽章 URL 的有效期限。

  7. 選擇 Create presigned URL (建立預先簽章的 URL)。

  8. 出現確認提示時,URL 會自動複製到剪貼簿。如果您需要再次複製預先簽章的 URL,您將會看到一個複製按鈕。

下列範例 AWS CLI 命令會產生預先簽章的 URL,用於從 Amazon S3 儲存貯體共用物件。當您使用 時 AWS CLI,預先簽章 URL 的最長過期時間為建立後 7 天。若要使用此範例,請以您自己的資訊取代 user input placeholders

aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800

注意

對於 2019 年 3 月 20 日之後 AWS 區域 啟動的所有 ,您需要AWS 區域使用 請求指定 endpoint-url和 。如需所有 Amazon S3 區域和端點的清單,請參閱《AWS 一般參考》中的區域與端點

aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800 --region af-south-1 --endpoint-url https://s3.af-south-1.amazonaws.com

如需詳細資訊,請參閱 AWS CLI 命令參考中的 presign

您可以使用 AWS SDKs,以程式設計方式產生預先簽章的 URL。

Python

下列 Python 指令碼會產生用於共用物件的GET預先簽章 URL。

  1. 複製指令碼的內容並將其儲存為「get-only-url.py」檔案。若要使用下列範例,請將使用者輸入預留位置取代為您自己的資訊 (例如您的檔案名稱)。

    import argparse import boto3 from botocore.exceptions import ClientError def generate_presigned_url(s3_client, client_method, method_parameters, expires_in): """ Generate a presigned Amazon S3 URL that can be used to perform an action. :param s3_client: A Boto3 Amazon S3 client. :param client_method: The name of the client method that the URL performs. :param method_parameters: The parameters of the specified client method. :param expires_in: The number of seconds the presigned URL is valid for. :return: The presigned URL. """ try: url = s3_client.generate_presigned_url( ClientMethod=client_method, Params=method_parameters, ExpiresIn=expires_in ) except ClientError: print(f"Couldn't get a presigned URL for client method '{client_method}'.") raise return url def main(): parser = argparse.ArgumentParser() parser.add_argument("bucket", help="The name of the bucket.") parser.add_argument( "key", help="The key (path and filename) in the S3 bucket.", ) args = parser.parse_args() # By default, this will use credentials from ~/.aws/credentials s3_client = boto3.client("s3") # The presigned URL is specified to expire in 1000 seconds url = generate_presigned_url( s3_client, "get_object", {"Bucket": args.bucket, "Key": args.key}, 1000 ) print(f"Generated GET presigned URL: {url}") if __name__ == "__main__": main()
  2. 若要產生用於共用檔案的GET預先簽章 URL,請使用您的儲存貯體名稱和所需的物件路徑執行下列指令碼。

    下列命令使用範例值。將使用者輸入預留位置取代為您自己的資訊。

    python get-only-url.py amzn-s3-demo-bucket <object-path>

    指令碼將輸出GET預先簽章的 URL:

    Generated GET presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWS AccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
  3. 您可以使用產生的預先簽章 URL 搭配 curl 下載檔案:

    curl -X GET "generated-presigned-url" -o "path/to/save/file"

如需使用 AWS SDKs 產生預先簽章 URL 以共用物件的更多範例,請參閱使用 SDK 為 Amazon S3 AWS 建立預先簽章 URL

注意

對於 2019 年 3 月 20 日之後 AWS 區域 啟動的所有 ,您需要AWS 區域使用 請求指定 endpoint-url和 。如需所有 Amazon S3 區域和端點的清單,請參閱AWS 一般參考中的區域與端點

注意

使用 AWS SDKs時,標記屬性必須是標頭而非查詢參數。所有其他屬性都可作為預先簽署 URL 的參數傳遞。

注意

目前, AWS Toolkit for Visual Studio 不支援 Visual Studio for Mac。

  1. AWS Toolkit for Visual Studio 使用 AWS Toolkit for Visual Studio 使用者指南中的下列指示安裝和設定 Toolkit for Visual Studio

  2. AWS 使用 AWS Toolkit for Visual Studio 使用者指南中的下列步驟,連線至 以連線至 AWS

  3. 在標示為 AWS Explorer 的左側面板中,按兩下包含您物件的儲存貯體。

  4. 以滑鼠右鍵按一下您想要為其產生預先簽章 URL 的物件,然後選取建立預先簽章的 URL...

  5. 在快顯視窗中,設定您預先簽章 URL 的到期日期和時間。

  6. 物件金鑰,應該根據您選取的物件預先填入。

  7. 選擇 GET 以指定將使用此預先簽章的 URL 來下載物件。

  8. 選擇產生按鈕。

  9. 若要複製剪貼簿連結,請選擇複製

  10. 若要使用產生的預先簽章 URL,請將 URL 貼入任何瀏覽器中。

如果您使用的是 Visual Studio Code,也可以使用 AWS Toolkit for Visual Studio Code產生預先簽章的物件 URL,而無須撰寫任何程式碼。如需一般資訊,請參閱《AWS Toolkit for Visual Studio Code 使用者指南》中的 AWS Toolkit for Visual Studio Code

如需如何安裝 的指示 AWS Toolkit for Visual Studio Code,請參閱AWS Toolkit for Visual Studio Code 《 使用者指南》中的安裝 AWS Toolkit for Visual Studio Code

  1. AWS 使用 AWS Toolkit for Visual Studio Code 使用者指南中的下列步驟,連線至 以連線至 AWS Toolkit for Visual Studio Code

  2. 在 Visual Studio Code 的左側面板上選取 AWS 標誌。

  3. EXPLORER 下,選取 S3

  4. 選擇儲存貯體和檔案,然後開啟 (按一下滑鼠右鍵) 內容功能表。

  5. 選擇產生預先簽章的 URL,然後設定到期時間 (以分鐘為單位)。

  6. 按 Enter 鍵,預先簽章的 URL 就會複製到您的剪貼簿。