Amazon RDS for Db2: Amazon S3 にデータファイルを保存するための設定

LOADコマンドを使用して、Amazon S3上のデータファイルからAmazon RDS for Db2 データベースのテーブルにロードが可能です。
当記事ではS3上のCSVファイルをAmazon RDS for Db2 データベースのテーブルにロードするための設定を説明します。

公式ドキュメント:「[Amazon S3 からデータをロードして移行する](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/db2-migration-load-from-s3.html)」の内容に基づいています。


一度設定すればよい設定です。

## 設定1: IAM ポリシーを作成する
#### 1-1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます

#### 1-2. ナビゲーションペインで、[ポリシー] を選択し、[ポリシーの作成] を選択し、[JSON] を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b916eade-598e-911d-a420-61b61157ddba.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/56cbadb3-4dc9-a37d-3477-75e3603b72d7.png)

#### 1-3. ポリシーの設定
[Amazon RDS for Db2 DB インスタンスと Amazon S3 の統合→ステップ 1: IAM ポリシーを作成する ](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/db2-s3-integration.html#db2-creating-iam-policy)を参考にポリシーをJSONで入力します。（ビジュアル画面でやっても問題ないです）

以下は一例です。
<バケット名>にはCSVを置くバケット名を入れます。 この例ではAWS Key Management Serviceは使ってないのでkmsのアクセス許可は入っていません

- <バケット名>記載例
    - arn:aws:s3:::bucketxxxx/*
    - arn:aws:s3:::bucketxxxx

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "s3rds",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::<バケット名>/*",
                "arn:aws:s3:::<バケット名>"
            ]
        }
    ]
}
```

#### 1-4. 入力が完了したら[次へ] を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e736d3d9-fc33-17ca-74c0-7f2cd6170a6a.png)

#### 1-5. [ポリシー名] にこのポリシーの名前を入力し、必要に応じてその他の情報を入力し、完了したら「ポリシーの作成」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3d3e4903-961f-ceeb-7fcf-baabd2b9aafd.png)

無事作成できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/738369b5-7b97-af37-c82b-6c6bbadcbd33.png)

## 設定2:  IAM ロールを作成して IAM ポリシーをアタッチ
#### 2-1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます

#### 2-2. ナビゲーションペインで、[ロール] を選択し、[ロールを作成] を選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3708f2ce-6f0d-dd16-51e7-cbe848f6a460.png)


#### 2-3. [信頼されたエンティティタイプ] で、[AWS サービス] を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b9c274b4-fc62-5bc2-1f3a-735e3da3b5e6.png)

#### 2-4. [サービスまたはユースケース] で、[RDS] を選択し、[RDS - Add Role to Database] を選択し、最後に[次へ]をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/2a0b6e22-9d15-9845-bf1b-0d8dbae24b4f.png)

#### 2-5. [アクセス許可ポリシー] で、作成した IAM ポリシーの名前を検索して選択し、[次へ]をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/47853ac7-cf19-8820-184d-f43c6b5e082a.png)

#### 2-6. [ロール名]に、ロールの名前を入力し、必要に応じてその他の情報を入力し、完了したら「ロールを作成」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/c52e85c0-ab31-64a1-387a-4af7286fe0d1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8d9161de-ef8d-951d-1fa0-e7f01975ddab.png)

無事作成できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/c612d033-704d-0104-bc50-594c6a22e5f7.png)

## 設定3: RDS for Db2 DBインスタンスにIAMロールを追加
#### 3-1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

#### 3-2. ナビゲーションペインで、[データベース] を選択し、対象のRDS for Db2 DB インスタンス名を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/1dcf8e8d-76c7-2665-a9e3-93e8b32dc2ab.png)

#### 3-3. 接続性とセキュリティ」 タブで、ページ下部の「IAM ロールを管理する」 セクションまでスクロールダウンします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/9553f857-443b-4f5b-b6d4-99785f273dca.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/f4584b4f-b10a-f5b1-a759-94ee1219326e.png)

#### 3-4. [このインスタンスに IAM ロールを追加] で、作成したロールを選択し、[機能] で、[S3_INTEGRATION] を選択し、最後に[ロールの追加] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e04a0edd-4dd0-526e-cb71-ccea7248e1c2.png)

[このインスタンスの現在の IAM ロール]に追加されます。最初はステータスは「保留中」ですが、しばらくすると「アクティブ」に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3af3c033-0cf7-99ef-e7bf-f3d58aa026ef.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/47613b33-65b3-728e-aa42-e5d75a1b0a68.png)

## 設定4: Amazon S3 用の VPC ゲートウェイエンドポイントを作成

#### 4-1. 使用するするRDS for Db2のVPC名を調べておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/dc7918e7-71b6-7d19-4b83-201f3d7ccd56.png)


#### 4-2. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

#### 4-3. ナビゲーションペインで、「エンドポイント」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8ca641dd-1dbe-3281-4403-6efa3d6c3da7.png)


#### 4-3. [エンドポイントを作成] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e47174b6-b874-691b-9509-e3795acf51c1.png)

#### 4-5.「サービスカテゴリ」で、「AWSのサービス」 を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/901e25fd-c7b0-dd49-fae1-bd5eaa0f9648.png)



#### 4-6.サービス で、検索窓に`タイプ=Gateway` を入力し、com.amazonaws.region .s3 を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/093f5408-4e68-10ff-c796-e4f7e86da2a3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/385148a1-cb24-aa8f-45f7-534bd968dfcf.png)

#### 4-7.「VPC」 で、エンドポイントを作成するRDS　for Db2の VPC を選択します。
4-1で確認した名前のVPCを選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/cb4a6e54-0793-4b94-c11d-4d6851071ec1.png)


#### 4-8.「ルートテーブル」で、エンドポイントで使用するルートテーブルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/7c99b0ca-a62c-9b98-95a4-dfddbab5328a.png)

#### 4-9.「ポリシー」で 「フルアクセス」 を選択
(フルアクセス以外はカスタムでポリシーを作成してください)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/c949da32-d365-88d9-35d7-3d2b27cfb1de.png)

#### 4-10. 一番下の「エンドポイントを作成」 を　クリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/09fe5dd7-bbfd-caba-d502-1effa14c5a22.png)


## 設定5: セキュリティグループにアウトバウンドルールを追加する
#### 5-1. 使用するするRDS for Db2のセキュリティグループを表示します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/2098db1b-6560-a534-2fcb-c4b6e273d8ea.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8fdc42d6-15d8-a394-9ada-15971b68df74.png)

#### 5-2. アウトバウンドルールに、S3エンドポイントへのHTTP および HTTPS トラフィックを許可
「アウトバウンド」タブをクリックし、「アウトバウンドのルールを編集」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/a4b06a8c-35ce-8566-6c0b-f99fb3de113c.png)

タイプ「HTTP」および「HTTPS」に　送信先　s3でフィルターし、プレフィックスリストからs3のエンドポイントを選択し設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/f8370a8f-5fe0-7d36-b83e-f9d04ca20469.png)

最後に「ルールの保存」をクリックして保存
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/c6546983-3204-c3df-9966-46682a658efe.png)

以上です。
あとは「[Amazon RDS for Db2: S3からデータをロード](https://qiita.com/nishikyon/items/2d1052c626bddb6637de/)」に進んでください。