
コーヒーが好きな木谷映見です。
手元に BI ツールが無くても、EC2 インスタンスから接続しちゃえばいいじゃない。
ということで、Amazon Redshift Serverless の検証をするため、手軽に検証環境を作ります。
- 構成図
 - VPC と サブネットを作成する
 - IAM ロールを作成する
 - EC2 インスタンスを構築し、psql をインストールする
 - Redshift Serverless を作成する
 - EC2 インスタンスから Redshift Serverless に接続する
 - 参考
 
構成図
東京リージョンの Amazon VPC 内に Redshift Serverless を構築します。
Redshift Serverless に接続して操作を行うためのクライアントとして、パブリックサブネットに EC2 インスタンスを 1 台作成し、セッションマネージャーで手元の端末から接続できるようにしておきます。

VPC と サブネットを作成する
VPC の作成手順は割愛します。構成図をご参照ください。
IAM ロールを作成する
まず、EC2 インスタンス用と Redshift 用に 2 つ IAM ロールを作成します。

EC2 用 IAM ロールを作成する
以下のような IAM ロールを作成します。
- 名前
- 任意の名前
- 例)yyMMdd_AmazonSSMManagedInstanceCoreRole
 
 
 - 任意の名前
 - 許可ポリシー(ID ベースのポリシー)
AmazonSSMManagedInstanceCore- セッションマネージャーを使うのに必要なポリシー
 
 - 信頼されたエンティティ(IAM ロールの信頼ポリシー)
Principalにec2.amazonaws.comを指定- IAM ロールを付与する AWS サービスを指定
 
 
Redshift 用 IAM ロールを作成する
以下のような IAM ロールを作成します。
- 名前
- 任意の名前
- 例)yyMMdd_RedshiftServerlessRole
 
 
 - 任意の名前
 - 許可ポリシー(ID ベースのポリシー)
AmazonRedshiftAllCommandsFullAccess- Redshift 上のデータを COPY、LOAD、UNLOAD、クエリ、分析のための SQL コマンドを実行する権限必要なポリシー
 - Amazon S3、Amazon CloudWatch ログ、Amazon SageMaker、AWS Glueなどの関連サービスに対する select 文の実行権限
 
 - 信頼されたエンティティ(IAM ロールの信頼ポリシー)
Principalにredshift.amazonaws.com、redshift-serverless.amazonaws.comを指定- IAM ロールを付与する AWS サービスを指定
 
 
今回は接続して簡単な SQL コマンドを実行してみるだけなので多くの権限は不要なのですが、例として AWS マネージドポリシーである AmazonRedshiftAllCommandsFullAccess を付与しています。
EC2 インスタンスを構築し、psql をインストールする
以下のような EC2 インスタンスを作成します。

| 設定項目 | パラメータ | 備考 | 
|---|---|---|
| 名前とタグ | client | 任意の名前 | 
| AMI ID | ami-078296f82eb463377 | Amazon Linux 2 Kernel 5.10 AMI 2.0.20220912.1 x86_64 HVM gp2(20221004 時点のデフォルト AMI) | 
| セキュリティグループ | client-sg | HTTP ポート 80 マイ IP からのインバウンド許可 | 
| IAM インスタンスプロフィール | EC2 用 IAM ロールを作成する で作成した IAM ロールを指定 | セッションマネージャーでログインするため | 
EC2 インスタンスが起動したら、セッションマネージャーでログインします。
Amazon Redshift Serverless への接続確認用に、psql が使用できるようにしておきます。

