

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# の前提条件を満たす
<a name="async-inference-create-endpoint-prerequisites"></a>

このトピックでは、非同期エンドポイントを作成する前に満たす必要がある前提条件について説明します。これらの前提条件には、モデルアーティファクトの適切な保存、正しいアクセス許可を持つ AWS IAM の設定、コンテナイメージの選択が含まれます。

**前提条件を完了する方法**

1. **Amazon SageMaker AI 用の IAM ロールを作成する。**

   非同期推論では、Amazon S3 バケット URI にアクセスする必要があります。これを簡単に行うには、SageMaker AI を実行でき、Amazon S3 と Amazon SNS にアクセスする許可を持つ IAM ロールを作成します。このロールを使用すると、SageMaker AI はお使いのアカウントの下で動作し、Amazon S3 バケットと Amazon SNS トピックにアクセスできます。

   IAM ロールを作成するには、IAM コンソール AWS SDK for Python (Boto3)、または を使用します AWS CLI。次の例は、IAM ロールを作成し、IAM コンソールで必要なポリシーをアタッチする方法を示しています。

   1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

   1. IAM コンソールのナビゲーションペインで、**[ロール]**、**[ロールを作成]** の順に選択します。

   1. **[信頼できるエンティティの種類の選択]** で、**[AWS サービス]** を選択します。

   1. このロールを引き受けることを許可するサービスを選択します。この場合は、**[SageMaker AI]** を選択します。その後、**[Next: Permissions (次へ: アクセス許可)]** を選択します。
      + これにより、Amazon S3、Amazon ECR、CloudWatch Logs などの関連サービスへのアクセス許可を付与する IAM ポリシーが自動的に作成されます。

   1. [**次へ: タグ**] を選択します。

   1. (オプション) タグをキーバリューのペアとしてアタッチして、メタデータをロールに追加します。IAM でのタグの使用の詳細については、「[IAM リソースのタグ付け](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_tags.html)」を参照してください。

   1. **[次へ: レビュー]** を選択します。

   1. **[Role name]** (ロール名) を入力します。

   1. 可能な場合は、ロール名またはロール名のサフィックスを入力します。ロール名は AWS アカウント内で一意である必要があります。大文字と小文字は区別されません。例えば、`PRODROLE` と `prodrole` というロール名を両方作成することはできません。他の AWS リソースはロールを参照する可能性があるため、ロールの作成後にロールの名前を編集することはできません。

   1. (オプション) [**Role description**] に、新しいロールの説明を入力します。

   1. ロール情報を確認し、**ロールの作成** を選択します。

      SageMaker AI ロールの ARN をメモしておきます。コンソールを使用してロールの ARN を見つけるには、次を実行します。

      1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) に移動します。

      1. **[Roles]** (ロール) を選択します。

      1. [Search] (検索) フィールドにロール名を入力して、先ほど作成したロールを検索します。

      1. ロールを選択します。

      1. ロールの ARN は、**[Summary]** (概要) ページの上部にあります。

1. **Amazon SageMaker AI、Amazon S3、Amazon SNS の許可を IAM ロールに追加します。**

   ロールが作成されたら、SageMaker AI、Amazon S3 の許可と、オプションで Amazon SNS の許可を IAM ロールに付与します。

   IAM コンソールで、**[Roles]** (ロール) を選択します。**[Search]** (検索) フィールドにロール名を入力して、作成したロールを検索します。

   1. ロールを選択します。

   1. 次に、**[Attach policies]** (ポリシーをアタッチ) を選択します。

   1. Amazon SageMaker 非同期推論では、アクション `"sagemaker:CreateModel"`、`"sagemaker:CreateEndpointConfig"`、`"sagemaker:CreateEndpoint"`、`"sagemaker:InvokeEndpointAsync"` を実行する許可が必要です。

      これらのアクションは `AmazonSageMakerFullAccess` ポリシーに含まれています。このポリシーを IAM ロールに追加します。**[Search]** (検索) フィールドで `AmazonSageMakerFullAccess` を検索します。`AmazonSageMakerFullAccess` を選択します。

   1. **[Attach policy]** (ポリシーのアタッチ) を選択します。

   1. 次に **[Attach Policies]** (ポリシーをアタッチ) を選択して Amazon S3 の許可を追加します。

   1. **[Create policy]** (ポリシーを作成) を選択します。

   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. **[Next: Tags]** (次へ: タグ) を選択します。

   1. **[Policy name]** (ポリシー名) を入力します。

   1. [**Create policy**] (ポリシーの作成) を選択します。

   1. Amazon SNS の許可を追加するには、Amazon S3 の許可を追加する場合と同じ手順を繰り返します。ポリシーステートメントについては、以下をアタッチします。

------
#### [ 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、TensorFlow、PyTorch、Chainer など、いくつかの最も一般的な機械学習フレームワーク用に、組み込みアルゴリズムおよび構築済みの Docker イメージのコンテナを提供しています。使用可能な SageMaker AI イメージの完全なリストについては、「[Available Deep Learning Containers Images](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)」を参照してください。SageMaker AI 提供のコンテナを使用する場合は、コンテナ内の環境変数を設定することで、エンドポイントのタイムアウトとペイロードサイズをデフォルトから増やすことができます。フレームワークごとに異なる環境変数を設定する方法については、非同期エンドポイントの「モデルの作成」ステップを参照してください。

   既存の SageMaker AI コンテナがニーズを満たしておらず、既存の独自コンテナがない場合は、新しい Docker コンテナを作成する必要があります。Docker イメージの作成方法の詳細については、「[カスタム推論コードを持つコンテナ](your-algorithms-inference-main.md)」を参照してください。

1. **Amazon SNS トピックを作成する (オプション)。**

   処理を完了したリクエストに関する通知を送信する Amazon Simple Notification Service (Amazon SNS) トピックを作成します。Amazon SNS は、メッセージング指向のアプリケーション向け通知サービスです。HTTP、Amazon SQS、メールなどのトランスポートプロトコルを選択することにより、複数のサブスクライバーがタイムクリティカルなメッセージの「プッシュ」通知を要求および受信します。Amazon SNS トピックは、`EndpointConfig` API を使用して `AsyncInferenceConfig` を指定する際、`EndpointConfig` オブジェクトを作成するときに指定できます。

   手順に従って、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)」を参照してください。