Redshift

Redshift接続の設定方法と利用方法について説明します。

Codatumを使用して、Redshiftのデータに接続、クエリ、管理ができます。

設定方法

Redshift連携は、RA3ノードのクラスターとサーバーレスを対象とします。

1. AWSコンソールで必要な準備を行う

1. DBにおける必要な権限の付与

連携用のロールを作成し、権限を付与します。

  • 使用したいスキーマに対する USAGE 権限をそのロールに付与する

  • 使用したいテーブルに対する SELECT 権限をそのロールに付与する

  • システムビュー svv_table_info に対する SELECT 権限をそのロールに付与する

2. Secrets ManagerでSecretの作成

  • 接続したいData Warehouseを指定し、Secretを作成する

  • 作成したSecretに RedshiftDataFullAccess というタグを追加する(Valueは空でOK)

3. IAMユーザーの作成とポリシーの付与

  • 連携用のIAMユーザーを作成し、 以下のポリシーを付与する

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DataAPIPermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:BatchExecuteStatement",
                "redshift-data:ExecuteStatement",
                "redshift-data:CancelStatement",
                "redshift-data:ListStatements",
                "redshift-data:GetStatementResult",
                "redshift-data:DescribeStatement",
                "redshift-data:ListDatabases",
                "redshift-data:ListSchemas",
                "redshift-data:ListTables",
                "redshift-data:DescribeTable"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SecretsManagerPermissions",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "1-2で作成したSecretのARNを指定する"
            ],
            "Condition": {
                "StringLike": {
                    "secretsmanager:ResourceTag/RedshiftDataFullAccess": "*"
                }
            }
        },
        {
            "Sid": "ServiceLinkedRole",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/redshift-data.amazonaws.com/AWSServiceRoleForRedshift",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "redshift-data.amazonaws.com"
                }
            }
        }
    ]
}

4. サーバーレスの場合のみ、追加で以下の対応が必要

  • 連携するWorkgroupに RedshiftDataFullAccess というタグを追加する(Valueは空でOK)

  • IAMで以下のポリシーを作成し、IAMユーザーに付与する

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ServerlessWorkgroupInfo",
            "Effect": "Allow",
            "Action": [
                "redshift-serverless:GetWorkgroup"
            ],
            "Resource": "*"
        }
    ]
}

2. CodatumにRedshiftコネクションを登録する

最後に、CodatumでRedshiftコネクションを作成します。

  • ワークスペース設定コネクションからコネクションを追加を選択

  • コネクション名を入力

  • アクセスレベルを選択

  • アカウントID を入力

    • AWSのアカウントIDです。

  • リージョン を入力

    • Redshiftリソースが属しているリージョンです。

  • 接続タイプ を選択

    • クラスターを選択した場合

      • クラスター識別子 を入力

      • デフォルトデータベース を入力

        • 接続先のデータベースです。この設定は、クエリ可能なデータベース、スキーマ、テーブルを制限するものではありません。

    • サーバーレスを選択した場合

      • サーバーレス 名前空間 を入力

      • サーバーレス ワークグループ名 を入力

      • デフォルトデータベース を入力

        • 接続先のデータベースです。この設定は、クエリ可能なデータベース、スキーマ、テーブルを制限するものではありません。

  • AWS アクセスキー を入力

    • ステップ1で準備したIAMユーザーのアクセスキーを使用します。

  • AWS シークレットアクセスキー を入力

    • ステップ1で準備したIAMユーザーのシークレットアクセスキーを使用します。

  • シークレットARN を入力

    • ステップ1で準備したSecretのシークレットARNを使用します。

入力が完了したら、接続テストを行った後、コネクションを保存してください。

最終更新

役に立ちましたか?