Glueの使い方的な㉔(S3からRedshiftにロード_準備編)

ここでは、S3からRedshiftにロードする際の準備を行います。
後編でGlueを使ってS3からRedshiftへのロードを行います。

前編で作成される構成は以下です。

![glue_redshift-Page-2.png](https://qiita-image-store.s3.amazonaws.com/0/27932/2e9ac269-401f-57d6-8c3f-3cd1176a1814.png)


# 全体の流れ

* VPC作成(既に作成済ならそれでもOK。)
* Redshift接続用EC2作成(既に作成済ならそれでもOK)
* 自己参照セキュリティグループ(自己参照ルールを持つセキュリティグループ)作成
* Redshift作成

# VPC作成(既に作成済ならそれでもOK)

##### 作成される構成

![glue_redshift-Page-3.png](https://qiita-image-store.s3.amazonaws.com/0/27932/5285b404-2c47-f64f-d48b-265db6bf1f4b.png)


VPCの画面から、左側メニューの"VPCダッシュボード"をクリックし、[VPCの作成]をクリック

![スクリーンショット 0030-09-09 20.42.01.png](https://qiita-image-store.s3.amazonaws.com/0/27932/939613d9-f63d-cae5-cae7-5befe59f855a.png)

"パブリックとプライベートサブネットを持つVPC"をクリックし、[選択]をクリック

![スクリーンショット 0030-09-09 20.42.34.png](https://qiita-image-store.s3.amazonaws.com/0/27932/4bea0bf9-37fd-9915-b7a6-c293f67d0bb9.png)

以下を入力し、[作成]をクリックする

VPC名：demo1-vpc (任意)
アベイラビリティゾーン：ap-northeast-1a (任意)
パブリックサブネット名：demo1-front-1a (任意)
アベイラビリティゾーン：ap-northeast-1a (任意)
パブリックサブネット名：demo1-back-1a (任意)
Elastic IP 割当てID：　(適当なEIPを選択。なければ作成しておく)
サービスエンドポイント：com.amazonaws.ap-northeast-1.s3
サブネット：プライベートサブネット

![スクリーンショット 0030-09-09 20.45.38.png](https://qiita-image-store.s3.amazonaws.com/0/27932/b0703330-fc7a-4e5e-7fca-b06f6f89879b.png)

#### (補足)既に作成されたVPCの場合はここを確認

"DNS解決"、"DNSホスト名"が両方"はい"になっていること

![スクリーンショット 0030-09-09 20.53.58.png](https://qiita-image-store.s3.amazonaws.com/0/27932/2d582648-9711-3cfa-8308-ded8aed3d521.png)

NATGWとVPCEndpointS3を作成した状態で、プライベートサブネットのルートに、NATGWへのルートとVPCEndpointS3があること

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f32373933322f62633339333063662d323532642d643166332d616663312d3864343139323366303062332e706e67.png](https://qiita-image-store.s3.amazonaws.com/0/27932/5a521616-0d62-9079-c61e-2879daf48141.png)

# Redshift接続用EC2作成(既に作成済ならそれでもOK)

##### 作成される構成

![glue_redshift-Page-8.png](https://qiita-image-store.s3.amazonaws.com/0/27932/0dddbe58-2721-c847-2b30-9f0c5b5ddc2a.png)

作成したVPCのパブリックサブネットにEC2を作成
セキュリティグループを作成し、22ポートを許可
Redshift接続のためにyum install -y postgresqlしておく

# 自己参照セキュリティグループ(自己参照ルールを持つセキュリティグループ)作成

自分自身のセキュリティグループIDから通信を許可したセキュリティグループ
後編でGlueが利用するセキュリティグループです。

##### 作成される構成

![glue_redshift-Page-10.png](https://qiita-image-store.s3.amazonaws.com/0/27932/02ad6523-47f5-4979-0ee7-0dc0c8a4655b.png)

VPCの画面で、左側メニューのセキュリティグループをクリックし、[セキュリティグループの作成]をクリックする

![スクリーンショット 0030-09-09 21.06.51.png](https://qiita-image-store.s3.amazonaws.com/0/27932/6119217e-c20b-a6b3-1d64-323d910bc6a3.png)

以下を入力し、[はい、作成する]をクリックする
名前タグ：se2-glue-jikosansho-sg1 (任意)
グループ名：se2-glue-jikosansho-sg1 (任意)
説明：se2-glue-jikosansho-sg1 (任意)
VPC：demo1-vpc (先程作成したやつ、既存のVPC使うならそれを)

![スクリーンショット 0030-09-09 21.38.16.png](https://qiita-image-store.s3.amazonaws.com/0/27932/72a1abf4-ba42-7bfe-5d24-3e1896ad4157.png)

作成したセキュリティグループにチェックを入れ、"インバウンドルール"タブをクリックし、[編集]をクリックする

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f32373933322f63396133343233662d343231632d623861362d623565392d3035653431353933626538352e706e67.png](https://qiita-image-store.s3.amazonaws.com/0/27932/03e059ed-d414-4d3e-0c84-0ed50bfa5925.png)


すべてのトラフィックを許可するルールを１つ追加する。この際の送信元を自分のセキュリティグループIDにする。入力したら[保存]をクリックする
※これは自己参照ルールと呼ばれる
※Glueの接続(VPC内リソースにつなぐ定義)を使う場合は必須のルール

タイプ：すべてのトラフィック
ソース：(自分のセキュリティグループのID)

![スクリーンショット 0030-09-10 9.05.14.png](https://qiita-image-store.s3.amazonaws.com/0/27932/18622c87-fd2d-228d-8468-d2f0607f1e59.png)

# Redshift作成

##### 作成される構成

![glue_redshift-Page-9.png](https://qiita-image-store.s3.amazonaws.com/0/27932/98e6ce48-165c-8d41-0185-4f69f3e493e1.png)


### Redshift用のセキュリティグループ作成

VPCの画面で、左側メニューのセキュリティグループをクリックし、[セキュリティグループの作成]をクリックする

![スクリーンショット 0030-09-09 21.06.51.png](https://qiita-image-store.s3.amazonaws.com/0/27932/6119217e-c20b-a6b3-1d64-323d910bc6a3.png)

以下を入力し、[はい、作成する]をクリックする。ルールは後で作成する。
名前タグ：se2-gluetest-dwh1-sg-private (任意)
グループ名：se2-gluetest-dwh1-sg-private (任意)
説明：se2-gluetest-dwh1-sg-private (任意)
VPC：demo1-vpc (先程作成したやつ、既存のVPC使うならそれを)

![スクリーンショット 0030-09-09 21.32.58.png](https://qiita-image-store.s3.amazonaws.com/0/27932/283ce663-a241-0113-b114-2eb199ba2e76.png)

### セキュリティグループルール作成

VPCの画面から、左側メニューでセキュリティグループをクリックし、"se2-gluetest-dwh1-sg-private"にチェックを入れ、インバウンドのタブをクリックし、[編集]をクリックする

![スクリーンショット 0030-09-10 6.55.44.png](https://qiita-image-store.s3.amazonaws.com/0/27932/8462e2f1-db0d-780a-79bb-e437b95dbc25.png)

以下の２つのルールを追加し[保存]をクリックする
Redshift接続用に作成したEC2のIPからの5439ポートの許可
前に作成した自己参照セキュリティグループからのALL TCPポートの許可

![スクリーンショット 0030-09-10 7.00.41.png](https://qiita-image-store.s3.amazonaws.com/0/27932/c5189dfb-4db4-1858-04c7-65b62bae0bf1.png)

### サブネットグループ作成

Redshiftの画面で、右側メニューから"セキュリティ"をクリックし、"サブネットグループ"タブをクリックし、[クラスターサブネットグループの作成]をクリックする

![スクリーンショット 0030-09-09 21.22.11.png](https://qiita-image-store.s3.amazonaws.com/0/27932/adb06fc7-fc6e-66f8-bd58-102822ae299f.png)

以下を入力し、[作成]をクリックする
名前：se2-dwh-sg1
説明：se2-dwh-sg1
VPC：demo1-vpc
アベイラビリティゾーン：ap-northeast-1a
サブネットID:demo1-back-1a を選び[追加]をクリック

![スクリーンショット 0030-09-10 7.32.53.png](https://qiita-image-store.s3.amazonaws.com/0/27932/3893eeaa-c60e-7bae-a714-66acdae6fec5.png)

### クラスタ作成

Redshiftの画面から、[クラスターの起動]をクリックする

![スクリーンショット 0030-09-09 21.00.13.png](https://qiita-image-store.s3.amazonaws.com/0/27932/56409e05-f7a7-6364-a775-797654621752.png)

以下を入力し、[次へ]をクリックする。
クラスター識別子：se2-gluetest-dwh1
データベース名:db
マスターユーザー名：admin
パスワード：(任意)

次の画面で任意のインスタンスタイプを選び[次へ]をクリックする。(試すだけならそのままでよい)

![スクリーンショット 0030-09-09 21.18.06.png](https://qiita-image-store.s3.amazonaws.com/0/27932/7528f89b-317c-8850-5890-42c0bca7fe62.png)

以下を入力し、[次へ]をクリックする

VPCの選択:demo1-vpc
クラスターサブネットグループ：se2-dwh-sg1
VPCセキュリティグループ：se2-gluetest-dwh1-sg-private 

![スクリーンショット 0030-09-10 9.20.11.png](https://qiita-image-store.s3.amazonaws.com/0/27932/c63b46e7-1abd-b3a0-18c8-566a39800145.png)

##　※Glueにおける自己参照ルールの補足

https://qiita.com/pioho07/items/7223c77f341b7909431e

## こちらも是非

Glueの使い方的な㉕(S3からRedshiftにロード_実行編)
https://qiita.com/pioho07/items/3a07cf6dccb8dfe046ff

JDBC データストアに接続するための VPC の設定
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/setup-vpc-for-glue-access.html

Glueの使い方まとめ
https://qiita.com/pioho07/items/32f76a16cbf49f9f712f