0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2からRedshift Serverlessを操作する

Posted at

やること

Redshift Serverlessを起動し、EC2から操作する。

RedshiftServerless.jpg

手順

①EC2起動・設定
②Redshift Spectrum用IAMロールを作成(今回の目標達成においては不要)
③Redshift Serverless起動
④EC2から操作

①EC2起動・設定

AWSマネジメントコンソールから以下設定にてEC2インスタンスを起動します。
※起動方法は割愛します。
名前:適当な名前(ここではRedshiftTest)
AMI:Amazon Linux 2023
キーペア:新規作成
他:基本的にデフォルト

インスタンスの状態:実行中
ステータスチェック:2/2のチェックに合格しました
となればOKです。
image.png

起動が完了したら、お好みのリモートログオンソフトでSSH接続します。
(今回はTeraTermを使います。)
接続の際は起動したEC2インスタンスのパブリックIPアドレス、ユーザー名(ec2-user)、作成した秘密鍵を使用します。
image.png

接続できたら、psqること
Redshift Serverlessを起動し、EC2から操作する。

RedshiftServerless.jpg

手順

①EC2起動・設定
②Redshift Serverless起動
③EC2から操作

①EC2起動・設定

AWSマネジメントコンソールから以下設定にてEC2インスタンスを起動します。
※起動方法は割愛します。
名前:適当な名前(ここではRedshiftTest)
AMI:Amazon Linux 2023
キーペア:新規作成
他:基本的にデフォルト

インスタンスの状態:実行中
ステータスチェック:2/2のチェックに合格しました
となればOKです。
image.png

起動が完了したら、お好みのリモートログオンソフトでSSH接続します。
(今回はTeraTermを使います。)
接続の際は起動したEC2インスタンスのパブリックIPアドレス、ユーザー名(ec2-user)、作成した秘密鍵を使用します。
image.png

接続できたら、RedshiftをEC2からコマンド操作できるように設定します。
以下コマンドでpsqlコマンドラインクライアントをインストールします。

sudo dnf install postgresql15

Is this ok [y/N]:と聞かれた際はYと答えます。

以下のようにComplete!と表示されればOKです。
image.png

以下コマンドにてpsqlコマンドが使えつことを確認します。

psql --version

以下のようにインストールしたバージョンが表示されればOKです。
image.png

以上にてEC2の起動・設定は完了です。

②Redshift Spectrum用IAMロールを作成

今回の目標達成においては不要ですが、Redshiftの重要機能の一つであるRedshift Spectrumを利用することを見据え、Redshift Spectrum用IAMロールを作成します。
※Redshift Spectrum:RedshiftテーブルにデータをロードすることなくS3に対してクエリする機能。

まずは、以下手順にてIAMポリシーを作成します。
サイドバーのアクセス管理>ポリシーを選択し、ポリシーを作成をクリック。
image.png

JSONを指定し、以下のように編集し、次へ。
image.png

{
    "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が追加されていることを確認してポリシーの作成。
image.png

次に、以下手順IAMロールを作成します。

サイドバーのアクセス管理>ロールを選択し、ロールを作成をクリック。
image.png

以下内容を入力し、次へ。
信頼されたエンティティタイプ:AWSのサービス
ユースケース>サービスまたはユースケース:Redshift
image.png

許可ポリシーにて先ほど作成したIAMポリシーを選択して次へ。
image.png

任意のIAMロール名を入力し、IAMロールを作成。

※Redshift Spectrumを利用する際には作成したIAMロールのARNを使います。
image.png

以上にて、IAMロールの作成は完了です。

③Redshift Serverless起動

AWSマネジメントコンソールから以下設定にてRedshift Serverlessを起動します。

サイドバーからRedshift Serverlessを選択
image.png

もう一度サイドバーを開き、サーバレスダッシュボードを選択
image.png

ワークグループを作成をクリック
image.png

ワークグループの名前:任意の名前
(今回はredshift-test)
image.png

ネットワークとセキュリティ:任意のVPC、サブネットを選択
image.png

ただし、セキュリティグループはインバウンドルールにてポート番号:5439(Redshift)が許可されていることが必須です。(許可しないとEC2から接続できません。)
※ソースは使用するEC2インスタンスがアクセスできるように指定してください。
image.png

それ以外はデフォルトのまま次へ

名前空間:任意の名前
(今回はredshift-test)
image.png

データベース名:デフォルト(dev)
管理者ユーザーの認証情報をカスタマイズにチェックを入れる。
管理者ユーザー名:任意のユーザー名(今回はデフォルト:admin)
管理者ユーザーパスワード:任意のパスワード
image.png

許可>IAMロールを関連付ける>先ほど作成したIAMロールを選択しアタッチ
image.png
image.png

他はデフォルトのまま、作成。

以下のように、名前空間/ワークグループ共に状態がAvailableになればOK。
image.png

以上でRedshift Serverlessの起動は完了です。

④EC2から操作

psqlコマンドにてEC2からRedshift Serverlessへ接続します。
コマンドは以下です。

psql -h Redshift Serverlessホスト名 -U ユーザー名(今回はadmin) -p 5439 -d データベース名(今回はdev)

Redshift Serverlessホスト名は以下手順で確認します。

先ほど作成したワークグループをクリック
image.png

エンドポイントがホスト名
image.png
ただし、: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コマンド実行後、パスワード入力を求められるため、上記で設定したパスワードを入力します。
その後、データベース名=#のプロンプトになれば接続成功です!
image.png

スキーマ確認、現在接続しているスキーマに紐づくテーブル確認、スキーマ切り替えは以下コマンドで実行します。

# スキーマ確認
\dn

# 現在接続しているスキーマに紐づくテーブル確認
\d

# スキーマ切り替え
SET search_path TO スキーマ名

以上でEC2からの操作は完了です。

参考にさせていただいた記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?