

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

# カスタムモデルを別のモデルと共有する AWS アカウント
<a name="custom-copy-sharing"></a>

Amazon Comprehend を使用すると、カスタムモデルを他のユーザーと共有し、他のユーザーは自分の AWS アカウントにモデルをインポートできます。ユーザーがカスタムモデルのいずれかをインポートすると、そのユーザーは自分のアカウントに新しいカスタムモデルを作成します。その新しいモデルは共有されたものを再現しています。

カスタムモデルを共有するには、他のユーザーにインポートを許可するポリシーをそのモデルにアタッチします。次に、それらのユーザーに必要な詳細を提供します。

**注記**  
他のユーザーが共有したカスタムモデルをインポートするときは、モデルを含む米国東部 (バージニア北部) AWS リージョン など、同じ を使用する必要があります。

**Topics**
+ [[開始する前に]](#custom-copy-sharing-prerequisites)
+ [カスタムモデル用のリソースベースのポリシー](#custom-copy-sharing-example-policy)
+ [ステップ 1: カスタムモデルにリソースベースのポリシーを追加します](#custom-copy-sharing-adding-policy)
+ [ステップ 2: 他のユーザーがインポートする必要がある詳細情報を入力します。](#custom-copy-sharing-details)

## [開始する前に]
<a name="custom-copy-sharing-prerequisites"></a>

モデルを共有する前に、Amazon Comprehend にトレーニング済みのカスタム分類子またはカスタムエンティティレコグナイザーを AWS アカウントに用意しておく必要があります。モデルのトレーニングに関する詳細については、「[カスタム分類](how-document-classification.md)」または「[カスタムエンティティ認識](custom-entity-recognition.md)」を参照してください。

### 必要なアクセス許可
<a name="custom-copy-sharing-prerequisites-permissions"></a>

#### IAM ポリシーステートメント
<a name="custom-copy-sharing-prerequisites-permissions-iam"></a>

リソースベースのポリシーをカスタムモデルに追加する前に、 AWS Identity and Access Management (IAM) のアクセス権限が必要です。次の例に示すように、モデルポリシーを作成、取得、削除できるように、ユーザー、グループ、またはロールにポリシーをアタッチする必要があります。

**Example カスタムモデルのリソースベースのポリシーを管理するための IAM ポリシー**  

```
{
  "Effect": "Allow",
  "Action": [
    "comprehend:PutResourcePolicy",
    "comprehend:DeleteResourcePolicy",
    "comprehend:DescribeResourcePolicy"
  ],
  "Resource": "arn:aws:comprehend:{{us-west-2:111122223333}}:document-classifier/{{foo}}/version/*"
}
```

IAM ポリシーの作成については、「IAM ユーザーガイド」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。IAM ポリシーのアタッチに関する詳細については、IAM ユーザーガイドの「[IAM アイデンティティのアクセス許可の追加および削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

#### AWS KMS キーポリシーステートメント
<a name="custom-copy-sharing-prerequisites-permissions-kms"></a>

暗号化されたモデルを共有する場合は、アクセス許可の追加が必要になる場合があります AWS KMS。この要件は、Amazon Comprehend でモデルを暗号化するために使用する KMS キーの種類によって異なります。

**AWS 所有のキー** は、 AWS サービスによって所有および管理されます。を使用する場合 AWS 所有のキー、 のアクセス許可を追加する必要はありません。このセクションはスキップ AWS KMSできます。

**カスタマーマネージドキー**は AWS アカウントのキーで、その作成、所有、管理をユーザーが行います。カスタマーマネージドキーを使用する場合は、KMS キーポリシーにステートメントを追加する必要があります。

ポリシーステートメントは、1 つ以上のエンティティ (ユーザーやアカウントなど) がモデルの復号に必要な AWS KMS オペレーションを実行することを承認します。

不分別な代理処理の問題を防止するには、条件キーを使用します。詳細については、「[サービス間の混乱した代理の防止](cross-service-confused-deputy-prevention.md)」を参照してください。

ポリシー内の以下の条件キーを使用して、KMS キーにアクセスするエンティティを検証します。ユーザーがモデルをインポートすると、 AWS KMS はソースモデルバージョンの ARN が条件と一致することを確認します。ポリシーに条件を含めない場合、指定されたプリンシパルは KMS キーを使用して任意のモデルバージョンを復号できます。
+ [aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) — この条件キーは、`kms:GenerateDataKey` および `kms:Decrypt` アクションで使用します。
+ [kms:EncryptionContext](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context) — この条件キーは、`kms:GenerateDataKey`、`kms:Decrypt` および `kms:CreateGrant` アクションで使用します。

次の例では、ポリシーは AWS アカウント `444455556666`、 が所有する AWS アカウント 指定された分類子モデルのバージョン 1 の使用を に許可します`111122223333`。

**Example 特定の分類子モデルバージョンにアクセスするための KMS キーポリシー**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
          "AWS":
                "arn:aws:iam::{{444455556666}}:root"
      },
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": "*",
      "Condition": {
          "StringEquals": {
              "aws:SourceArn":
                "arn:aws:comprehend:{{us-west-2:111122223333}}:document-classifier/{{classifierName}}/version/{{1}}"
          }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
          "AWS":  "arn:aws:iam::{{444455556666}}:root"
      },
      "Action": "kms:CreateGrant",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
           "kms:EncryptionContext:aws:comprehend:arn":
              "arn:aws:comprehend:{{us-west-2:111122223333}}:document-classifier/{{classifierName}}/version/{{1}}"
        }
      }
    }
  ]
}
```

次のポリシー例では、Amazon Comprehend サービスを介してこの KMS キーにアクセスする AWS アカウント `123456789012`ことを、 のユーザー **ExampleUser ** AWS アカウント `444455556666`および の **ExampleRole** に許可します。

**Example Amazon Comprehend サービスへのアクセスを許可する KMS キーポリシー (代替案 1)。**  

次のポリシー例では、 AWS アカウント `444455556666`前の例の代替構文を使用して、 が Amazon Comprehend サービスを介してこの KMS キーにアクセスすることを許可します。

**Example Amazon Comprehend サービスへのアクセスを許可する KMS キーポリシー (代替案 2)。**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::{{444455556666}}:root"
      },
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey",
          "kms:CreateGrant"
      ],
      "Resource": "*",
      "Condition": {
          "StringLike": {
              "kms:EncryptionContext:aws:comprehend:arn": "arn:aws:comprehend:*"
          }
      }
    }
  ]
}
```

詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMSでのキーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

## カスタムモデル用のリソースベースのポリシー
<a name="custom-copy-sharing-example-policy"></a>

別の の Amazon Comprehend ユーザーがアカウント AWS からカスタムモデルをインポート AWS アカウント できるようにするには、承認する必要があります。承認するには、共有するモデルバージョンにリソースベースのポリシーを追加します。リソースベースのポリシーは、 AWSでリソースにアタッチする IAM ポリシーです。

リソースポリシーをカスタムモデルバージョンに追加すると、そのポリシーは、ユーザー、グループ、またはロールにモデルバージョンで `comprehend:ImportModel` 動作を実行することを許可します。

**Example カスタムモデルバージョンのリソースベースのポリシー**  
この例では、権限のあるエンティティを `Principal` 属性に指定しています。リソース「\*」は、ポリシーを追加する特定のモデルバージョンを指します。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "comprehend:ImportModel",
      "Resource": "*",
      "Principal": {
        "AWS": [
                "arn:aws:iam::{{111122223333:root}}",
                "arn:aws:iam::{{444455556666}}:user/{{ExampleUser}}",
                "arn:aws:iam::{{123456789012}}:role/{{ExampleRole}}"
         ]
      }
    }
  ]
}
```
カスタムモデルに追加するポリシーの場合、`comprehend:ImportModel` は Amazon Comprehend がサポートする唯一のアクションです。  
相違点の詳細については、「IAM ユーザーガイド」の「[アイデンティティベースのポリシーおよびリソースベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)」を参照してください。

## ステップ 1: カスタムモデルにリソースベースのポリシーを追加します
<a name="custom-copy-sharing-adding-policy"></a>

リソースベースのポリシーを追加するには AWS マネジメントコンソール、 AWS CLI、、または Amazon Comprehend API を使用します。

### AWS マネジメントコンソール
<a name="custom-copy-sharing-adding-policy-console"></a>

 AWS マネジメントコンソールで Amazon Comprehend を使用できます。

**リソースベースのポリシーを追加するには**

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

1. 左側のナビゲーションメニューの **[カスタマイズ]** で、カスタムモデルを含むページを選択します。

   1. カスタムドキュメント分類子を共有する場合は、**[カスタム分類]**を選択します。

   1. カスタムエンティティレコグナイザーを共有する場合は、**[カスタムエンティティ認識]** を選択します。

1. モデルのリストから、詳細ページを開くモデル名を選択します。

1. **バージョン** から、共有するモデルバージョンの名前を選択します。

1. バージョン詳細ページで、**[タグ、VPC、ポリシー]** タブを選択します。

1. [**リソースベースのポリシー**] セクションで、[**編集**]を選択します。

1. [**リソースベースのポリシー**] ページで、次を実行します。

   1. **[ポリシー名]** には、ポリシーを作成した後、わかりやすい名前を入力します。

   1. **[承認]** で、モデルのインポートを許可する以下のエンティティを 1 つ以上指定します。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/comprehend/latest/dg/custom-copy-sharing.html)

1. **[共有]** では、モデルバージョンの ARN をコピーして、モデルをインポートするユーザーと共有しやすくすることができます。誰かが別の からカスタムモデルをインポートする場合 AWS アカウント、モデルバージョン ARN が必要です。

1. **[保存]** を選択します。Amazon Comprehend はリソースベースのポリシーを作成し、それをモデルにアタッチします。

### AWS CLI
<a name="custom-copy-sharing-adding-policy-cli"></a>

を使用してリソースベースのポリシーをカスタムモデルに追加するには AWS CLI、[PutResourcePolicy](https://docs.aws.amazon.com/comprehend/latest/dg/API_PutResourcePolicy.html) コマンドを使用します。 コマンドでは、以下のパラメータを使用します。
+ `resource-arn` — モデルバージョンを含むカスタムモデルの ARN。
+ `resource-policy` — カスタムモデルに追加するリソースベースのポリシーを定義する JSON ファイル。

  ポリシーをインライン JSON 文字列として指定することもできます。ポリシーに有効な JSON を提供するには、属性名と値を二重引用符で囲みます。JSON 本文も二重引用符で囲まれている場合は、ポリシー内の二重引用符をエスケープします。
+ `policy-revision-id` — Amazon Comprehend が更新中のポリシーに割り当てたリビジョン ID。以前のバージョンがない新しいポリシーを作成する場合は、このパラメータを使用しないでください。Amazon Comprehend が自動的にリビジョン ID を作成します。

**Example `put-resource-policy` コマンドを使用して、リソースベースのポリシーをカスタムモデルに追加する**  
この例では、**PolicyFile.json** という名前の JSON ファイルにポリシーを定義して、モデルに関連付けます。このモデルは **mycf1** という分類子のバージョン **v2** です。  

```
$ aws comprehend put-resource-policy \
> --resource-arn {{arn:aws:comprehend:us-west-2:111122223333:document-classifier/mycf1/version/v2}} \
> --resource-policy file://{{policyFile.json}} \
> --policy-revision-id {{revision-id}}
```
リソースポリシーの JSON ファイルには以下の内容が含まれています。  
+ アクション — ポリシーは、指定されたプリンシパルに `comprehend:ImportModel` を使用することを許可します。
+ リソース — カスタムモデルの ARN。リソース「\*」は、`put-resource-policy` コマンドで指定したモデルバージョンを指します。
+ *プリンシパル* – このポリシーは、444455556666 `jane`からの AWS アカウント ユーザーと AWS アカウント 123456789012 からのすべてのユーザーを承認します。  
****  

```
{
"Version":"2012-10-17",		 	 	 
 "Statement":[
    {"Sid":"ResourcePolicyForImportModel",
     "Effect":"Allow",
     "Action":["comprehend:ImportModel"],
     "Resource":"*",
     "Principal":
         {"AWS":
            ["arn:aws:iam::444455556666:user/jane",
             "123456789012"]
         }
   }
 ]
}
```

### Amazon Comprehend API
<a name="custom-copy-sharing-adding-policy-api"></a>

Amazon Comprehend API を使用してカスタムモデルにリソースベースのポリシーを追加するには、[PutResourcePolicy](https://docs.aws.amazon.com/comprehend/latest/dg/API_PutResourcePolicy.html) API オペレーションを使用してください。

モデルを作成する API リクエストで、カスタムモデルにポリシーを追加することもできます。そのためには、[CreateDocumentClassifier](https://docs.aws.amazon.com/comprehend/latest/dg/API_CreateDocumentClassifier.html) または [CreateEntityRecognizer](https://docs.aws.amazon.com/comprehend/latest/dg/API_CreateEntityRecognizer.html) リクエストを送信するときに、ModelPolicy パラメータにポリシー JSON を指定します。

## ステップ 2: 他のユーザーがインポートする必要がある詳細情報を入力します。
<a name="custom-copy-sharing-details"></a>

これで、リソースベースのポリシーをカスタムモデルに追加し、他の Amazon Comprehend ユーザーにお客様のモデルを AWS アカウントにインポートする権限を与えました。ただし、インポートする前に、以下の詳細情報を提供する必要があります。
+ モデルバージョンの Amazon リソースネーム (ARN)。
+ モデルを含む AWS リージョン 。モデルをインポートする人は誰もが同じ AWS リージョン を使用する必要があります。
+ モデルが暗号化されているかどうか、暗号化されている場合は、使用する AWS KMS キーのタイプ: AWS 所有のキー またはカスタマーマネージドキー。
+ モデルがカスタマーマネージドキーで暗号化されている場合は、KMS キーの ARN を指定する必要があります。モデルをインポートする人は誰もが、 AWS アカウント内のIAM サービスロールに ARN を含める必要があります。このロールは、インポート時に KMS キーを使用してモデルを復号できる KMS キーを使用する許可を Amazon Comprehend に付与します。

他のユーザーがモデルをインポートする方法の詳細については、「[別の からカスタムモデルをインポートする AWS アカウント](custom-copy-importing.md)」を参照してください。