以下コマンドを実行して psql をインストールします。
sudo yum install postgresql
実行結果
sh-4.2$ sudo yum install postgresql Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core | 3.7 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package postgresql.x86_64 0:9.2.24-8.amzn2 will be installed --> Processing Dependency: postgresql-libs(x86-64) = 9.2.24-8.amzn2 for package: postgresql-9.2.24-8.amzn2.x86_64 --> Processing Dependency: libpq.so.5()(64bit) for package: postgresql-9.2.24-8.amzn2.x86_64 --> Running transaction check ---> Package postgresql-libs.x86_64 0:9.2.24-8.amzn2 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================================================================================= Package Arch Version Repository Size ================================================================================================================================================================================================================= Installing: postgresql x86_64 9.2.24-8.amzn2 amzn2-core 3.0 M Installing for dependencies: postgresql-libs x86_64 9.2.24-8.amzn2 amzn2-core 232 k Transaction Summary ================================================================================================================================================================================================================= Install 1 Package (+1 Dependent package) Total download size: 3.3 M Installed size: 17 M Is this ok [y/d/N]: y Downloading packages: (1/2): postgresql-libs-9.2.24-8.amzn2.x86_64.rpm | 232 kB 00:00:00 (2/2): postgresql-9.2.24-8.amzn2.x86_64.rpm | 3.0 MB 00:00:00 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 15 MB/s | 3.3 MB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : postgresql-libs-9.2.24-8.amzn2.x86_64 1/2 Installing : postgresql-9.2.24-8.amzn2.x86_64 2/2 Verifying : postgresql-9.2.24-8.amzn2.x86_64 1/2 Verifying : postgresql-libs-9.2.24-8.amzn2.x86_64 2/2 Installed: postgresql.x86_64 0:9.2.24-8.amzn2 Dependency Installed: postgresql-libs.x86_64 0:9.2.24-8.amzn2 Complete! sh-4.2$
インストールした psql のバージョンを確認します。
psql --version
実行結果
sh-4.2$ psql --version psql (PostgreSQL) 9.2.24 sh-4.2$
psql とは PostgreSQL の管理ツールの一つで、対話的にデータベースやテーブルを作成したりデータの追加や取得操作することができるコマンドライン型のツールです。
Redshift Serverless を作成する
以下のような Redshift Serverless を作成します。

記載していない設定はデフォルトのままです。
| 設定項目 | パラメータ | 備考 | 
|---|---|---|
| 名前空間の名前 | 2022mmdd-namespace | 任意の名前 | 
| 管理者ユーザー名 | rsadmin | 任意の管理者ユーザー名 | 
| 管理者パスワード | ************ | 任意のパスワード | 
| IAM ロール | Redshift 用 IAM ロールを作成するで作成した IAM ロールを指定 | Redshift で SQL コマンドを実行するため | 
| ワークグループの名前 | 2022mmdd-workgroup | 任意の名前 | 
| セキュリティグループ | redshift-serverless-sg | Redshift ポート 5439 client-sg からのインバウンド許可 | 
| VPC、サブネット | 3 つの AZ にまたがる 3 つのサブネットを選択する | 図を参照 | 
EC2 インスタンスから Redshift Serverless に接続する
psql をインストールしておいた EC2 インスタンスから Redshift Serverless にログインします。

ログイン時に Redshift Serverless のエンドポイント必要なので、コピーしておきます。

以下ログインコマンドでログインします。
dev は、デフォルトで作成されるデータベース名です。
途中パスワードを求められるので、Redshift Serverless の名前空間作成時に指定した管理者パスワードを入力してください。
構文
psql -h <Redshift Serverless エンドポイント> -U <管理者ユーザー名> -d dev -p 5439
実行結果
sh-4.2$ psql -h 20220929-workgp.xxxxxxxxxxxx.ap-northeast-1.redshift-serverless.amazonaws.com -U rsadmin -d dev -p 5439
Password for user rsadmin:
psql (9.2.24, server 8.0.2)
WARNING: psql version 9.2, server version 8.0.
         Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.
dev=#
ログインできました!
\l で、存在するデータベース一覧を確認してみます。
実行結果
dev=# \l
                  List of databases
     name     | owner | encoding | access privileges
--------------+-------+----------+-------------------
 dev          | rdsdb | UNICODE  |
 padb_harvest | rdsdb | UNICODE  |
 template0    | rdsdb | UNICODE  | rdsdb=CT/rdsdb
 template1    | rdsdb | UNICODE  | rdsdb=CT/rdsdb
(4 rows)
dev=# 
お好きなコマンドで遊んでください。
ログアウトは \q コマンドを入力するか、Ctr + d を押下です。
参考
psql ツールを使用してクラスターに接続する - Amazon Redshift
emi kitani(執筆記事の一覧)
AS部LX課。2022/2入社、コーヒーとサウナが好きです。執筆活動に興味があります。AWS認定12冠。