

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

# 前提条件: IAM ロールと Amazon S3 アクセス
<a name="bulk-load-tutorial-IAM"></a>

Amazon Simple Storage Service (Amazon S3) バケットからデータをロードするには、バケットにアクセスできる AWS Identity and Access Management (IAM) ロールが必要です。Amazon Neptune はデータをロードするためにこのロールを引き受けます。

**注記**  
Amazon S3 `SSE-S3` モードを使用して暗号化されている場合は、Amazon S3 から暗号化されたデータを読み込むことができます。その場合、Neptune はユーザーの認証情報を偽装し、ユーザーに代わって `s3:getObject` 呼び出しを発行することができます。  
また、IAM ロールに AWS KMSにアクセスするために必要なアクセス権限が含まれている限り、`SSE-KMS` モードを使用して暗号化された Amazon S3 から、暗号化されたデータをロードすることもできます。適切な AWS KMS アクセス許可がない場合、一括ロードオペレーションは失敗し、`LOAD_FAILED`レスポンスを返します。  
Neptune は現在 `SSE-C` モードを使用して暗号化された Amazon S3 データのロードをサポートしていません。

以下のセクションでは、マネージド IAM ポリシーを使用して Amazon S3 リソースにアクセスするための IAM ロールを作成し、Neptune クラスターにロールをアタッチする方法を示します。

**Topics**
+ [Amazon Neptune から Amazon S3 リソースにアクセスするための IAM ロールの作成](bulk-load-tutorial-IAM-CreateRole.md)
+ [Amazon Neptune クラスターに　IAM ロールを追加する](bulk-load-tutorial-IAM-add-role-cluster.md)
+ [Amazon S3 VPC エンドポイントの作成](bulk-load-tutorial-vpc.md)
+ [Amazon Neptune で IAM ロールを連鎖する](bulk-load-tutorial-chain-roles.md)

**注記**  
これらの手順では、IAM コンソールにアクセスでき、IAM ロールとポリシーを管理するアクセス許可が必要です。詳細については、*IAM ユーザーガイド*[の「 AWS マネジメントコンソールで作業するためのアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions-required.html#Credentials-Permissions-overview-console)」を参照してください。  
Amazon Neptune コンソールでは、Neptune クラスターにロールをアタッチする以下の IAM アクセス権限が必要です。  

```
iam:GetAccountSummary on resource: *
iam:ListAccountAliases on resource: *
iam:PassRole on resource: * with iam:PassedToService restricted to rds.amazonaws.com
```

# Amazon Neptune から Amazon S3 リソースにアクセスするための IAM ロールの作成
<a name="bulk-load-tutorial-IAM-CreateRole"></a>

`AmazonS3ReadOnlyAccess` マネージド IAM ポリシーを使用して、Amazon Neptune が Amazon S3 リソースにアクセスできるようにする新しい IAM ロールを作成します。

**Amazon Neptune が Amazon S3 サービスにアクセスすることを許可する新しい IAM ロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**ロールの作成**] を選択してください。

1. **[AWS のサービス]** で **[S3]** を選択します。

1. **[Next: Permissions]** (次のステップ: 許可) を選択します。

1. フィルタボックスを使用して用語「**S3**」でフィルタ処理し、**AmazonS3ReadOnlyAccess** の横にあるチェックボックスをオンにします。
**注記**  
このポリシーによって、すべてのバケットに対する `s3:Get*` および `s3:List*` アクセス許可が付与されます。後の手順では、信頼ポリシーを使用してこのロールへのアクセスを制限します。  
ローダーに必要なのは、ロード元のバケットに対する `s3:Get*` および `s3:List*` アクセス権限のみです。したがって、これらのアクセス権限を Amazon S3 リソース別に制限することもできます。  
S3 バケットが暗号化されている場合には、`kms:Decrypt` 許可を追加する必要があります。

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

1. **[Role Name]** (ロール名) を IAM ロールの名前 (例: `NeptuneLoadFromS3`) に設定します。オプションの [**Role Description**] (ロールの説明) 値 (「Allows Neptune to access Amazon S3 resources on your behalf.」など) を追加することもできます。

