この記事では、アカウントAにあるEC2からアカウントBのRedshiftへのアクセス方法について紹介します。
構成
AアカウントとBアカウントが以下の構造を持つと仮定します。
アカウントA
・vpc-ec2
・subnet-ec2
・ec2
アカウントB
・vpc-redshift
・subnet-redshift
・redshift
上記のように、AアカウントのEC2からBアカウントのRedshiftにアクセスするには、VPCピアリングを使用して接続することができます。
#1 VPCピアリング接続を作ります
アカウントAで:
VPCコンソール画面を開き、サイドバー配下の「ピアリング接続」タグを選択し、「ピアリング接続の作成」ボタンをクリックします。
って、一番した「ピアリング接続を作成」ボタンをクリックして、「承認待ち」状態になります。
TIP:ここでエラーが発生した場合、最も可能性が高い原因は、CIDRの範囲が重複していることです。
アカウントBで:
同じように、VPCコンソール画面配下の「ピアリング接続」を選択して、先ほど作成したピアリング接続のリクエストが見えます。リクエストを選んで、受け入れたら、ピアリングの状態は「アクティブ」になります。
#2 ルートテーブル編集
アカウントAで:
EC2詳細画面で、ルートテーブルのリンクをクリックして、ルートテーブル画面を開きます。
ルートテーブル画面で、アクションを選んで、ルート編集をクリックすると、編集画面を開きます。新しいルートを追加する
送信先:アカウントBのCIDR
ターゲット:ピアリング接続
先ほど作成したピアリング接続を選択します。(pcx-xxxx)
アカウントBで:
アカウントAと同様に、ルートを追加します。ただし、CIDRが逆です。
送信先:アカウントAのCIDR
ターゲット:ピアリング接続 (先ほど作成したピアリング接続)
#3 セキュリティグループ設定
アカウントAで
EC2に関連付けていたセキュリティグループに
インバウンドルールを1つ追加します:
ポート範囲:5439
ソース:redshift(サブネット/VPC/セキュリティグループ)のCIDR
アカウントBで
Redshiftに関連付けているセキュリティグループに
インバウンドルールを1つ追加します:
ポート範囲:5439
ソース: EC2(サブネット/VPC/セキュリティグループ)のCIDR
#4 接続してみます
設定終わったら、 EC2でpsqlを発行しましょう!
コマンドは:
psql -U username -h redshiftホスト(ipやエンドポイント皆可) -d databasename -p 5439