

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

# 完成 先决条件
<a name="async-inference-create-endpoint-prerequisites"></a>

以下主题介绍了创建异步端点之前必须完成的先决条件。这些先决条件包括正确存储模型工件、使用正确的权限配置 AWS IAM 以及选择容器映像。

**要完成先决条件**

1. **为 Amazon A SageMaker I 创建 IAM 角色。**

   异步推理需要访问 Amazon S3 存储桶 URI。为此，请创建一个可以运行 A SageMaker I 并有权访问 Amazon S3 和 Amazon SNS 的 IAM 角色。使用此角色， SageMaker AI 可以在您的账户下运行并访问您的 Amazon S3 存储桶和 Amazon SNS 主题。

   您可以使用 IAM 控制台 适用于 Python (Boto3) 的 AWS SDK、或创建 IAM 角色 AWS CLI。以下示例演示如何创建 IAM 角色并使用 IAM 控制台附加必要的策略。

   1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

   1. 在 IAM 控制台的导航窗格中，选择 **Roles**，然后选择 **Create role**。

   1. 对于**选择受信任实体的类型**，选择 **AWS 服务**。

   1. 选择您希望允许其承担此角色的服务。在这种情况下，请选择 **SageMaker AI**。然后选择**下一步：权限**。
      + 这会自动创建一个 IAM 策略，该策略允许访问相关服务，例如 Amazon S3、Amazon ECR 和 CloudWatch 日志。

   1. 选择**下一步：标签**。

   1. （可选）通过以键值对的形式附加标签来向角色添加元数据。有关将在 IAM 中使用标签的更多信息，请参阅 [Tagging IAM resources](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_tags.html)（标记 IAM 资源）。

   1. 选择**下一步：审核**。

   1. 在**角色名称**中键入角色名称。

   1. 如果可能，键入角色名称或角色名称后缀。在您的 AWS 账户中，角色名称必须是唯一的。它们不按大小写区分。例如，您无法同时创建名为 `PRODROLE` 和 `prodrole` 的角色。由于其他 AWS 资源可能会引用该角色，因此您无法在角色创建后对其名称进行编辑。

   1. (可选) 对于 **Role description**，键入新角色的描述。

   1. 检查角色，然后选择**创建角色**。

      注意 A SageMaker I 角色 ARN。要使用控制台查找角色 ARN，请执行以下操作：

      1. 前往 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

      1. 选择**角色**。

      1. 在搜索字段中键入角色的名称，搜索您刚刚创建的角色。

      1. 选择角色。

      1. 角色 ARN 位于**摘要**页面的顶部。

1. **将 Amazon SageMaker AI、Amazon S3 和亚马逊 SNS 权限添加到你的 IAM 角色中。**

   创建角色后，向你的 IAM 角色授予 SageMaker AI、Amazon S3 以及可选的 Amazon SNS 权限。

   在 IAM 控制台中选择**角色**。通过在**搜索**字段中键入角色名称来搜索您创建的角色。

   1. 选择您的角色。

   1. 接下来选择**附加策略**。

   1. Amazon SageMaker 异步推理需要权限才能执行以下操作：`"sagemaker:CreateModel"`、`"sagemaker:CreateEndpointConfig"``"sagemaker:CreateEndpoint"`、和。`"sagemaker:InvokeEndpointAsync"`

      这些操作包含在 `AmazonSageMakerFullAccess` 策略中。将此策略添加到您的 IAM 角色。在**搜索**字段中搜索 `AmazonSageMakerFullAccess`。选择 `AmazonSageMakerFullAccess`。

   1. 选择**附加策略**。

   1. 接下来选择**附加策略**以添加 Amazon S3 权限。

   1. 选择**创建策略**。

   1. 选择 `JSON` 选项卡。

   1. 添加以下策略语句：

------
#### [ JSON ]

****  

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

------

   1. 选择**下一步：标签**。

   1. 键入**策略名称**。

   1. 选择**创建策略**。

   1. 重复您为添加 Amazon S3 权限所完成的相同步骤，以添加 Amazon SNS 权限。对于策略声明，请附加以下内容：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Action": [
                      "sns:Publish"
                  ],
                  "Effect": "Allow",
      "Resource": "arn:aws:sns:us-east-1:111122223333:SNS_Topic"
              }
          ]
      }
      ```

------

1. **将您的推理数据（例如机器学习模型、示例数据）上传到 **Amazon S3**。**

1. **选择预构建的 Docker 推理映像或创建自己的推理 Docker 映像。**

   SageMaker AI 为其内置算法提供容器，为一些最常见的机器学习框架（例如 Apache MXNet、、和 Chainer）提供预构建的 Docker 镜像。 TensorFlow PyTorch有关可用 SageMaker AI 镜像的完整列表，请参阅[可用的 Deep Learning Containers 镜像](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)。如果您选择使用 A SageMaker I 提供的容器，则可以通过在容器中设置环境变量，将终端节点超时和有效负载大小从默认值增加到默认值。要了解如何为每个框架设置不同的环境变量，请参阅“创建异步端点”中的“创建模型”步骤。

   如果现有的 SageMaker AI 容器都不能满足您的需求，并且您没有自己的现有容器，则可能需要创建一个新的 Docker 容器。有关如何创建 Docker 映像的信息，请参阅[具有自定义推理代码的容器](your-algorithms-inference-main.md)。

1. **创建 Amazon SNS 主题（可选）**

   创建 Amazon Simple Notification Service (Amazon SNS) 主题，用于发送有关已完成处理的请求的通知。Amazon SNS 是面向消息收发应用程序的通知服务，多个订阅用户可以选择通过多种传输协议（包括 HTTP、Amazon SQS 和电子邮件）请求和接收注重时效消息的“推送”通知。使用 `EndpointConfig` API 指定 `AsyncInferenceConfig` 时，您可以在创建 `EndpointConfig` 对象时指定 Amazon SNS 主题。

   按照以下步骤创建并订阅 Amazon SNS 主题。

   1. 使用 Amazon SNS 控制台创建主题。有关说明，请参阅《Amazon Simple Notification Service 开发人员指南》****中的[创建 Amazon SNS 主题](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。

   1. 订阅至主题。有关说明，请参阅《Amazon Simple Notification Service 开发人员指南》****中的[订阅 Amazon SNS 主题](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)。

   1. 当您收到要求确认订阅主题的电子邮件时，请确认订阅。

   1. 记下主题的 Amazon 资源名称 (ARN)。您创建的 Amazon SNS 主题是您 AWS 账户中的另一种资源，它具有唯一的 ARN。ARN 的格式如下所示：

      ```
      arn:aws:sns:aws-region:account-id:topic-name
      ```

   有关 Amazon SNS 主题的更多信息，请参阅 [Amazon SNS 开发人员指南](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)。