1. **[ロールの作成]** を選択します。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**検索**] フィールドで、作成したロールの名前を入力し、リストに表示されたらそのロールを選択します。

1. [**Trust Relationships**] (信頼関係) タブで、[**Edit trust relationship**] (信頼関係の編集) を選択します。

1. テキストフィールドに次の信頼ポリシーをコピーして貼り付けます。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "rds.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. **[信頼ポリシーの更新]** を選択します。

1. 「[Amazon Neptune クラスターに　IAM ロールを追加する](bulk-load-tutorial-IAM-add-role-cluster.md)」のステップを完了します。

# Amazon Neptune クラスターに　IAM ロールを追加する
<a name="bulk-load-tutorial-IAM-add-role-cluster"></a>

コンソールを使用して IAM ロールを Amazon Neptune クラスターに追加します。これにより、クラスター内の任意の Neptune DB インスタンスがロールを引き受け、Amazon S3 からロードできるようになります。

**注記**  
Amazon Neptune コンソールでは、Neptune クラスターにロールをアタッチする以下の IAM アクセス権限が必要です。  

```
iam:GetAccountSummary on resource: *
iam:ListAccountAliases on resource: *
iam:PassRole on resource: * with iam:PassedToService restricted to rds.amazonaws.com
```

**Amazon Neptune クラスターに　IAM ロールを追加するには**

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

1. ナビゲーションペインで、**[Databases]** (データベース) を選択します。

1. 変更するクラスターのクラスター識別子を選択します。

1. **[接続とセキュリティ]** タブを選択します。

1. IAM ロールセクションで、前のセクションで作成したロールを選択します。

1. [**Add role**] を選択します。

1. IAM ロールがクラスターにアクセスできるようになるまで待ってから、使用します。

# Amazon S3 VPC エンドポイントの作成
<a name="bulk-load-tutorial-vpc"></a>

Neptune ローダーには Amazon S3 のためにゲートウェイタイプの VPC エンドポイントが必要です。

**Amazon S3 のアクセスをセットアップするには**

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

1. ナビゲーションペインで、**[エンドポイント]** を選択します。

1. [**エンドポイントの作成**] を選択します。

1. ゲートウェイタイプのエンドポイントの **サービス名** `com.amazonaws.region.s3` を選択します。
**注記**  
このリージョンが正しくない場合は、コンソールのリージョンが正しいことを確認してください。

1. Neptune DB インスタンスを含む VPC を選択します (Neptune コンソールに DB インスタンスとして一覧表示されます)。

1. クラスターに関連するサブネットに関連付けられているルートテーブルの横にあるチェックボックスをオンにします。ルートテーブルが 1 つだけの場合は、そのボックスを選択する必要があります。

1. **エンドポイントの作成** を選択します。

