

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# アカウント間で Amazon Redshift クラスターから Amazon S3 にデータをアンロードする
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3"></a>

*Andrew Kamel、Amazon Web Services*

## 概要
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-summary"></a>

アプリケーションをテストするときは、テスト環境に本番データを使用すると便利です。本番データを使用することで、開発中のアプリケーションをより正確に評価できます。

このパターンは、本番環境の Amazon Redshift クラスターから、Amazon Web Services (AWS) の開発環境の Amazon Simple Storage Service (Amazon S3) バケットにデータを抽出します。

このパターンは、以下を含む開発用アカウントと本番稼働用アカウントの両方のセットアップを段階的に行います。
+ 必要なリソース
+ AWS Identity and Access Management (IAM) ロール
+ Amazon Redshift 接続をサポートするためのサブネット、セキュリティグループ、仮想プライベートクラウド (VPC) のネットワーク調整
+ アーキテクチャをテストするための Python ランタイムを使用する AWS Lambda 関数の例

Amazon Redshift クラスターへのアクセスを許可するために、このパターンは AWS Secrets Manager を使用して関連する認証情報を保存します。Amazon Redshift クラスターの場所がわからなくても、Amazon Redshift クラスターに直接接続するために必要なすべての情報を取得できます。さらに、[シークレットの使用をモニタリング](https://docs.aws.amazon.com/secretsmanager/latest/userguide/monitoring.html)できます。

Secrets Manager に保存されるシークレットには、Amazon Redshift クラスターのホスト、データベース名、ポート、および関連する認証情報が含まれます。

このパターンを使用する際のセキュリティ上の考慮事項については、「[ベストプラクティス](#unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-best-practices)」セクションを参照してください。

## 前提条件と制限事項
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-prereqs"></a>

**前提条件**
+ 本番稼働用アカウントで[実行している Amazon Redshift クラスター](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html)
+ 開発用アカウントで[作成した S3 バケット](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)
+ 開発用アカウントと本番稼働用アカウント間の [VPC ピアリング](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html)と、それに応じて[調整されたルートテーブル](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html)
+ 両方のピア接続された VPC の[有効な DNS ホスト名および DNS 解決](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)

**制限事項**
+ クエリするデータの量によっては、Lambda 関数がタイムアウトする場合があります。

  実行に Lambda の最長タイムアウト (15 分) よりも時間がかかる場合は、Lambda コードに非同期アプローチを使用します。このパターンのコード例では、Python 用の [psycopg2](https://github.com/psycopg/psycopg2) ライブラリを使用していますが、psycopg2 は現在非同期処理をサポートしていません。
+ 一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「[AWS のサービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、「[サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」ページを参照して、サービスのリンクを選択します。

## アーキテクチャ
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-architecture"></a>

次の図は、開発用アカウントと本番稼働用アカウントが含まれるターゲットアーキテクチャを示しています。

![開発用アカウントの Lambda VPC と本番稼働用アカウントの Amazon Redshift VPC。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/fa4d01df-483d-4454-9711-b391ebbe4629.png)


この図表は、次のワークフローを示しています:

1. 開発用アカウントの Lambda 関数は、本番稼働用アカウントの Secrets Manager の Amazon Redshift 認証情報にアクセスするために必要な IAM ロールを引き受けます。

   次に、Lambda 関数は Amazon Redshift クラスターのシークレットを取得します。

1. 開発用アカウントの Lambda 関数は、この情報を使用して、ピア接続された VPC を介して本番稼働用アカウントの Amazon Redshift クラスターに接続します。

   次に、Lambda 関数はアンロードコマンドを送信して、本番稼働用アカウントの Amazon Redshift クラスターでクエリを実行します。

1. 本番稼働用アカウントの Amazon Redshift クラスターは、開発用アカウントの S3 バケットにアクセスするための関連する IAM ロールを引き受けます。

   Amazon Redshift クラスターは、クエリされたデータを開発用アカウントの S3 バケットにアンロードします。

**Amazon Redshift からのデータのクエリ**

次の図は、Amazon Redshift 認証情報を取得して Amazon Redshift クラスターに接続するために使用するロールを示しています。ワークフローは Lambda 関数が開始します。

![アカウント間でロールを引き受けるための 3 ステップのプロセス。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/ab25b72c-773c-4d58-9012-4a3755c181ff.png)


この図表は、次のワークフローを示しています:

1. 開発用アカウントの `CrossAccount-SM-Read-Role` は、本番稼働用アカウントの `SM-Read-Role` を引き受けます。

1. `SM-Read-Role` ロールは、アタッチされているポリシーを使用して Secrets Manager からシークレットを取得します。

1. 認証情報は、Amazon Redshift クラスターにアクセスにする際に使用されます。

**Simple Storage Service (Amazon S3) へのデータのアップロード**

次の図表は、データを抽出して Amazon S3 にアップロードするためのクロスアカウント読み取り/書き込みプロセスを示しています。ワークフローは Lambda 関数が開始します。パターンは [Amazon Redshift の IAM ロールを連鎖](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html#authorizing-redshift-service-chaining-roles)します。Amazon Redshift クラスターから送信されるアンロードコマンドは、`CrossAccount-S3-Write-Role` を引き受け、次に `S3-Write-Role` を引き受けます。このロールの連鎖により、Amazon Redshift は Amazon S3 にアクセスできるようになります。

![認証情報の取得、Amazon Redshift へのアクセス、Amazon S3 へのデータのアップロードを行うロール。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/d2982fc6-1d12-4f9d-9493-a99ce691d693.png)


このワークフローには、次の手順が含まれます。

1. 開発用アカウントの `CrossAccount-SM-Read-Role` は、本番稼働用アカウントの `SM-Read-Role` を引き受けます。

1. `SM-Read-Role` は、Secrets Manager から Amazon Redshift 認証情報を取得します。

1. Lambda 関数は、Amazon Redshift クラスターに接続し、クエリを送信します。

1. Amazon Redshift クラスターは `CrossAccount-S3-Write-Role` を引き受けます。

1. `CrossAccount-S3-Write-Role` は、開発用アカウントの `S3-Write-Role` を引き受けます。

1. クエリ結果は、開発用アカウントの S3 バケットにアンロードされます。

## ツール
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-tools"></a>

**AWS のサービス**
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) は、データの保護に役立つ暗号化キーの作成と制御に役立ちます。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) は、AWS クラウド内でのフルマネージド型、ペタバイト規模のデータウェアハウスサービスです。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) を使用すると、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールで置き換えて、プログラムでシークレットを取得することができます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

**コードリポジトリ**

このパターンのコードは、GitHub 内の「[unload-redshift-to-s3-python](https://github.com/aws-samples/unload-redshift-to-s3-python/)」リポジトリで入手できます。

## ベストプラクティス
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-best-practices"></a>

**セキュリティについての免責事項**

このソリューションを実装する前に、以下の重要なセキュリティ上の推奨事項を検討してください。
+ 開発用アカウントと本番稼働用アカウントを接続すると、スコープが拡大し、全体的なセキュリティ体制が低下する可能性があることに注意してください。このソリューションは一時的にのみデプロイし、必要なデータを抽出してから、すぐにデプロイされたリソースを破棄することを推奨します。リソースを破棄するには、Lambda 関数を削除し、このソリューション用に作成された IAM ロールとポリシーを削除し、アカウント間で付与されたネットワークアクセス権を取り消す必要があります。
+ データを本番環境から開発環境にコピーする前に、セキュリティチームとコンプライアンスチームに相談してください。個人を特定できる情報 (PII)、保護対象医療情報 (PHI)、その他の機密データや規制対象データは、通常、この方法でコピーしてはいけません。公開されている非機密情報 (ショップのフロントエンドからの公開株式データなど) のみをコピーしてください。本番データの使用ではなく、可能な限り、データのトークン化や匿名化、または合成テストデータの生成を検討してください。[AWS セキュリティ原則](https://docs.aws.amazon.com/en_us/wellarchitected/2022-03-31/framework/sec-design.html)の 1 つは、データからユーザーを遠ざけることです。つまり、デベロッパーは本番稼働用アカウントでオペレーションを実行してはいけません。
+ 開発アカウントの Lambda 関数は本番環境の Amazon Redshift クラスターからデータを読み取ることができるため、Lambda 関数へのアクセスを制限してください。
+ 本番環境の中断を避けるには、次の推奨事項を実装します。
  + テストと開発アクティビティには、別の専用開発アカウントを使用します。
  + 厳格なネットワークアクセス制御を実装し、アカウント間の必要なトラフィックのみに制限します。
  + 本番環境とデータソースへのアクセスをモニタリングし、監査します。
  + 関連するすべてのリソースとサービスに対して、最小特権のアクセス制御を実装します。
  +  AWS Secrets Manager シークレットや IAM ロールのアクセスキーなどの認証情報を定期的に確認して更新します。
+ この記事で使用されているサービスについては、次のセキュリティドキュメントを参照してください。
  + [AWS Lambda セキュリティ](https://docs.aws.amazon.com/lambda/latest/dg/lambda-security.html)
  + [Amazon Redshift のセキュリティ](https://docs.aws.amazon.com/redshift/latest/mgmt/iam-redshift-user-mgmt.html)
  + [Amazon S3 セキュリティ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security.html)
  + [AWS Secrets Manager セキュリティ](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security.html)
  + [IAM セキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)

セキュリティは、本番データとリソースにアクセスする際の最優先事項です。常にベストプラクティスに従い、最小特権のアクセス制御を実装し、セキュリティ対策を定期的に見直して更新してください。

## エピック
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-epics"></a>

### Amazon Redshift からデータをクエリする
<a name="query-data-from-amazon-redshift"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Redshift クラスター用のシークレットを作成します。 | Amazon Redshift クラスター用のシークレットを作成するには、次の手順を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 
| Secrets Manager にアクセスするロールを作成します。 | ロールを作成するには、次の操作を行います。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 

### データを Simple Storage Service (Amazon S3) にアップロードする
<a name="upload-data-to-s3"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットにアクセスするためのロールを作成します。 | S3 バケットにアクセスするためのロールを作成するには、次の手順を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 
| Amazon Redshift ロールを作成します。 | Amazon Redshift ロールを作成するには、次の操作を行います。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 

### Lambda 関数をデプロイします
<a name="deploy-the-lam-function"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Lambda 関数をデプロイします。 | ピア接続された VPC に Lambda 関数をデプロイするには、次の手順を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 

### アーキテクチャをテストする
<a name="test-the-architecture"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 必要なリソースをインポートします。 | 必要なリソースをインポートするには、次のコマンドを実行します。<pre>import ast<br />import boto3<br />import psycopg2<br />import base64<br />from botocore.exceptions import ClientError</pre> | アプリ開発者 | 
| Lambda ハンドラー関数を実行します。 | Lambda 関数は、クロスアカウントアクセスと一時的な認証情報管理に AWS Security Token Service (AWS STS) を使用します。関数は AssumeRole API オペレーションを使用して、`sm_read_role` IAM ロールのアクセス許可を一時的に引き受けます。<br />Lambda 関数を実行するには、次のコード例を使用します。<pre>def lambda_handler(event, context):<br />    sts_client = boto3.client('sts')<br /><br />    # Secrets Manager Configurations<br />    secret_name = "redshift_creds"<br />    sm_region = "eu-west-1"<br />    sm_read_role = "arn:aws:iam::PROD_ACCOUNT_NUMBER:role/SM-Read-Role"<br /><br />    # S3 Bucket Configurations<br />    s3_bucket_path = "s3://mybucket/"<br />    s3_bucket_region = "eu-west-1"<br />    s3_write_role = "arn:aws:iam::DEV_ACCOUNT_NUMBER:role/S3-Write-Role"<br /><br />    # Redshift Configurations<br />    sql_query = "select * from category"<br />    redshift_db = "dev"<br />    redshift_s3_write_role = "arn:aws:iam::PROD_ACCOUNT_NUMBER:role/CrossAccount-S3-Write-Role"<br /><br />    chained_s3_write_role = "%s,%s" % (redshift_s3_write_role, s3_write_role)<br /><br />    assumed_role_object = sts_client.assume_role(<br />        RoleArn=sm_read_role,<br />        RoleSessionName="CrossAccountRoleAssumption",<br />        ExternalId="YOUR_EXTERNAL_ID",<br />    )<br />    credentials = assumed_role_object['Credentials']<br /><br />    secret_dict = ast.literal_eval(get_secret(credentials, secret_name, sm_region))<br />    execute_query(secret_dict, sql_query, s3_bucket_path, chained_s3_write_role, s3_bucket_region, redshift_db)<br /><br />    return {<br />        'statusCode': 200<br />    }</pre> | アプリ開発者 | 
| シークレットを取得します。 | Amazon Redshift シークレットを取得するには、次のコード例を使用します。<pre>def get_secret(credentials, secret_name, sm_region):<br />    # Create a Secrets Manager client<br />    session = boto3.session.Session()<br />    sm_client = session.client(<br />        service_name='secretsmanager',<br />        aws_access_key_id=credentials['AccessKeyId'],<br />        aws_secret_access_key=credentials['SecretAccessKey'],<br />        aws_session_token=credentials['SessionToken'],<br />        region_name=sm_region<br />    )<br /><br />    try:<br />        get_secret_value_response = sm_client.get_secret_value(<br />            SecretId=secret_name<br />        )<br />    except ClientError as e:<br />        print(e)<br />        raise e<br />    else:<br />        if 'SecretString' in get_secret_value_response:<br />            return get_secret_value_response['SecretString']<br />        else:<br />            return base64.b64decode(get_secret_value_response['SecretBinary'])</pre> | アプリ開発者 | 
| アンロードコマンドを実行します。 | S3 バケットにデータをアンロードするには、次のコード例を使用します。<pre>def execute_query(secret_dict, sql_query, s3_bucket_path, chained_s3_write_role, s3_bucket_region, redshift_db):<br />    conn_string = "dbname='%s' port='%s' user='%s' password='%s' host='%s'" \<br />                  % (redshift_db,<br />                     secret_dict["port"],<br />                     secret_dict["username"],<br />                     secret_dict["password"],<br />                     secret_dict["host"])<br /><br />    con = psycopg2.connect(conn_string)<br /><br />    unload_command = "UNLOAD ('{}') TO '{}' IAM_ROLE '{}' DELIMITER '|' REGION '{}';" \<br />        .format(sql_query,<br />                s3_bucket_path + str(datetime.datetime.now()) + ".csv",<br />                chained_s3_write_role,<br />                s3_bucket_region)<br /><br />    # Opening a cursor and run query<br />    cur = con.cursor()<br />    cur.execute(unload_command)<br /><br />    print(cur.fetchone())<br />    cur.close()<br />    con.close()</pre> | アプリ開発者 | 

### クリーンアップ
<a name="clean-up"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Lambda 関数の削除 | 予期しないコストが発生しないようにするには、リソースと、開発用アカウントと本番稼働用アカウント間の接続を削除します。<br />Lambda 関数を削除するには、次の手順を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 
| IAM ロールとポリシーを削除します。 | 開発用アカウントと本番稼働用アカウントから IAM ロールとポリシーを削除します。<br />開発用アカウントで、次の操作を行います。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html)<br />本番稼働用アカウントで、次の操作を行います。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 
| Secrets Manager でシークレットを削除します。 | シークレットを削除するには、次の手順を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 
| VPC ピアリングとセキュリティグループに関するルールを削除します。 | VPC ピアリングとセキュリティグループに関するルールを削除するには、次の手順を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 
| データを S3 バケットから削除します。 | データを Amazon S3 から削除するには、次の手順を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 
|  AWS KMS キーをクリーンアップします。 | 暗号化用のカスタム AWS KMS キーを作成した場合は、次の操作を行います。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 
| Amazon CloudWatch Logs を確認して削除します。 | CloudWatch Logs を削除するには、次の手順を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps エンジニア | 

## 関連リソース
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-resources"></a>
+ [Amazon CloudWatch ドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
+ 「[IAM ドキュメント](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」
+ [Lambda ドキュメント](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Amazon Redshift ドキュメント](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html)
+ 「[Amazon S3 ドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)」
+ [AWS Secrets Manager ドキュメント](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS セキュリティ原則](https://docs.aws.amazon.com/en_us/wellarchitected/2022-03-31/framework/sec-design.html)

## 追加情報
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-additional"></a>

Amazon Redshift から Amazon S3 にデータをアンロードした後、Amazon Athena を使用してデータを分析できます。

[Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) はビッグデータを分析できるクエリサービスであり、大量のデータにアクセスする必要がある場合に便利です。Athena は、サーバーやデータベースをプロビジョニングしなくても使用できます。Athena は複雑なクエリをサポートしており、さまざまなオブジェクトでクエリを実行できます。

ほとんどの と同様に AWS のサービス、Athena を使用する主な利点は、複雑さを増すことなくクエリを実行する方法に大きな柔軟性があることです。Athena を使用すると、データ型を変更することなく、CSV や JSON などのさまざまなデータ型を Amazon S3 でクエリできます。外部を含むさまざまなソースからデータをクエリできます AWS。Athena を使用すると、サーバーを管理する必要がないため、複雑さを軽減できます。Athena は、クエリを実行する前にデータをロードしたり変更したりすることなく、Amazon S3 から直接データを読み取ります。