

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

# 上傳媒體檔案以使用 WhatsApp 傳送
<a name="managing-media-files-s3"></a>

當您傳送或接收媒體檔案時，它必須存放在 Amazon S3 儲存貯體中，並從 WhatsApp 上傳或擷取。Amazon S3 儲存貯體必須與 WhatsApp 商業帳戶 AWS 區域 (WABA) 位於相同的 AWS 帳戶 和 。這些指示說明如何建立 Amazon S3 儲存貯體、上傳檔案，以及建置檔案的 URL。如需 Amazon S3 命令的詳細資訊，請參閱[搭配 AWS CLI 使用高階 (s3) 命令](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html)。如需設定 的詳細資訊 AWS CLI，請參閱*[AWS Command Line Interface 《 使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/)*》中的[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)，以及《*[Amazon S3 使用者指南](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)*》中的[建立儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)體和[上傳物件](https://docs.aws.amazon.com//AmazonS3/latest/userguide/upload-objects.html)。

**注意**  
WhatsApp 在刪除媒體檔案之前存放媒體檔案 30 天，請參閱 *WhatsApp Business Platform Cloud API 參考*中的[上傳媒體](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#upload-media)。

您也可以建立媒體檔案[的預先簽章 URL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)。使用預先簽章的 URL，您可以授予物件的時間限制存取，並上傳物件，而不需要其他方擁有 AWS 安全登入資料或許可。

1. 若要建立 Amazon S3 儲存貯體，請使用 [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html) AWS CLI 命令。在命令列中輸入以下命令：

   ```
   aws s3api create-bucket --region '{{us-east-1}}' --bucket {{BucketName}}
   ```

   在上述命令中：
   + 將 {{us-east-1}} 取代 AWS 區域 為您的 WABA 所在的 。
   + 將 {{BucketName}} 取代為新儲存貯體的名稱。

1. 若要將檔案複製到 Amazon S3 儲存貯體，請使用 [cp](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-copy) AWS CLI 命令。在命令列中輸入以下命令：

   ```
   aws s3 cp {{SourceFilePathAndName}} s3://{{BucketName}}/{{FileName}} 
   ```

   在上述命令中：
   + 將 {{SourceFilePathAndName}} 取代為要複製的檔案路徑和檔案名稱。
   + 將 {{BucketName}} 取代為儲存貯體的名稱。
   + 將 {{FileName}} 取代為 檔案要使用的名稱。

   傳送時使用的 url 為：

   ```
   s3://{{BucketName}}/{{FileName}}
   ```

   若要建立[預先簽章的 URL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)，請以您自己的資訊取代{{使用者輸入預留位置}}。

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

   傳回的 URL 將為： `https://amzn-s3-demo-bucket1.s3.af-south-1.amazonaws.com/mydoc.txt?{Headers}`

1. 使用 post-WhatsApp-message-media 命令將媒體檔案上傳至 WhatsApp。 [post-whatsapp-message-media](https://docs.aws.amazon.com/cli/latest/reference/socialmessaging/post-whatsapp-message-media.html) 成功完成時，命令會傳回 {{{MEDIA\_ID}}}，這是傳送媒體訊息的必要項目。

   ```
   aws socialmessaging post-whatsapp-message-media --origination-phone-number-id {{{ORIGINATION_PHONE_NUMBER_ID}}}  --source-s3-file bucketName={{{BUCKET}}},key={{{MEDIA_FILE}}}
   ```

   針對上述命令執行以下事項：
   + 將 {{{ORIGINATION\_PHONE\_NUMBER\_ID}}} 取代為您的電話號碼 ID。
   + 將 {{{BUCKET}}} 取代為 Amazon S3 儲存貯體的名稱。
   + 以媒體檔案名稱取代 {{{MEDIA\_FILE}}}。

   您也可以使用 `--source-s3-presigned-url`而非 來使用[預先簽章 URL](#managing-media-files-s3.title) 上傳`--source-s3-file`。您必須在 `headers` `Content-Type`欄位中新增 。如果您同時使用兩者，`InvalidParameterException`則會傳回 。

   ```
   --source-s3-presigned-url headers={"{{Name}}":"{{Value}}"},url={{https://BUCKET.s3.REGION/MEDIA_FILE}}
   ```

1. 成功完成時，會傳回 {{MEDIA\_ID}}。{{MEDIA\_ID}} 用於在[傳送媒體訊息時參考媒體](send-message-media.md)檔案。