エンドポイント作成の詳細については、*Amazon VPC ユーザーガイド*の [VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html#create-vpc-endpoint)を参照してください。VPC エンドポイントの制限については、[Amazon S3 の VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html)を参照してください。

**次のステップ**  
これで、Amazon S3 バケットへのアクセスが許可され、データをロードする準備ができました。サポートされる形式については、[ロードデータ形式](bulk-load-tutorial-format.md) を参照してください。

# Amazon Neptune で IAM ロールを連鎖する
<a name="bulk-load-tutorial-chain-roles"></a>

**重要**  
[エンジンリリース 1.2.1.0.R3](engine-releases-1.2.1.0.R3.md) で導入された IAM ロールの連鎖を利用する新しい一括読み込みクロスアカウント機能では、一括読み込みのパフォーマンスが低下する場合があります。そのため、この機能をサポートするエンジンリリースへのアップグレードは、問題が解決されるまで一時的に中断されました。

クラスターにロールをアタッチすると、クラスターはそのロールを引き受けて、Amazon S3 に保存されているデータにアクセスできるようになります。[エンジンリリース 1.2.1.0.R3](engine-releases-1.2.1.0.R3.md) 以降では、そのロールが必要なすべてのリソースにアクセスできない場合、クラスターが他のリソースにアクセスできるように引き受けることができる 1 つ以上の追加のロールを連鎖できます。チェーン内の各ロールは、クラスターがチェーンの末尾のロールを引き受けるまで、チェーン内の次のロールを引き受けます。

ロールを連鎖するには、ロール間で信頼関係を確立します。例えば、`RoleB` を `RoleA` に連鎖するには、`RoleA` は `RoleB` の引き受けを許可するアクセス許可ポリシーを持っている必要があり、`RoleB` はそのアクセス許可を `RoleA` に戻すことを許可する信頼ポリシーが必要です。詳細については、「[IAM ロールの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)」を参照してください。

チェーン内の最初のロールは、データをロードするクラスターにアタッチされる必要があります。

最初のロールと、チェーン内の次のロールを引き受ける後続の各ロールには、以下のものが必要です。
+ `sts:AssumeRole` アクションに対する `Allow` 効果を持つ特定のステートメントを含むポリシー。
+ `Resource` 要素内の次のロールの Amazon リソースネーム (ARN)。

**注記**  
ターゲット Amazon S3 バケットは、クラスターと同じ AWS リージョンに存在する必要があります。

## 連鎖したロールを使用したクロスアカウントアクセス
<a name="bulk-load-tutorial-chain-cross-account"></a>

別のアカウントに属する 1 つまたは複数のロールを連鎖することによって、クロスアカウントアクセスを付与できます。クラスターが別のアカウントに属するロールを一時的に引き受けると、そのアカウントのリソースにアクセスできるようになります。

例えば、**アカウント A** が**アカウント B** に属する Amazon S3 バケットのデータにアクセスしたいとします。
+ **アカウント A **は、 という名前の Neptune AWS のサービスロールを作成し`RoleA`、クラスターにアタッチします。
+ **アカウント B** は、**アカウント B** バケット内のデータにアクセスすることが承認されている `RoleB` という名前のロールを作成します。
+ **アカウント A** は、`RoleB` を引き受けることを許可するアクセス許可ポリシーを `RoleA` にアタッチします。
+ **アカウント B** は、`RoleB`アクセス許可を渡すことができる信頼ポリシーをアタッチします。`RoleA`
+ **アカウント B** バケットのデータにアクセスするには、**アカウント A** は `RoleA` と `RoleB` を連鎖する `iamRoleArn` パラメータを使用してローダーコマンドを実行します。ローダー操作の継続期間中、`RoleA` は一時的に `RoleB` を引き受けて、**アカウント B** で Amazon S3 バケットにアクセスします。

![\[連鎖したロールを使用したクロスアカウントアクセスの図\]](http://docs.aws.amazon.com/ja_jp/neptune/latest/userguide/images/cross-account-bulk-load.png)


例えば、`RoleA` には、Neptune との信頼関係を確立する信頼ポリシーがあるとします。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
          "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

`RoleA` には、**アカウント B** が所有する `RoleB` を引き受けることを許可するアクセス許可ポリシーもあります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1487639602000",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/RoleB"
        }
    ]
}
```

------

逆に、`RoleB` には、`RoleA` との信頼関係を確立する次のような信頼ポリシーがあるとします。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/RoleA"
            }
        }
    ]
}
```

------

`RoleB` には、**アカウント B** にある Amazon S3 バケット内のデータにアクセスするアクセス許可も必要です。

## AWS Security Token Service (STS) VPC エンドポイントの作成
<a name="bulk-load-tutorial-sts-endpoint"></a>

Neptune ローダーは、プライベート IP アドレスを介して AWS STS APIs にプライベートにアクセスするために IAM ロールを連鎖させる AWS STS 場合、 の VPC エンドポイントを必要とします。Amazon VPC から VPC エンドポイント AWS STS を介して、安全でスケーラブルな方法で に直接接続できます。インターフェイス VPC エンドポイントを使用すると、アウトバウンドトラフィックのファイアウォールを開く必要がないため、セキュリティ体制が強化されます。また、Amazon VPC エンドポイントを使用する利点は他にもあります。

