やること
Redshift Serverlessを起動し、EC2から操作する。
手順
①EC2起動・設定
②Redshift Spectrum用IAMロールを作成(今回の目標達成においては不要)
③Redshift Serverless起動
④EC2から操作
①EC2起動・設定
AWSマネジメントコンソールから以下設定にてEC2インスタンスを起動します。
※起動方法は割愛します。
名前:適当な名前(ここではRedshiftTest)
AMI:Amazon Linux 2023
キーペア:新規作成
他:基本的にデフォルト
インスタンスの状態:実行中
ステータスチェック:2/2のチェックに合格しました
となればOKです。
起動が完了したら、お好みのリモートログオンソフトでSSH接続します。
(今回はTeraTermを使います。)
接続の際は起動したEC2インスタンスのパブリックIPアドレス、ユーザー名(ec2-user)、作成した秘密鍵を使用します。
接続できたら、psqること
Redshift Serverlessを起動し、EC2から操作する。
手順
①EC2起動・設定
②Redshift Serverless起動
③EC2から操作
①EC2起動・設定
AWSマネジメントコンソールから以下設定にてEC2インスタンスを起動します。
※起動方法は割愛します。
名前:適当な名前(ここではRedshiftTest)
AMI:Amazon Linux 2023
キーペア:新規作成
他:基本的にデフォルト
インスタンスの状態:実行中
ステータスチェック:2/2のチェックに合格しました
となればOKです。
起動が完了したら、お好みのリモートログオンソフトでSSH接続します。
(今回はTeraTermを使います。)
接続の際は起動したEC2インスタンスのパブリックIPアドレス、ユーザー名(ec2-user)、作成した秘密鍵を使用します。
接続できたら、RedshiftをEC2からコマンド操作できるように設定します。
以下コマンドでpsqlコマンドラインクライアントをインストールします。
sudo dnf install postgresql15
Is this ok [y/N]:と聞かれた際はYと答えます。
以下コマンドにてpsqlコマンドが使えつことを確認します。
psql --version
以下のようにインストールしたバージョンが表示されればOKです。
以上にてEC2の起動・設定は完了です。
②Redshift Spectrum用IAMロールを作成
今回の目標達成においては不要ですが、Redshiftの重要機能の一つであるRedshift Spectrumを利用することを見据え、Redshift Spectrum用IAMロールを作成します。
※Redshift Spectrum:RedshiftテーブルにデータをロードすることなくS3に対してクエリする機能。
まずは、以下手順にてIAMポリシーを作成します。
サイドバーのアクセス管理>ポリシーを選択し、ポリシーを作成をクリック。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListMultipartUploadParts",
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"glue:CreateDatabase",
"glue:DeleteDatabase",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:UpdateDatabase",
"glue:CreateTable",
"glue:DeleteTable",
"glue:BatchDeleteTable",
"glue:UpdateTable",
"glue:GetTable",
"glue:GetTables",
"glue:BatchCreatePartition",
"glue:CreatePartition",
"glue:DeletePartition",
"glue:BatchDeletePartition",
"glue:UpdatePartition",
"glue:GetPartition",
"glue:GetPartitions",
"glue:BatchGetPartition"
],
"Resource": [
"*"
]
}
]
}
ポリシー名:任意の名前を設定。
また以下のように、このポリシーで定義されている許可のGlueとS3が追加されていることを確認してポリシーの作成。
次に、以下手順IAMロールを作成します。
サイドバーのアクセス管理>ロールを選択し、ロールを作成をクリック。
以下内容を入力し、次へ。
信頼されたエンティティタイプ:AWSのサービス
ユースケース>サービスまたはユースケース:Redshift
許可ポリシーにて先ほど作成したIAMポリシーを選択して次へ。
任意のIAMロール名を入力し、IAMロールを作成。
※Redshift Spectrumを利用する際には作成したIAMロールのARNを使います。
以上にて、IAMロールの作成は完了です。
③Redshift Serverless起動
AWSマネジメントコンソールから以下設定にてRedshift Serverlessを起動します。
ワークグループの名前:任意の名前
(今回はredshift-test)
ただし、セキュリティグループはインバウンドルールにてポート番号:5439(Redshift)が許可されていることが必須です。(許可しないとEC2から接続できません。)
※ソースは使用するEC2インスタンスがアクセスできるように指定してください。
それ以外はデフォルトのまま次へ
データベース名:デフォルト(dev)
管理者ユーザーの認証情報をカスタマイズにチェックを入れる。
管理者ユーザー名:任意のユーザー名(今回はデフォルト:admin)
管理者ユーザーパスワード:任意のパスワード
許可>IAMロールを関連付ける>先ほど作成したIAMロールを選択しアタッチ
他はデフォルトのまま、作成。
以下のように、名前空間/ワークグループ共に状態がAvailableになればOK。
以上でRedshift Serverlessの起動は完了です。
④EC2から操作
psqlコマンドにてEC2からRedshift Serverlessへ接続します。
コマンドは以下です。
psql -h Redshift Serverlessホスト名 -U ユーザー名(今回はadmin) -p 5439 -d データベース名(今回はdev)
Redshift Serverlessホスト名は以下手順で確認します。
エンドポイントがホスト名
ただし、:5439/データベース名は不要なため、コマンドから除去する。
Ex)以下条件の場合のpsqlコマンド例
# エンドポイント
redshift-test.XXXXXXXXX.ap-northeast-1.redshift-serverless.amazonaws.com:5439/dev
# ユーザー名
admin
# データベース名
dev
# psqlコマンド
psql -h redshift-test.XXXXXXXXX.ap-northeast-1.redshift-serverless.amazonaws.com -U admin -p 5439 -d dev
作成したpsqlコマンド実行後、パスワード入力を求められるため、上記で設定したパスワードを入力します。
その後、データベース名=#のプロンプトになれば接続成功です!
スキーマ確認、現在接続しているスキーマに紐づくテーブル確認、スキーマ切り替えは以下コマンドで実行します。
# スキーマ確認
\dn
# 現在接続しているスキーマに紐づくテーブル確認
\d
# スキーマ切り替え
SET search_path TO スキーマ名
以上でEC2からの操作は完了です。
参考にさせていただいた記事