批量翻译作业的先决条件 - Amazon Translate

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

批量翻译作业的先决条件

Amazon Translate 要成功执行批量翻译作业,必须满足以下先决条件:

  • 包含输入和输出文档的 Amazon S3 存储桶必须与您调用的 API 端点位于同一 AWS 区域中。

  • 批处理输入文档的集合大小必须不超过 5 GB。

  • 一个批量翻译作业中最多可提交 100 万份文档。

  • 每个输入文档必须不超过 20 MB,并且必须包含少于 100 万个字符。

  • 您的文件必须位于 Amazon S3 存储桶中的文件夹中。如果您将输入文件添加到存储桶的顶层,则在您尝试运行批量翻译任务时,Amazon Translate 会引发错误。此要求适用于输入文件。输出文件不需要文件夹,Amazon Translate 可以将其放置于 Amazon S3 存储桶的顶层。

  • 您的输入文件文件夹可以包含嵌套文件夹。确保没有任何嵌套文件夹命名为 details,否则在您尝试运行批量翻译任务时,Amazon Translate 会引发错误。

支持的文件格式

Amazon Translate 支持以下类型的文件用于批量翻译作业:

  • 纯文本。

  • HTML。

  • Word 文档 (.docx)。

  • PowerPoint 演示文稿文件 (.pptx)。

  • Excel 工作簿文件 (.xlsx)。

  • XML 本地化交换文件格式 (XLIFF) 文件 (.xlf)。Amazon Translate 仅支持 XLIFF 版本 1.2。

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

必备权限

您的 AWS 账户必须在 IAM 中具有服务角色,然后您才能运行批量翻译作业。该角色必须具有向 Amazon Translate 授权的权限策略:

  • 对 Amazon S3 中您的输入文件夹及其所有子文件夹的读取权限。

  • 对输出存储桶的读取和写入访问权限。

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

在使用 Amazon Translate 控制台创建批量翻译作业时,您可以选择允许 Amazon Translate 自动为您创建此角色。在使用 AWS CLI 或 Amazon Translate API 执行批量翻译作业时,您可以在请求中提供角色的 Amazon 资源名称 (ARN)。

有关更多信息,请参阅《IAM 用户指南》中的创建向 AWS 服务委派权限的角色

例 权限策略

以下示例权限策略授予对 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/*" } ] }
例 信任策略

以下信任策略允许 Amazon Translate 代入该策略所属的 IAM 角色。

我们建议您验证使用信任策略的 AWS 账户,以缓解混淆代理问题。此示例使用 aws:SourceArnaws: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" } } } ] }

自定义加密的必备权限

您可以在 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 操作,如以下示例策略语句所示。

例 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 中的密钥政策

使用其他 AWS 账户的 AWS KMS 密钥的权限

如果您要使用的 KMS 密钥所在的 AWS 账户不同于 Amazon Translate 使用的账户,则您必须:

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

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

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

例 用于授予不同账户中 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 密钥政策,请将服务角色和管理员用户添加为允许使用密钥的委托人,如以下示例策略语句所示。

例 允许 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 密钥