

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

# 使用預先簽章的 URL 來共用物件
<a name="ShareObjectPreSignedURL"></a>

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

如需預先簽章的 URL 一般資訊，請參閱 [使用預先簽章的 URL 來下載和上傳物件](using-presigned-url.md)。

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

## 使用 S3 主控台
<a name="generating-presigned-url"></a>

 您可以使用 Amazon S3 主控台，依照下列步驟產生預先簽章的 URL，以共用高達 5 TB 的物件。當使用主控台時，預先簽章 URL 的最長過期時間為自建立時間起算 12 小時。

**使用 Amazon S3 主控台產生預先簽章的 URL**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 在**一般用途儲存貯體**清單中，選擇一般用途儲存貯體名稱，該儲存貯體包含您要為其建立預先簽章 URL 的物件。

1. 在 **Objects** (物件) 清單中，選取要為其建立預先簽章 URL 的物件。

1. 在**物件動作**選單中，選擇**使用預先簽章的 URL 來共用**。

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

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

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

## 使用 AWS CLI
<a name="ShareObjectPresignedCLI"></a>

下列範例 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
```

`--expires-in` 參數會指定過期時間，以秒為單位。



**注意**  
對於 2019 年 3 月 20 日之後 AWS 區域 啟動的所有 ，您需要`AWS 區域`使用 請求指定 `endpoint-url`和 。如需所有 Amazon S3 區域和端點的清單，請參閱《AWS 一般參考》**中的[區域與端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)。

```
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 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html)。

## 使用 AWS SDKs
<a name="ShareObjectPreSignedURLSDK"></a>

您可以使用 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()
   ```

1. 若要產生用於共用檔案的 `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
   ```

1. 您可以搭配 curl 使用產生的預先簽章 URL 來下載檔案：

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

如需使用 AWS SDKs 產生預先簽章 URL 以共用物件的更多範例，請參閱[使用 SDK 為 Amazon S3 AWS 建立預先簽章 URL](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_PresignedUrl_section.html)。

**注意**  
對於 2019 年 3 月 20 日之後 AWS 區域 啟動的所有 ，您需要`AWS 區域`使用 請求指定 `endpoint-url`和 。如需所有 Amazon S3 區域和端點的清單，請參閱AWS 一般參考**中的[區域與端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)。

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

------

## 使用 AWS Toolkit for Visual Studio (Windows)
<a name="ShareObjectPreSignedURLVSExplorer"></a>

**注意**  
目前， AWS Toolkit for Visual Studio 不支援 Visual Studio for Mac。

1.  AWS Toolkit for Visual Studio 使用*AWS Toolkit for Visual Studio 《 使用者指南*》中的下列指示[安裝和設定 Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html)。

1.  AWS 使用 *AWS Toolkit for Visual Studio 使用者指南*中的下列步驟，[連線至 以連線至 AWS](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/connect.html) 。

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

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

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

1. **物件金鑰**，應該根據您選取的物件預先填入。

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

1. 選擇**產生**按鈕。

1. 若要複製剪貼簿連結，請選擇**複製**。

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

## 使用 AWS Toolkit for Visual Studio Code
<a name="ShareObjectPreSignedURLVSCode"></a>

如果您使用的是 Visual Studio Code，也可以使用 AWS Toolkit for Visual Studio Code產生預先簽章的物件 URL，而無須撰寫任何程式碼。如需一般資訊，請參閱《AWS Toolkit for Visual Studio Code 使用者指南》**中的 [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html)。

如需如何安裝 的指示 AWS Toolkit for Visual Studio Code，請參閱*AWS Toolkit for Visual Studio Code 《 使用者指南*》中的[安裝 AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html) 。

1.  AWS 使用 *AWS Toolkit for Visual Studio Code 使用者指南*中的下列步驟，[連線至 以連線至 AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/connect.html) 。

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

1. 在 **EXPLORER** 下，選取 **S3**。

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

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

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