

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 上传要与之一起发送的媒体文件 WhatsApp
<a name="managing-media-files-s3"></a>

当您发送或接收媒体文件时，必须将其存储在 Amazon S3 存储桶中并从中上传或检索 WhatsApp。Amazon S3 存储桶必须 AWS 账户 与 AWS 区域 您的 WhatsApp 企业账户 (WABA) 相同。这些说明展示了如何创建 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) 和 [A *[mazon 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 商业平台云 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 存储桶，请使用[创建存储桶命令](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}}替换为要用于该文件的名称。

   发送时使用的网址是：

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

   要创建[预签名 URL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)，请{{user input placeholders}}用您自己的信息替换。

   ```
   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}}
   ```

   返回的网址将是：`https://amzn-s3-demo-bucket1.s3.af-south-1.amazonaws.com/mydoc.txt?{Headers}`

1.  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`代替，使用[预签名网址](#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)文件。