

# Amazon RDS for Db2 DB インスタンスと Amazon S3 の統合
<a name="db2-s3-integration"></a>

Amazon RDS ストアドプロシージャを使用して、Amazon RDS for Db2 DB インスタンスと Amazon Simple Storage Service (Amazon S3) バケット間でファイルを転送できます。詳細については、「[Amazon RDS for Db2 ストアドプロシージャリファレンス](db2-stored-procedures.md)」を参照してください。

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

RDS for Db2 が Amazon S3 と統合するには、RDS for Db2 がある Amazon S3 バケットに DB インスタンスがアクセスできる必要があります。この時点で S3 バケットがない場合、[バケット を作成します](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket-overview.html)。

**Topics**
+ [ステップ 1: IAM ポリシーを作成する](#db2-creating-iam-policy)
+ [ステップ 2: IAM ロールを作成して IAM ポリシーをアタッチする](#db2-creating-iam-role)
+ [ステップ 3: RDS for Db2 DB インスタンスに IAM ロールを追加する](#db2-adding-iam-role)

## ステップ 1: IAM ポリシーを作成する
<a name="db2-creating-iam-policy"></a>

このステップでは、Amazon S3 バケットからお客様の RDS DB インスタンスにファイルを転送するために必要なアクセス許可を持つ AWS Identity and Access Management (IAM) ポリシーを作成します。このステップは、S3 バケットが既に作成されていることを前提としています。詳細については、「*Amazon S3 ユーザーガイド*」の「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。

ポリシーを作成する前に、次の情報を書き留めます。
+ バケットの Amazon リソースネーム (ARN)
+ ユーザーの AWS Key Management Service (AWS KMS) キーの ARN (バケットが SSE-KMS または SSE-S3 暗号化を使用している場合)

作成する IAM ポリシーには、次の情報が含まれている必要があります。*\$1amzn-s3-demo-bucket\$1* は、実際の S3 バケット名に置き換えます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3BucketAccess",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::${amzn-s3-demo-bucket}/*",
                "arn:aws:s3:::${amzn-s3-demo-bucket}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

IAM ポリシーは、AWS マネジメントコンソール または AWS Command Line Interface (AWS CLI) を使用して作成できます。

### コンソール
<a name="creating-iam-policy-console"></a>

**Amazon S3 バケットへのアクセスを Amazon RDS に許可する IAM ポリシーを作成するには**

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

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

1. **[ポリシーを作成]** を選択し、**[JSON]** を選択します。

1. サービスごとにアクションを追加します。Amazon S3 バケットから Amazon RDS にファイルを転送するには、バケットのアクセス許可とオブジェクトのアクセス許可を選択する必要があります。

1. **[リソース]** を展開します。バケットとオブジェクトのリソースを指定する必要があります。

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

1. **[ポリシー名]** にこのポリシーの名前を入力します。

1. (オプション) **[Description (説明)]** に、ポリシーの説明を入力します。

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

### AWS CLI
<a name="creating-iam-policy-cli"></a>

**Amazon S3 バケットへのアクセスを Amazon RDS に許可する IAM ポリシーを作成するには**

1.  次の JSON ポリシードキュメントを含む JSON ファイルを作成します。*\$1amzn-s3-demo-bucket\$1* は、実際の S3 バケット名に置き換えます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowS3BucketAccess",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:AbortMultipartUpload",
                   "s3:ListBucket",
                   "s3:GetObjectVersion",
                   "s3:ListMultipartUploadParts",
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::${amzn-s3-demo-bucket}/*",
                   "arn:aws:s3:::${amzn-s3-demo-bucket}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListAllMyBuckets"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) コマンドを実行します。次の例では、*iam\$1policy\$1name* と *iam\$1policy\$1file\$1name* を IAM ポリシーの名前と、ステップ 1 で作成した JSON ファイルの名前に置き換えます。

   Linux、macOS、Unix の場合:

   ```
   aws iam create-policy \
       --policy-name iam_policy_name \
       --policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Action": [
               "kms:GenerateDataKey",
               "kms:Decrypt",
               "s3:PutObject",
               "s3:GetObject",
               "s3:AbortMultipartUpload",
               "s3:ListBucket",
               "s3:DeleteObject",
               "s3:GetObjectVersion",
               "s3:ListMultipartUploadParts"
             ],
             "Resource": [
               "arn:aws:s3:::s3_bucket_name/*",
               "arn:aws:s3:::s3_bucket_name"
             ]
           }
         ]
       }'
   ```

   Windows の場合:

   ```
   aws iam create-policy ^
       --policy-name iam_policy_name ^
       --policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
               "Action": [
                 "s3:PutObject",
                 "s3:GetObject",
                 "s3:AbortMultipartUpload",
                 "s3:ListBucket",
                 "s3:DeleteObject",
                 "s3:GetObjectVersion",
                 "s3:ListMultipartUploadParts"
               ],
               "Resource": [
                 "arn:aws:s3:::s3_bucket_name/*",
                 "arn:aws:s3:::s3_bucket_name"
               ]
           }
         ]
       }'
   ```

1. ポリシーが作成されたら、ポリシーの ARN を書き留めます。[ステップ 2: IAM ロールを作成して IAM ポリシーをアタッチする](#db2-creating-iam-role) の ARN が必要です。

IAM ポリシーの作成については、「IAM ユーザーガイド」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

## ステップ 2: IAM ロールを作成して IAM ポリシーをアタッチする
<a name="db2-creating-iam-role"></a>

このステップは、IAM ポリシーを [ステップ 1: IAM ポリシーを作成する](#db2-creating-iam-policy) で作成したことを前提としています。このステップでは、RDS for Db2 DB インスタンスの IAM ロールを作成し、ロールに IAM ポリシーをアタッチします。

AWS マネジメントコンソール または AWS CLI を使用して、DB インスタンスの IAM ロールを作成できます。

### コンソール
<a name="creating-iam-role-console"></a>

**IAM ロールを作成して IAM ポリシーをアタッチするには**

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

1. ナビゲーションペインで **[Roles]** (ロール) を選択します。

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

1. **[信頼されたエンティティタイプ]** で、**[AWS のサービス]** を選択します。

1. **[サービスまたはユースケース]** で、**[RDS]** を選択し、**[RDS ****- ****データベースにロールを追加]** を選択します。

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

1. **[アクセス許可ポリシー]** で、作成した IAM ポリシーの名前を検索して選択します。

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

1. **[ロール名]** に、ロールの名前を入力します。

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

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

### AWS CLI
<a name="creating-iam-role-cli"></a>

**IAM ロールを作成して IAM ポリシーをアタッチするには**

1. 次の JSON ポリシードキュメントを含む JSON ファイルを作成します。

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

****  

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

------

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) コマンドを実行します。次の例では、*iam\$1role\$1name* と *iam\$1assume\$1role\$1policy\$1file\$1name* を IAM ロールの名前と、ステップ 1 で作成した JSON ファイルの名前に置き換えます。

   Linux、macOS、Unix の場合:

   ```
   aws iam create-role \
       --role-name iam_role_name \
       --assume-role-policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

   Windows の場合:

   ```
   aws iam create-role ^
       --role-name iam_role_name ^
       --assume-role-policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

1. ロールが作成されたら、このロールの ARN を書き留めます。[ステップ 3: RDS for Db2 DB インスタンスに IAM ロールを追加する](#db2-adding-iam-role) の ARN が必要です。

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html) コマンドを実行します。次の例では、*iam\$1policy\$1arn* を [ステップ 1: IAM ポリシーを作成する](#db2-creating-iam-policy) で作成した IAM ポリシーの ARN に置き換えます。*iam\$1role\$1name* は、先ほど作成した IAM ロールの名前に置き換えます。

   Linux、macOS、Unix の場合:

   ```
   aws iam attach-role-policy \
      --policy-arn iam_policy_arn \
      --role-name iam_role_name
   ```

   Windows の場合:

   ```
   aws iam attach-role-policy ^
      --policy-arn iam_policy_arn ^
      --role-name iam_role_name
   ```

詳細については、*IAM ユーザーガイド*の「[IAM ユーザーにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)」を参照してください。

## ステップ 3: RDS for Db2 DB インスタンスに IAM ロールを追加する
<a name="db2-adding-iam-role"></a>

このステップでは、IAM ロールを RDS for Db2 DB インスタンスに追加します。次の要件に注意してください。
+ 必須の Amazon S3 アクセス許可ポリシーがアタッチされた IAM ロールへのアクセスが許可されている必要があります。
+ RDS for Db2 DB インスタンスには、一度に 1 つの IAM ロールのみを関連付けることができます。
+ RDS for Db2 DB インスタンスは、**[使用可能]** の状態である必要があります。

IAM ロールを DB インスタンスに追加するには、AWS マネジメントコンソール または AWS CLI を使用します。

### コンソール
<a name="db2-adding-iam-role-console"></a>

**RDS for Db2 DB インスタンスに IAM ロールを追加するには**

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

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

1. RDS for Db2 DB インスタンス名を選択します。

1. 「**接続性とセキュリティ**」 タブで、ページ下部の**IAM ロールを管理する** セクションまでスクロールダウンします。

1. **[このインスタンスに IAM ロールを追加]** で、[ステップ 2: IAM ロールを作成して IAM ポリシーをアタッチする](#db2-creating-iam-role) で作成したロールを選択します。

1. [**機能**] で、[**S3\$1INTEGRATION**] を選択します。

1. [**Add role**] を選択します。  
![\[S3_INTEGRATION 機能が DB インスタンスの IAM ロールに追加されました。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/db2-s3-integration-role.png)

### AWS CLI
<a name="db2-adding-iam-role-cli"></a>

IAM ロールを RDS for Db2 DB インスタンスに追加するには、[https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-instance.html) コマンドを実行します。次の例では、*region*、*db\$1instance\$1name*、および *iam\$1role\$1arn* を、DB インスタンスが存在する AWS リージョン の名前、DB インスタンスの名前、および「[ステップ 2: IAM ロールを作成して IAM ポリシーをアタッチする](#db2-creating-iam-role)」で作成した IAM ロールの ARN に置き換えます。

Linux、macOS、Unix の場合:

```
aws rds add-role-to-db-instance \
    --region $region \
    --db-instance-identifier $db_instance_name \
    --feature-name S3_INTEGRATION \
    --role-arn $iam_role_arn \
```

Windows の場合:

```
aws rds add-role-to-db-instance ^
    --region $region \
    --db-instance-identifier db_instance_name ^
    --feature-name S3_INTEGRATION ^
    --role-arn iam_role_arn ^
```

ロールが RDS for Db2 DB インスタンスに正常に追加されたことを確認するには、[https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) コマンドを実行します。次の例では、*db\$1instance\$1name* を DB インスタンスの名前に置き換えます。

Linux、macOS、Unix の場合:

```
aws rds describe-db-instances \
    --filters "Name=db-instance-id,Values=db_instance_name" \
    --query 'DBInstances[].AssociatedRoles'
```

Windows の場合:

```
aws rds describe-db-instances ^
    --filters "Name=db-instance-id,Values=db_instance_name" ^
    --query 'DBInstances[].AssociatedRoles'
```

このコマンドでは、次の例のような出力が生成されます。

```
[
    [
        {
            "RoleArn": "arn:aws:iam::0123456789012:role/rds-db2-s3-role",
            "FeatureName": "S3_INTEGRATION",
            "Status": "ACTIVE"
        }
    ]
]
```