

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

# 批量翻译作业的先决条件
<a name="async-prereqs"></a>

Amazon Translate 要成功执行批量翻译作业，必须满足以下先决条件：
+ 包含输入和输出文档的 Amazon S3 存储桶必须与您调用的 API 端点位于同一 AWS 区域中。
+ 批处理输入文档的集合大小必须不超过 5 GB。
+ 一个批量翻译作业中最多可提交 100 万份文档。
+ 每个输入文档必须不超过 20 MB，并且必须包含少于 100 万个字符。
+ 您的文件必须位于 Amazon S3 存储桶中的文件夹中。如果您将输入文件添加到存储桶的顶层，则在您尝试运行批量翻译任务时，Amazon Translate 会引发错误。此要求适用于输入文件。输出文件不需要文件夹，Amazon Translate 可以将其放置于 Amazon S3 存储桶的顶层。
+ 您的输入文件文件夹可以包含嵌套文件夹。确保没有任何嵌套文件夹命名为 **details**，否则在您尝试运行批量翻译任务时，Amazon Translate 会引发错误。

## 支持的文件格式
<a name="async-prereqs-formats"></a>

Amazon Translate 支持以下类型的文件用于批量翻译作业：
+ 纯文本。
+ HTML。
+ Word 文档 (.docx)。
+ PowerPoint 演示文件 (.pptx)。
+ Excel 工作簿文件 (.xlsx)。
+ XML 本地化交换文件格式 (XLIFF) 文件 (.xlf)。Amazon Translate 仅支持 XLIFF 版本 1.2。

Amazon Translate 要求文件采用 UTF-8 编码。

## 必备权限
<a name="async-prereqs-permissions"></a>

在运行批量翻译任务之前，您的 AWS 账户必须在 IAM 中拥有服务角色。该角色必须具有向 Amazon Translate 授权的权限策略：
+ 对 Amazon S3 中您的输入文件夹及其所有子文件夹的读取权限。
+ 对输出存储桶的读取和写入访问权限。

还必须包含一项信任策略，允许 Amazon Translate 代入该角色并获取其权限。此信任策略必须允许 `translate.amazonaws.com` 服务主体执行 `sts:AssumeRole` 操作。

在使用 Amazon Translate 控制台创建批量翻译作业时，您可以选择允许 Amazon Translate 自动为您创建此角色。当您使用 AWS CLI 或 Amazon Translate API 运行批量翻译任务时，您需要在请求中提供该角色的亚马逊资源名称 (ARN)。

有关更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**Example 权限策略**  
以下示例权限策略授予对 Amazon S3 存储桶中输入文件夹的读取访问权限，并且授予对输出存储桶的读取和写入访问权限。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": [
        "arn:aws:s3:::input-bucket-name/*",
        "arn:aws:s3:::output-bucket-name/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": [
        "arn:aws:s3:::input-bucket-name",
        "arn:aws:s3:::output-bucket-name"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::output-bucket-name/*"
    }
  ]
}
```

**Example 信任策略**  
以下信任策略允许 Amazon Translate 代入该策略所属的 IAM 角色。  
我们建议您验证使用信任策略的 AWS 账户，以缓解 Confused [副手](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)问题。此示例使用 **aws:SourceArn** 和 **aws:SourceAccount** 条件键来验证源账户。输入提交批量翻译作业的 AWS 账户。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "translate.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
            "aws:SourceArn": "arn:aws:translate:*:111122223333:*"
        },
        "StringEquals": {
            "aws:SourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

## 自定义加密的必备权限
<a name="async-prereqs-permissions-custom-encryption"></a>

您可以在 Amazon Translate 中自定义您的加密设置，但必须首先在 IAM 中为服务角色添加权限。

Amazon Translate 会对您在运行批量翻译作业时产生的翻译输出进行加密。默认情况下，它使用 *AWS 托管式密钥* 进行此加密。此类密钥由您的账户创建 AWS 并存储在 AWS Key Management Service (AWS KMS) 中。但是，您无法自己管理此 KMS 密钥，只能由 AWS代表您管理和使用。

或者，您可以选择使用*客户托管密钥加密输出，该密钥*是您在 AWS 账户中创建、拥有和管理的 KMS 密钥。

您的密钥必须具有允许 Amazon Translate 使用的密钥政策。密钥政策通过将其权限授予允许 Amazon Translate 访问 Amazon S3 存储桶的服务角色来实现这一点。

密钥策略允许服务角色执行加密输出所需的 AWS KMS 操作，如以下示例策略声明所示。

**Example KMS 密钥政策语句：**  

```
{
  "Effect": "Allow",
  "Principal":
  {
    "AWS":
    [
      "arn:aws:iam::111122223333:role/AmazonTranslateServiceRoleS3FullAccess"
    ]
  },
  "Action":
  [
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:CreateGrant",
    "kms:RetireGrant",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
```

有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS KMS中的密钥政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

### 使用其他 AWS 账户 AWS KMS 密钥的权限
<a name="async-prereqs-permissions-custom-encryption-cross-account"></a>

如果您想使用与您使用 Amazon Translate 不同的 AWS 账户的 KMS 密钥，则必须：

1. 在 IAM 中更新 Amazon Translate 的服务角色。

1. 更新中的密钥政策 AWS KMS。

要更新您的服务角色，请附加一个允许其使用其他 AWS 账户中的 KMS 密钥执行必要 AWS KMS 操作的策略，如以下示例所示。

**Example 用于授予不同账户中 KMS 密钥访问权限的 IAM policy**  

```
{
  "Effect": "Allow",
  "Action":
  [
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:CreateGrant",
    "kms:RetireGrant",
    "kms:DescribeKey"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/key-id"
}
```

要更新您的 KMS 密钥政策，请将服务角色和管理员用户添加为允许使用密钥的委托人，如以下示例策略语句所示。

**Example 允许 IAM 角色使用密钥的 KMS 密钥政策语句**  

```
{
  "Effect": "Allow",
  "Principal":
  {
    "AWS":
    [
      "arn:aws:iam::444455556666:role/AmazonTranslateServiceRoleS3FullAccess",
      "arn:aws:iam::444455556666:admin"
    ]
  },
  "Action":
  [
    "kms:Decrypt",
    "kms:CreateGrant",
    "kms:GenerateDataKey",
    "kms:RetireGrant",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
```

有关更多信息，请参阅《*AWS Key Management Service 开发者指南》*[中的允许其他账户中的用户使用 AWS KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)