VPC エンドポイントを使用する場合、 へのトラフィック AWS STS はインターネット経由で送信されず、Amazon ネットワークを離れることもありません。VPC は、ネットワークトラフィックの可用性リスクや帯域幅の制約 AWS STS なしに、 に安全に接続されます。詳細については、「[AWS STS インターフェイス VPC エンドポイントの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_sts_vpce.html)」を参照してください。

**( AWS Security Token Service STS) のアクセスを設定するには**

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

1. ナビゲーションペインで、**[エンドポイント]** を選択します。

1. [**エンドポイントの作成**] を選択します。

1. インターフェイスタイプのエンドポイントの **サービス名** `com.amazonaws.region.sts` を選択します。

1. Neptune DB インスタンスと EC2 インスタンスが含まれている **VPC** を選択します。

1. EC2 インスタンスが存在するサブネットの横にあるチェックボックスを選択します。同じアベイラビリティーゾーンから複数のサブネットを選択することはできません。

1. [IP address type] (IP アドレスのタイプ) で、次のオプションから選択します。
   + **[IPv4]** — IPv4 アドレスをエンドポイントのネットワークインターフェイスに割り当てます。このオプションは、選択したすべてのサブネットに IPv4 アドレス範囲がある場合にのみサポートされます。
   + **[IPv6]** — IPv6 アドレスをエンドポイントのネットワークインターフェイスに割り当てます。このオプションは、選択されたすべてのサブネットが IPv6 のみのサブネットである場合にのみサポートされます。
   + **[Dualstack]** — IPv4 と IPv6 の両方のアドレスをエンドポイントのネットワークインターフェイスに割り当てます。このオプションは、選択されたすべてのサブネットに IPv4 と IPv6 両方のアドレス範囲がある場合にのみサポートされます。

1. **[セキュリティグループ]** で、VPC エンドポイントのエンドポイントネットワークインターフェイスに関連付けるセキュリティグループを選択します。Neptune DB インスタンスと EC2 インスタンスにアタッチされているすべてのセキュリティグループを選択する必要があります。

1. **[Policy]** (ポリシー) で **[Full access]** (フルアクセス) を選択して、すべてのリソースに対するすべてのプリンシパルによる VPC エンドポイント経由のすべてのオペレーションを許可します。それ以外の場合は、**[Custom]** (カスタム) を選択して、VPC エンドポイント経由でリソースに対してアクションを実行するためにプリンシパルが持つ許可を制御する VPC エンドポイントポリシーをアタッチします。このオプションは、サービスが VPC エンドポイントポリシーをサポートしている場合にのみ使用できます。詳細については、「[エンドポイントポリシー](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」を参照してください。

1. (*オプション*) タグを追加するには、**[新しいタグを追加]** を選択し、そのタグのキーと値を入力します。

1. **エンドポイントの作成** を選択します。

エンドポイント作成の詳細については、「Amazon VPC ユーザーガイド」の「[VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)」を参照してください。Amazon STS VPC エンドポイントは IAM ロール連鎖に必要な前提条件であることに注意してください。

 AWS STS エンドポイントへのアクセスを許可したので、データのロードを準備できます。サポートされる形式の詳細については、「[データ読み込み形式](bulk-load-tutorial-format.md)」を参照してください。

## ローダーコマンド内でのロールの連鎖
<a name="bulk-load-tutorial-loader-chain"></a>

`iamRoleArn` パラメータにロールの ARN のカンマ区切りリストを含めることによって、ローダーコマンドの実行時にロールの連鎖を指定できます。

ほとんどの場合、チェーンに含める必要があるのは 2 つのロールだけですが、3 つ以上のロールを連鎖することも可能です。例えば、このローダーコマンドは次の 3 つのロールを連鎖します。

```
curl -X POST https://localhost:8182/loader \
  -H 'Content-Type: application/json' \
  -d '{
        "source" : "s3://(the target bucket name)/(the target date file name)",
        "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)",
        "format" : "csv",
        "region" : "us-east-1"
      }'
```