AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf ·...

144
Amazon Redshift 管理ガイド API Version 2012-12-01

Transcript of AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf ·...

Page 1: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift管理ガイド

API Version 2012-12-01

Page 2: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

アマゾンウェブサービス

Amazon Redshift 管理ガイド

Page 3: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift: 管理ガイドアマゾンウェブサービスCopyright © 2014 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

The following are trademarks of Amazon Web Services, Inc.: Amazon, Amazon Web Services Design, AWS, Amazon CloudFront,Cloudfront, Amazon DevPay, DynamoDB, ElastiCache, Amazon EC2, Amazon Elastic Compute Cloud, AmazonGlacier, Kindle, KindleFire, AWS Marketplace Design, Mechanical Turk, Amazon Redshift, Amazon Route 53, Amazon S3, Amazon VPC. In addition,Amazon.com graphics, logos, page headers, button icons, scripts, and service names are trademarks, or trade dress of Amazon inthe U.S. and/or other countries. Amazon's trademarks and trade dress may not be used in connection with any product or service thatis not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon.

All other trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connectedto, or sponsored by Amazon.

Amazon Redshift 管理ガイド

Page 4: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift とは? ........................................................................................................................... 1クラスター .............................................................................................................................................. 4コンソールを使ったクラスターの管理 .................................................................................................. 7AWS SDK for Java を使用したクラスターの管理 ............................................................................... 21Amazon Redshift CLI および API を使用してクラスターを管理する .................................................. 24VPC でクラスターを管理する .............................................................................................................. 24

VPC でクラスターを作成する ..................................................................................................... 25クラスターサブネットグループ .................................................................................................. 26

コンソールを使用したクラスターサブネットグループの管理 ......................................... 27AWS SDK for Java を使用したクラスターサブネットグループの管理 ............................ 30Amazon Redshift の CLI および API を使用したクラスターサブネットグループの管理 ........................................................................................................................................ 32

セキュリティグループ .......................................................................................................................... 33コンソールを使用したセキュリティグループの管理 .......................................................................... 34AWS SDK for Java を使用したセキュリティグループの管理 ............................................................. 38Amazon Redshift CLI および API を使用したセキュリティグループの管理 ........................................ 41パラメータグループ .............................................................................................................................. 42コンソールを使用したパラメータグループの管理 ............................................................................... 44AWS SDK for Java を使用したパラメータグループの管理 ................................................................ 48Amazon Redshift CLI および API を使用したパラメータグループの管理 ........................................... 52スナップショット ................................................................................................................................. 53コンソールを使用したスナップショットの管理 .................................................................................. 56AWS SDK for Java を使用したスナップショットの管理 .................................................................... 62Amazon Redshift CLI および API を使用したスナップショットの管理 ............................................... 65イベント ................................................................................................................................................ 66コンソールを使ったイベントの表示 ..................................................................................................... 66AWS SDK for Java を使ったイベントの表示 ...................................................................................... 68Amazon Redshift CLI と API を使ったイベントの表示 ........................................................................ 69クラスターのパフォーマンスをモニタリングする ............................................................................... 70パフォーマンスデータの概要 ............................................................................................................... 71パフォーマンスデータを使用する ........................................................................................................ 74

クラスターのパフォーマンスデータを表示する ......................................................................... 75クエリの実行中にクラスターメトリックスを表示する .............................................................. 78ロード操作中にクラスターメトリックスを表示する .................................................................. 80アラームを作成する .................................................................................................................... 81Amazon CloudWatch コンソールでパフォーマンスメトリックスを使用する ........................... 83

リザーブドノードの購入 ....................................................................................................................... 85コンソールを使用したリザーブドノードサービスの購入 .................................................................... 86Java を使用したリザーブドノードサービスの購入 ............................................................................. 89Amazon Redshift CLI および API を使用したリザーブドノードサービスの購入 ................................ 92Amazon Redshift のリソースに対するアクセスの制御 ........................................................................ 93Amazon Redshift Amazon リソースネーム (ARN)を構築する ...................................................... 102制限 ..................................................................................................................................................... 104Amazon Redshift クラスターとデータベースへのアクセス ............................................................... 107Amazon Redshift 管理インターフェイスの使用 ................................................................................. 107

AWS SDK for Java の使用 ......................................................................................................... 108クライアント側暗号化データのアップロード ........................................................................... 111HTTP リクエストへの署名 ........................................................................................................ 114Amazon Redshift CLI のセットアップ ....................................................................................... 117

AWS コマンドラインインターフェイスの使用開始 ........................................................ 117クラスターへの接続 ............................................................................................................................ 121

SQL Workbench クライアントの設定 ....................................................................................... 122psql ツールを使用してクラスターに接続する .......................................................................... 129SSL でクラスターに接続する ................................................................................................... 132クラスターにプログラムで接続する ......................................................................................... 134Amazon EC2 以外から接続する – ファイアウォールタイムアウトの問題 ............................... 138

ドキュメント履歴 ............................................................................................................................... 140

API Version 2012-12-014

Amazon Redshift 管理ガイド

Page 5: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift とは?

Amazon Redshift 管理ガイドにようこそ。Amazon Redshift は、クラウド内での完全マネージド型、ペタバイトスケールのデータウェアハウスサービスです。Amazon Redshift では、今お使いの SQL ベースのツールやビジネスインテリジェンスアプリケーションでデータ分析を行うとき、きわめて大規模なサイズのデータセットであっても、高速なクエリ性能を実現します。AWS マネジメントコンソールを数回クリックするだけで、Redshiftクラスターを起動できます。数百ギガバイトのデータから開始して1 ペタバイト以上にスケーリング可能です。

データウェアハウス作成の最初のステップは、AmazonRedshiftクラスターと呼ばれる一連のコンピューティングノードを起動することです。必要なコンピューティングノードの数とタイプはデータのサイズ、実行するクエリの数、必要なクエリ実行パフォーマンスに依存します。プロビジョニングする各クラスターは完全マネージド型の Amazon Redshift データウェアハウスです。クラスターの作成と管理には Amazon Redshift マネジメントコンソール、API、または CLI を使用します。

デフォルトでは、Amazon Redshift は新規クラスターを作成するときにデータベースを 1 個作成します。必要に応じて追加のデータベースを作成することもできます。クラスターのプロビジョニングが終わったら、データセットをアップロードして、データ分析クエリを実行します。現在お使いのSQLベースツールやビジネスインテリジェンスアプリケーションが利用できます。データセットのサイズに関係なく、Amazon Redshift は高いクエリパフォーマンスを提供します。

Amazon Redshift は、容量のプロビジョニング、クラスターの監視とバックアップ、Amazon Redshiftエンジンのパッチとアップグレードの適用など、設定、運用、データウェアハウスの拡張に関するあらゆる作業を管理します。データの利用に集中することができるので、事業と顧客について新しい洞察が得られます。

クラスター管理の概要クラスター管理には次の操作が含まれています。

クラスターの作成と管理 – データウェアハウスのニーズに基づき、XL ノードを 1 つだけ持つ小さなクラスターから始めることができます。要件が変わったら、最大 100 8XL ノードまで簡単に拡張できます。データウェアハウスのパフォーマンスを監視できます。必要に応じて、サービスを中断することなく、コンピューティングノードを追加したり、削除したりできます。詳細については、「AmazonRedshift クラスター (p. 4)」を参照してください。

クラスターを1年以上連続して実行する場合、1年間または3年間コンピューティングノードを予約することでお金を節約できます。コンピューティングノードを予約すれば、要求に応じてコンピューティ

API Version 2012-12-011

Amazon Redshift 管理ガイドクラスター管理の概要

Page 6: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

ングノードをプロビジョニングするときに時間単位で支払う場合に比べて大幅な節約になります。詳細については、「Amazon Redshift リザーブドノードの購入 (p. 85)」を参照してください。

クラスターセキュリティグループの作成と管理–デフォルトでは、作成するクラスターは誰に対しても開かれていません。クラスターへのアクセスを可能にするには、セキュリティグループを作成し、それをクラスターに関連付けます。セキュリティグループにルールを追加し、特定の範囲の CIDR/IP アドレスに明示的なインバウンドアクセスを与えます。SQLクライアントがEC2インスタンスで実行されている場合、AmazonElastic computeCloud(EC2)セキュリティグループにルールを追加します。詳細については、「Amazon Redshift クラスターセキュリティグループ (p. 33)」を参照してください。

パラメータグループの作成と管理–Amazon Redshift クラスターを作成するとき、それにパラメータグループを関連付けます。データの表現スタイルや浮動小数点の精度など、このグループのパラメータは、クラスターで作成したすべてのデータベースに適用されます。パラメータのプリセット値を定義する Amazon Redshift エンジンのデフォルトパラメータグループがあります。アプリケーションに異なる設定が要求される場合、独自のパラメータグループを作成できます。詳細については、「AmazonRedshift パラメータグループ (p. 42)」を参照してください。

スナップショットの管理 – Amazon Redshift は引き続きAmazon Simple Storage Service (S3)にデータをバックアップし、データ損失の防止を支援します。クラスターの独自のポイントインタイムバックアップを作成するオプションもあります。これらの自動および手動バックアップはスナップショットと呼ばれています。スナップショットを作成したときの状態にクラスターを復元することができます。AmazonRedshiftは、自動スナップショットと手動スナップショットの両方をサポートします。詳細については、「Amazon Redshift スナップショット (p. 53)」を参照してください。

クラスターパフォーマンスの監視–Amazon Redshift は、クラスターとクエリの健全性とパフォーマンスを追跡するために利用できるメトリックスを回収します。1つまたは複数のメトリックスが許容範囲外になったときに通知するアラームを設定できます。AmazonRedshiftコンソールを使用し、最も一般的なクラスターパフォーマンスメトリックスに直接アクセスしたり、個別クエリのリソース利用を表示したりできます。Amazon CloudWatch を使用してクラスターのパフォーマンスメトリックスを表示することもできます。詳細については、「AmazonRedshiftクラスターのパフォーマンスをモニタリングする (p. 70)」を参照してください。

Amazon Redshift リソースへのアクセスの制御 – クラスターを作成した AWS アカウントにはクラスターへの完全アクセスが与えられます。AWSアカウント内で、AWS Identity and Access Management(IAM)サービスを使用し、ユーザーアカウントを作成し、そのアカウントのアクセス権を管理できます。IAMを使用し、さまざまなユーザーにその職務に必要なクラスター操作のみを実行する権限を与えることができます。IAM は Amazon Redshift API へのアクセスのみを制御します。JDBC と ODBC を介してクラスターへのアクセスを制御することはありません。詳細については、「AmazonRedshiftのリソースに対するアクセスの制御 (p. 93)」を参照してください。

Amazon Redshift のご利用は初めてですか?Amazon Redshift を初めて使用する方には、次のセクションを初めに読むことをおすすめします。

• サービスのハイライトと価格設定–製品詳細ページには、Amazon Redshift の価値提案、サービスのハイライト、価格設定が掲載されています。

• 始めに–入門ガイドには例があります。その例に沿って、段階的にクラスターを作成し、データベーステーブルを作成し、データをアップロードし、クエリをテストできます。

入門ガイドを完了したら、次のガイドの 1 つをお読みになることをお勧めします。

• Amazon Redshift 管理ガイド – (本書) – 本ガイドでは、Amazon Redshift クラスターの作成および管理の方法を紹介しています。詳細については、次の「クラスター管理の概要 (p. 1)」セクションを参照してください。

API Version 2012-12-012

Amazon Redshift 管理ガイドAmazon Redshift のご利用は初めてですか?

Page 7: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

アプリケーション開発者なら、Amazon Redshift Query API を使ってクラスターをプログラム的に管理できます。また、基礎となる Amazon Redshift API をラップする AWS SDK ライブラリはプログラミング作業を簡単にします。クラスターをよりインタラクティブに管理したい場合は、AmazonRedshift コンソールおよび AWS コマンドラインインターフェイス(AWS CLI)をご利用になれます。API および CLI の詳細については、以下のマニュアルを参照してください。• API リファレンス• CLI リファレンス

• Amazon Redshift Database Developer Guide – Amazon Redshift Database Developer Guide はデータベース開発者向けの内容で、データウェアハウスを構成するデータベースの設計、構築、クエリ、管理を解説しています。

API Version 2012-12-013

Amazon Redshift 管理ガイドAmazon Redshift のご利用は初めてですか?

Page 8: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift クラスター

Topics• 概要 (p. 4)• コンソールを使ったクラスターの管理 (p. 7)• AWS SDK for Java を使用したクラスターの管理 (p. 21)• Amazon Redshift CLI および API を使用してクラスターを管理する (p. 24)• Virtual Private Cloud(VPC)でクラスターを管理する (p. 24)

概要AmazonRedshiftデータウェアハウスは、ノードと呼ばれるコンピューティングリソースのコレクションです。このノードのコレクションは、クラスターと呼ばれます。クラスターのプロビジョニング時には、クラスターを構成するノードのタイプおよび数を指定します。ノードタイプによって、クラスター内の各ノードのストレージサイズ、メモリ、CPU、および料金が決まります。クラスター内のすべてのコンピューティングノードは同じタイプになります。サポートされているノードタイプおよび関連する価格のリストについては、Amazon Redshift 料金表ページを参照してください。

最初にクラスターをプロビジョニングした後で、ストレージおよびパフォーマンスを変更する必要が生じた場合はいつでも、ノードを追加または削除してクラスターをスケールインまたはスケールアウトするか、別のノードタイプを指定してクラスターを拡大または縮小するか、またはその両方を行うことができます。いずれの方法でも、クラスターをサイズ変更する際にわずかなダウンタイムが生じます。サイズ変更を行うと、サイズ変更オペレーションの最後に古いクラスターが置き換えられます。サイズ変更リクエストを送信すると、ソースクラスターは、サイズ変更オペレーションが完了するまで読み取り専用モードのままになります。

それぞれのクラスターが Amazon Redshift エンジンを実行します。

クラスターの作成時には、マスターユーザーの名前とパスワードも指定します。このマスターユーザーは、クラスター内に作成したすべてのデータベースにアクセスできます。

指定できる設定オプションは他にもあります。Amazon Redshift クラスターのプロビジョニング時には、デフォルトで、誰もアクセスできないようにロックされます。セキュリティグループは、クラスターへのインバウンドアクセスを許可するのに使用できるメカニズムです。クラスターのデータベースの動作を統制するその他の設定パラメータは、パラメータグループに格納されています。クラスターには、1つ以上のセキュリティグループおよびパラメータグループを関連付けることができます。セキュリティグループまたはパラメータグループを指定しない場合、Amazon Redshift はデフォルトのパラメータグループおよびセキュリティグループをクラスターに関連付けます。詳細については、「Amazon

API Version 2012-12-014

Amazon Redshift 管理ガイド概要

Page 9: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Redshift クラスターセキュリティグループ (p. 33)」および「Amazon Redshift パラメータグループ (p. 42)」を参照してください。

クラスターの作成時には、オプションで、セキュリティ強化のためにクラスター暗号化オプションを選択できます。クラスターで暗号化を有効にすると、AmazonRedshiftは、ユーザーが作成したテーブルにすべてのデータを暗号化形式で格納します。クラスターで暗号化を有効にすると、ハードウェアで加速されるものの、パフォーマンスに影響を与えることに注意してください。平均して、性能が約 20%低下し、ピーク時のオーバーヘッドが 40% となることが予測されます。クラスターの作成時に暗号化を有効にするかどうかを決定する際には、このことを考慮する必要があります。暗号化は、クラスターの変更不可能なプロパティです。暗号化から非暗号化、またはその逆に変換するには、データをアンロードして新しいクラスターにリロードするしかありません。暗号化はバックアップにも適用されます。暗号化されたスナップショットから復元すると、新しいクラスターも暗号化されます。

AmazonRedshiftコンソールを使用してクラスターをプロビジョニングする場合は、これらのオプションの値が選択のために提供されます。プログラムでクラスターをプロビジョニングする場合は、AmazonRedshift APIを使用して、ノードタイプを使用できる利用可能なノードタイプアベイラビリティーゾーン(AZ)など、利用可能なオプションを見つけることができます。

Note

現在は Amazon Redshift バージョン 1.0 エンジンを使用できますが、エンジンが更新されると、複数のAmazon Redshift エンジンバージョンを選択できるようになる可能性があります。

クラスターをプロビジョニングできる、サポート対象のAWSリージョンのリストについては、アマゾンウェブサービス用語集の「Regions and Endpoints」セクションを参照してください。

必要なノードの数クラスターのプロビジョニング時には、必要なノードのタイプおよび数を指定します。クラスターのプロビジョニング時に選べるノードタイプは2種類です。2TBの圧縮ストレージを備えたエクストララージノード(XL)と、16TBの圧縮ストレージを備えたエイトエクストララージノード(8XL)です。クラスターは単一のXLノードで構成することも、100個の8XLノードのように大きなサイズで構成することもできます。XL クラスターには 1~32 個のノードを含めることができ、8XL クラスターには 2~100 個のノードを含めることができます。個々のノードタイプの価格および詳細については、AmazonRedshift 製品詳細ページを参照してください。

選択するノードの数は、データセットのサイズおよび希望するクエリパフォーマンスに依存します。例えば、32 TB のデータがある場合、16 個の XL ノードまたは 2 個の 8XL ノードを選択できます。データの増分が小さい場合は、XLノードを選択すれば、2TB刻みで拡大縮小できます。データの増分が通常は大きい場合は、8XL ノードベースのクラスターを選択することをお勧めします。

Amazon Redshift はすべてのコンピューティングノードにクエリを分散し、並行して実行するので、データウェアハウスクラスターにノードを追加することにより、クエリパフォーマンスを高めることができます。また、AmazonRedshiftは、クラスター内のすべてのコンピューティングノードにデータも分散します。2 つ以上のコンピューティングノードを持つクラスターを実行する場合は、各ノードのデータが常に別のノードのディスクにミラーリングされ、データ損失が発生するリスクが減少します。

どのような選択をした場合も、Amazon Redshift コンソールおよびAmazon CloudWatchメトリックスを使用してクエリパフォーマンスをモニタリングできます。また、必要に応じてノードを追加または削除して、最適に動作するようにストレージとパフォーマンスのバランスをとることもできます。追加のノードをリクエストすると、AmazonRedshiftはデプロイメント、ロードバランシング、およびデータメンテナンスのすべての詳細を管理します。

個々のノードタイプの価格および詳細については、AmazonRedshift製品詳細ページを参照してください。

API Version 2012-12-015

Amazon Redshift 管理ガイド必要なノードの数

Page 10: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

アベイラビリティーゾーンの考慮事項デフォルトでは、Amazon Redshift は、指定した AWSリージョン内のランダムに選択されたアベイラビリティーゾーン(AZ)にクラスターをプロビジョニングします。すべてのクラスターノードが同じAZ にプロビジョニングされます。

特定のアベイラビリティーゾーンで Amazon Redshift を使用できる場合、オプションでそのアベイラビリティーゾーンをリクエストできます。例えば、アベイラビリティーゾーンでAmazonElasticComputeCloud(EC2)インスタンスが既に実行されている場合、同じアベイラビリティーゾーン内にクラスターを作成して、レイテンシーを低減させることができます。また、可用性を高めるために別のアベイラビリティーゾーンを選択することもできます。AmazonRedshiftは、リージョン内のすべてのアベイラビリティーゾーンで使用できるわけではありません。

クラスターの変更クラスターの実行後に変更が必要になることがあります。例えば、別のパラメータグループを関連付けたり、別のセキュリティグループのリストを関連付けて追加のセキュリティグループを含めたり、既存のセキュリティグループの関連付けを取り消したりします。

新しいパラメータグループを関連付けた場合は、変更を有効にするためにクラスターを再起動する必要があります。Amazon APIまたはAmazon Redshift コンソールを使用して、クラスターをすぐに再起動できます。メンテナンスオペレーション中に Amazon Redshift がクラスターを再起動すると、新しいパラメータグループが有効になります。

クラスターに対するセキュリティグループの関連付けを変更した場合は、再起動は必要ありません。

クラスターのサイズ変更最初にクラスターをプロビジョニングした後で、ストレージおよびパフォーマンスを変更する必要が生じた場合はいつでも、ノードを追加または削除してクラスターをスケールインまたはスケールアウトすることができます。また、別のノードタイプを指定してクラスターを拡大または縮小することもできます。APIの使用時には、どちらか一方のみ変更する場合でも、両方を指定する必要があります。いずれの方法でも、クラスターをサイズ変更する際にわずかなダウンタイムが生じます。

クラスターをサイズ変更すると、最初に Amazon Redshift は既存のクラスターを読み取り専用モードにします。次に、AmazonRedshiftはリクエストどおりにノードをプロビジョニングし、新しいクラスターにデータをコピーして、新しいクラスターを使用するように接続を切り替えます。この時点で、古いクラスターへのオープン接続が失われます。この切り替え時点で進行中のクエリがある場合、接続が切断されていることに気付きます。新しいクラスターでクエリを再起動する必要があります。

変更オペレーションでは、必要に応じてクラスターをサイズ変更できます。例えば、さらにノードを追加したり、ノードタイプを変更したり、単一ノードクラスターを複数ノードに、または複数ノードクラスターを単一ノードに変更したりできます。ただし、変更後のクラスターが、現在のデータを保持するのに十分な大きさであることを確認する必要があります。変更後のサイズが不十分な場合、サイズ変更は失敗します。

クラスターのメンテナンスAmazonRedshiftは定期的にメンテナンスを実行して、クラスターにアップグレードを適用します。これらの更新中、AmazonRedshiftクラスターは通常のオペレーションには使用できません。これらのアクティビティが行われるように、毎週 30 分のメンテナンスの時間帯をスケジュールできます。クラスターの作成時にメンテナンスの時間帯を設定するか、または必要なときにいつでもメンテナンスの時間帯を変更することができます。メンテナンスの時間帯は、プログラムで、または Amazon Redshift コンソールを使用して設定できます。メンテナンスの実行中、AmazonRedshiftは進行中のクエリまたは他のオペレーションを終了します。スケジュールされたメンテナンスの時間帯中に実行されるメンテナンスタスクがない場合、クラスターは次のメンテナンスの時間帯まで通常どおり動作し続けます。

API Version 2012-12-016

Amazon Redshift 管理ガイドアベイラビリティーゾーンの考慮事項

Page 11: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クラスターの起動用にサポートされているプラットフォームAWSアカウント設定に応じて、次のいずれかのAmazonElasticComputeCloud(EC2)プラットフォームで Amazon Redshift クラスターを起動できます。

• EC2-Classic – クラスターは、他の AWS ユーザーと共有する単一のフラットネットワーク内で稼働します。

EC2-Classic にデプロイする場合は、1つ以上の Amazon Redshift クラスターセキュリティグループをクラスターに関連付けることにより、クラスターへのアクセスをコントロールします。詳細については、「Amazon Redshift クラスターセキュリティグループ (p. 33)」を参照してください。

• EC2-VPC – クラスターは、AWS アカウントに論理的に分離された Virtual Private Cloud(VPC)内で稼働します。

EC2-VPCにデプロイする場合は、1つ以上のVPCセキュリティグループをクラスターに関連付けることにより、クラスターへのアクセスをコントロールします。詳細については、「VPC のセキュリティグループ」を参照してください。

VPC内にクラスターを作成するには、まずVPCのサブネット情報を指定してAmazon Redshift クラスターサブネットグループを作成してから、クラスターの起動時にサブネットグループを指定する必要があります。詳細については、「AmazonRedshiftのクラスターサブネットグループ(p. 26)」を参照してください。

VPC の詳細については、「Amazon Virtual Private Cloud(Amazon VPC)」の製品詳細ページを参照してください。

AWSアカウントはAWSリージョンに応じて、両方のプラットフォームで、またはEC2-VPCでのみ、クラスターを起動できます。アカウントがサポートしているプラットフォームを確認し、クラスターをデプロイするには、次の操作を行います。

1. クラスターをデプロイするAWSリージョンを決定します。バケットを作成できるAWSリージョンのリストについては、「Amazon Web Services General Reference」の「Regions and Endpoints」を参照してください。

2. 選択した AWS リージョンでアカウントがサポートしている EC2 プラットフォームを確認します。

この情報は、EC2 コンソールで確認できます。詳しい手順については、Amazon Elastic ComputeCloud ユーザーガイドの「サポートされているプラットフォーム」を参照してください。

3. アカウントが両方のEC2プラットフォームをサポートしている場合は、AmazonRedshiftクラスターをデプロイするプラットフォームを選択します。アカウントがEC2-VPCのみをサポートしている場合は、VPC にクラスターをデプロイします。

4. Amazon Redshift クラスターをデプロイします。

クラスターをデプロイするには、Amazon Redshift コンソールを使用するか、またはプログラムでAmazon Redshift API または SDK ライブラリを使用します。詳細については、このトピックの最初に示されているいずれかのリンクをクリックしてください。

コンソールを使ったクラスターの管理Topics• クラスターの作成 (p. 8)• クラスターの変更 (p. 14)• クラスターの削除 (p. 15)

API Version 2012-12-017

Amazon Redshift 管理ガイドクラスターの起動用にサポートされているプラットフォー

Page 12: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• クラスターの再起動 (p. 17)• クラスターのサイズ変更 (p. 17)• クラスター構成に関する情報の取得 (p. 19)• クラスター状態の概要の取得 (p. 19)• クラスターのスナップショットの作成 (p. 20)• クラスターパフォーマンスデータの操作 (p. 21)

このセクションでは、AmazonRedshiftコンソールを使用した、クラスターの作成、修正、情報取得、削除、および再起動の各方法を説明します。一般的に、これらのタスクは、クラスターパフォーマンスダッシュボードを表示することで実現します。ダッシュボードは、クラスターが保守中かどうか、最近のイベント数など、クラスターの状態([available]など)、およびクラスターの[DBHealth]([healthy]など)を一目でわかるように表示するクラスターのリストです。

クラスターの作成クラスターを作成する前に、このセクションの「概要 (p. 4)」で情報を確認してください。

クラスターを作成するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. 以下のいずれかを行ってください。

a. アカウントに対してクラスターが構成されていない場合、[LaunchCluster]をクリックします。

b. アカウントに対して1つまたは複数のクラスターが定義されている場合、ナビゲーションペインで [Clusters] をクリックします。[Launch an Amazon Redshift Cluster] の下で、[LaunchCluster] をクリックします。

API Version 2012-12-018

Amazon Redshift 管理ガイドクラスターの作成

Page 13: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

3. [CLUSTER DETAILS] ページで以下の操作を実行します。すべての設定が正しいことを確認したら、[Continue] をクリックします。

a. [Cluster Identifier] ボックスに、クラスターの一意の名前を入力します。

クラスター識別子は、次の条件を満たしている必要があります。

• 1~63 文字の英数字またはハイフンを使用する必要があります。• 英字は小文字を使用する必要があります。• 1 字目は文字である必要があります。• ハイフンを、文字列の最後に使用したり、2 つ続けて使用したりすることはできません。• AWS アカウントのすべてのクラスター間で一意である必要があります。

b. (オプション)[Database Name] ボックスに、クラスターに対して作成される最初のデータベース名を入力します。このボックスを空にすると、データベースの名前はdevになります。名前を選択する場合、以下の条件を満たす必要があります。

• 1~64 文字の英数字を使用する必要があります。• 小文字のみを使用する必要があります。• 予約語は使用できません。予約語の一覧については、「AmazonRedshift DeveloperGuide」の「Reserved Words 」を参照してください。

c. [DatabasePort]ボックスに、データベースインスタンスに接続するために経由するデータベースポートを入力します。クラスター内のデータベースへの JDBC または ODBC 接続を開く場合、接続文字列にポート番号を含める必要があります。ポート番号は 1150~65535 の範囲である必要があります。デフォルトは 5439 です。

d. [Master User Name] ボックスで、データベースのマスターユーザーのアカウント名を指定します。

マスターユーザー名は、次の条件を満たしている必要があります。

• 1~128 文字の英数字を使用する必要があります。• 1 字目は文字である必要があります。• 予約語は使用できません。予約語の一覧については、「AmazonRedshift DeveloperGuide」の「Reserved Words」を参照してください。

e. [Master User Password] と [Confirm Password] ボックスで、マスターユーザーアカウントのパスワードの入力とパスワードの確認を行います。

パスワードは以下の条件を満たす必要があります。

• 8~64 文字の長さにする必要があります。

API Version 2012-12-019

Amazon Redshift 管理ガイドクラスターの作成

Page 14: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• 最低 1 個の大文字を含める必要があります。• 最低 1 個の小文字を含める必要があります。• 数字を 1 個含める必要があります。• 表示可能な ASCII 文字(ASCII コード 33~126)のうち、'(シングルクォート)、"(ダブルクォート)、\、/、@および空白を除く任意の文字を使用できます。

次の例では、exampleclusterはクラスターの識別子、データベース名は未指定、5439 はポート、masteruserはマスターユーザー名です。

4. [NODE CONFIGURATION] ページで次の操作を行います。すべての設定が正しいことを確認したら、[Continue] をクリックします。

a. [Node Type] ボックスで、ノードタイプをクリックします。

[CPU]、[Memory]、[Storage]、[I/O Performance]情報は、選択したノードの対応する情報を表示します。

b. [Cluster Type] ボックスでクラスターをクリックします。c. [Number of Compute Nodes] ボックスで、クラスターに含まれるノードの数を指定します。

[Cluster Type] を Single Nodeとして選択した場合、コンピューティングノードの数は 1 に設定されます。

次の例では、ノードタイプ [dw.hs1.xlarge] が選択され、アベイラビリティーゾーンに対しては [No Preference] が選択され、[Cluster Type] が [Multi Node] として選択され、2つのノードが指定されます。

API Version 2012-12-0110

Amazon Redshift 管理ガイドクラスターの作成

Page 15: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

5. [ADDITIONAL CONFIGURATION] ページで次の操作を行います。すべての設定が正しいことを確認したら、[Continue] をクリックします。

a. (オプション)[Cluster ParameterGroup]ボックスで、クラスターに関連付けるクラスターパラメータグループをクリックします。パラメータグループを選択しない場合、デフォルトのパラメータグループがクラスターに関連付けられます。

b. [Encrypt Database]で、クラスター内のデータとバックアップデータをすべて暗号化するかどうかを選択します。

デフォルトでは暗号化しません。c. ネットワークのオプションとクラスターのセキュリティグループを構成します。

• 次のアクションのいずれかを実行します。

操作目的

a. [Choose a VPC] ボックスで、[Not in VPC] をクリックします。

b. (オプション)[Availability Zone] ボックスで、クラスターをプロビジョニングするアベイラビリティーゾーンをクリックします。

c. [Cluster Security Groups] ボックスで、クラスターに関連付けるセキュリティグループをクリックします。

VPCの外部のクラスターのプロビジョニング

API Version 2012-12-0111

Amazon Redshift 管理ガイドクラスターの作成

Page 16: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

操作目的

a. [Choose a VPC] ボックスで、VPC を選択します。

Note

少なくとも1つのクラスターサブネットグループを定義しなければ、[Choose a VPC] ボックスは有効になりません。

b. [Cluster Subnet Group] ボックスで、サブネットグループを選択します。

c. [Publicly Accessible] で、パブリックがクラスターにアクセスできるようにするかどうかを選択します。

d. (オプション)[Availability Zone] ボックスで、クラスターをプロビジョニングするアベイラビリティーゾーンをクリックします。

e. [VPC Security Groups]ボックスで、クラスターに関連付ける、1つまたは複数のセキュリティグループを選択します。

VPC内のクラスターをプロビジョニングします。

d. [Continue] をクリックします。

次の例では、VPC、VPC セキュリティグループ、およびクラスターサブネットグループが指定されます。パブリックはアクセスできないというマークがクラスターに付けられ、アベイラビリティーゾーンに対しては優先設定なしが選択されます。

API Version 2012-12-0112

Amazon Redshift 管理ガイドクラスターの作成

Page 17: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

6. [REVIEW] ページで、クラスターの詳細を確認します。すべてに問題がないことを確認したら、[LaunchCluster]をクリックして、作成プロセスを開始します。問題がある場合は、[Back]をクリックして、必要な変更を行ってから [Continue] をクリックして、[Review] ページに戻ります。

Note

[Database Port] や [Master User Name] など、一部のクラスタープロパティは変更できません。変更する必要がある場合は、[Back] リンクを使って、直ちに変更します。

API Version 2012-12-0113

Amazon Redshift 管理ガイドクラスターの作成

Page 18: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

7. 作成プロセスを開始した後、[Close] をクリックします。クラスターの使用準備ができるまで、数分かかることがあります。

パフォーマンスダッシュボードで操作の状態をモニタリングできます。

クラスターの変更クラスターを作成した後、構成オプションの一部を変更できます。例えば、別のパラメータグループやセキュリティグループを関連付けることができます。また、クラスターの保守ウィンドウ、マスターユーザーの認証情報、および自動作成されたスナップショットの保持期間の変更も可能です。これらの変更はすべて、クラスターを再起動した後有効になります。

自動作成されたスナップショットの保持期間を短縮すると、新しい保持期間に含まれなくなった、既存の自動作成されたスナップショットは削除されます。スナップショットの操作方法の詳細については、「Amazon Redshift スナップショット (p. 53)」を参照してください。

クラスターを変更するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Clusters] をクリックします。3. [Performance Status] で、変更するクラスターの横の虫眼鏡アイコンをクリックします。

4. クラスターの概要のページで、[Modify] をクリックします。

5. [Modify Cluster] ダイアログボックスで、クラスターを変更し、[Modify] をクリックします。

次の例では、VPC 内でプロビジョニングされないクラスターを変更して、2 つのセキュリティグループがそのクラスターに関連付けられるようにします。1つのクラスターに複数のセキュリティグループを関連付けるには、[Cluster Security Groups] リストから複数の項目を選択します。

API Version 2012-12-0114

Amazon Redshift 管理ガイドクラスターの変更

Page 19: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

次の例では、VPC内でプロビジョニングされるクラスターを変更して、2つの VPCセキュリティグループを選択して、クラスターに関連付けるようにします。1 つのクラスターに複数の VPC セキュリティグループを関連付けるには、[VPC Security Groups] リストから複数の項目を選択します。

クラスターの削除クラスターを削除した場合、オプションで最終的なクラスターの手動スナップショットを作成できます。削除したクラスターと同じデータと構成を使って新しいクラスターをプロビジョニングする場合、このスナップショットが必要になります。さらに、クラスターを削除した場合、クラスターの自動スナップショットも削除されます。クラスターのスナップショットの詳細については、「AmazonRedshiftスナップショット (p. 53)」を参照してください。

クラスターを削除するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Clusters] をクリックします。

API Version 2012-12-0115

Amazon Redshift 管理ガイドクラスターの削除

Page 20: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

3. [Performance Status] で、削除するクラスターの横の虫眼鏡アイコンをクリックします。

次の例では、exampleclusterは、削除するクラスターです。

4. クラスターの概要のページで、[Delete] をクリックします。

5. [Delete Clusters] ダイアログボックスの [Create final snapshot] ボックスで、[Yes] または [No] をクリックします。削除を確認するには、[Delete] をクリックします。

最終スナップショットの作成を選択した場合は、[Final snapshot name]ボックスにスナップショット名を入力します。

クラスターの削除を開始した後、クラスターが削除されるまで数分かかることがあります。次の例に示すように、クラスターリストで削除の状態をモニタリングできます。最終的なスナップショットを要求した場合、[Status] には [final-snapshotBeforedeleting] が表示されます。

API Version 2012-12-0116

Amazon Redshift 管理ガイドクラスターの削除

Page 21: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クラスターの再起動クラスターを再起動すると、クラスターの状態が rebootingに設定されます。再起動が終了すると、クラスターイベントが作成されます。保留されていたクラスターへの変更はすべて、この再起動時に適用されます。

クラスターを再起動するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Clusters] をクリックします。3. [Performance Status] で、再起動するクラスターの横の虫眼鏡アイコンをクリックします。4. クラスターの要約のページで、[Reboot] をクリックします。

5. [Reboot Clusters]ダイアログで目的のクラスターを選択したことを確認し、[Reboot]をクリックします。

クラスターが使用可能になるまで、数分かかることがあります。次の例に示すように、クラスターリストで再起動の状態をモニタリングできます。

クラスターのサイズ変更クラスターのサイズを変更する場合、クラスターの現在の構成と異なっているノード数またはノードタイプを指定します。クラスターのサイズ変更を実行する前に、クラスターに関する作業をすべて完了す

API Version 2012-12-0117

Amazon Redshift 管理ガイドクラスターの再起動

Page 22: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

る必要があります。サイズ変更を開始した後、サイズ変更が完了し、クラスターの作業を再開するまで待つ必要があります。

クラスターのサイズを変更するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Clusters] をクリックします。3. [Performance Status] で、サイズを変更するクラスターの横の虫眼鏡アイコンをクリックします。4. クラスターの概要のページで、[Resize] をクリックします。

5. [Resize Clusters] ダイアログで、[Node Type]、[Cluster Type]、[Number of Nodes] など、サイズ変更パラメータを設定し、[Resize] をクリックします。

クラスターが使用可能になるまで、数分かかることがあります。次の例に示すように、クラスターリストでサイズ変更の状態をモニタリングできます。

API Version 2012-12-0118

Amazon Redshift 管理ガイドクラスターのサイズ変更

Page 23: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クラスター構成に関する情報の取得クラスター構成の詳細を取得するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Clusters] をクリックします。

3. [Performance Status] で、クラスター識別子の横の虫眼鏡アイコンをクリックします。

次の例のように、クラスターの概要のページが表示されます。この例では、[Cluster Properties]と[Cluster Database Properties] のセクションが展開され、他のすべてのセクションが折りたたまれるか、非表示の状態です。

クラスター状態の概要の取得クラスターの[Status]タブには、クラスターの状態の概要、クラスターに関連するイベントの概要、およびクラスターに関連付けられている Amazon CloudWatch アラームのリストが表示されます。

API Version 2012-12-0119

Amazon Redshift 管理ガイドクラスター構成に関する情報の取得

Page 24: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クラスター状態の概要を取得するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Clusters] をクリックします。3. [Performance Status] で、状態を表示するクラスターの横の虫眼鏡アイコンをクリックします。

4. [Status] タブをクリックします。

次の例のような、ステータスの概要ページが表示されます。

クラスターのスナップショットの作成次に示すように、クラスターの[Configuration]タブから、クラスターのスナップショットを作成できます。また、AmazonRedshiftコンソールのスナップショットパートから、クラスターのスナップショットを作成することもできます(「コンソールを使用したスナップショットの管理 (p. 56)」参照)。

クラスターのスナップショットを作成するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Clusters] をクリックします。3. [Performance Status] で、スナップショットを作成するクラスターの横の虫眼鏡アイコンをクリッ

クします。

API Version 2012-12-0120

Amazon Redshift 管理ガイドクラスターのスナップショットの作成

Page 25: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

4. [Configuration] タブで [Take Snapshot] をクリックします。

5. [Create Snapshot] ダイアログボックスで、次の操作を行います。

a. [Cluster Identifier] ボックスで、スナップショットを作成するクラスターをクリックします。b. [Snapshot Identifier] ボックスに、スナップショットの名前を入力します。

6. [Create] をクリックします。

作成したスナップショットに関する詳細情報と、AWS アカウントのその他のスナップショットを表示するには、AmazonRedshiftコンソールのスナップショットパートに移動します(「コンソールを使用したスナップショットの管理 (p. 56)」を参照)。

クラスターパフォーマンスデータの操作[Performance]、[Queries]、[Loads]の各タブを使って、クラスターパフォーマンスデータを操作できます。クラスターパフォーマンスの操作方法の詳細については、「AmazonRedshiftコンソールでパフォーマンスデータを使用する (p. 74)」を参照してください。

AWS SDK for Java を使用したクラスターの管理次の Java コードの例では、下記に示すような一般的なクラスター管理操作をデモンストレーションします。

• クラスターの作成

API Version 2012-12-0121

Amazon Redshift 管理ガイドクラスターパフォーマンスデータの操作

Page 26: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• クラスターに関するデータデータの一覧表示• 構成オプションの変更

作成対象のクラスターに対する要求を開始すると、変更可能になるまで、クラスターは available状態になります。この例ではループを使用して、describeClusters方式を使用しているクラスターの状態を定期的にチェックします。クラスターが使用可能になると、クラスターの優先保守ウィンドウが変更されます。

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例 (p. 109)」を参照してください。コードをアップデートして、クラスターの識別子を指定する必要があります。

import java.io.IOException;

import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.PropertiesCredentials;import com.amazonaws.services.redshift.AmazonRedshiftClient;import com.amazonaws.services.redshift.model.*;

public class CreateAndModifyCluster {

public static AmazonRedshiftClient client; public static String clusterIdentifier = "***provide a cluster identifi er***"; public static long sleepTime = 20;

public static void main(String[] args) throws IOException {

AWSCredentials credentials = new PropertiesCredentials( CreateAndModifyCluster.class .getResourceAsStream("AwsCredentials.properties"));

client = new AmazonRedshiftClient(credentials);

try { createCluster(); waitForClusterReady(); describeClusters(); modifyCluster(); describeClusters(); } catch (Exception e) { System.err.println("Operation failed: " + e.getMessage()); } }

private static void createCluster() { CreateClusterRequest request = new CreateClusterRequest() .withClusterIdentifier(clusterIdentifier) .withMasterUsername("masteruser") .withMasterUserPassword("12345678Aa") .withNodeType("dw.hs1.xlarge") .withNumberOfNodes(2);

Cluster createResponse = client.createCluster(request); System.out.println("Created cluster " + createResponse.getClusterIdenti fier()); }

API Version 2012-12-0122

Amazon Redshift 管理ガイドAWS SDK for Java を使用したクラスターの管理

Page 27: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

private static void describeClusters() { DescribeClustersRequest request = new DescribeClustersRequest() .withClusterIdentifier(clusterIdentifier);

DescribeClustersResult result = client.describeClusters(request); printResult(result); }

private static void modifyCluster() { ModifyClusterRequest request = new ModifyClusterRequest() .withClusterIdentifier(clusterIdentifier) .withPreferredMaintenanceWindow("wed:07:30-wed:08:00");

client.modifyCluster(request); System.out.println("Modified cluster " + clusterIdentifier);

}

private static void printResult(DescribeClustersResult result) { if (result == null) { System.out.println("Describe clusters result is null."); return; }

System.out.println("Cluster property:"); System.out.format("Preferred Maintenance Window: %s\n", res ult.getClusters().get(0).getPreferredMaintenanceWindow()); }

private static void waitForClusterReady() throws InterruptedException { Boolean clusterReady = false; System.out.println("Wating for cluster to become available."); while (!clusterReady) { DescribeClustersResult result = client.describeClusters(new Describe ClustersRequest() .withClusterIdentifier(clusterIdentifier)); String status = (result.getClusters()).get(0).getClusterStatus(); if (status.equalsIgnoreCase("available")) { clusterReady = true; } else { System.out.print("."); Thread.sleep(sleepTime*1000); } } }}

API Version 2012-12-0123

Amazon Redshift 管理ガイドAWS SDK for Java を使用したクラスターの管理

Page 28: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift CLI および API を使用してクラスターを管理する

次の Amazon Redshift CLI オペレーションを使用して、クラスターを管理できます。

• create-cluster• delete-cluster• describe-clusters• describe-cluster-versions• describe-orderable-cluster-options• modify-cluster• reboot-cluster

次の Amazon Redshift API を使用して、クラスターを管理できます。

• CreateCluster• DeleteCluster• DescribeClusters• DescribeClusterVersions• DescribeOrderableClusterOptions• ModifyCluster• RebootCluster

Virtual Private Cloud(VPC)でクラスターを管理する

Topics• 概要 (p. 24)• VPC でクラスターを作成する (p. 25)• Amazon Redshift のクラスターサブネットグループ (p. 26)

概要AmazonRedshiftは、クラスターの起動用にEC2-VPCプラットフォームとEC2-Classicプラットフォームの両方をサポートしています。詳細については、「クラスターの起動用にサポートされているプラットフォーム (p. 7)」を参照してください。

VPC にクラスターをプロビジョニングするときは、次の操作を行います。

• VPC 情報を指定する

VPC 内にクラスターを作成するように Amazon Redshift にリクエストするときは、まずクラスターサブネットグループを作成してから、VPC ID などの VPC情報、およびVPC内のサブネットのリストを指定する必要があります。クラスターの起動時に、Amazon Redshift が VPC 内のいずれかのサブネットにクラスターをプロビジョニングできるように、クラスターサブネットグループを指定します。Amazon Redshift でのサブネットグループの作成の詳細については、「Amazon Redshift のクラ

API Version 2012-12-0124

Amazon Redshift 管理ガイドAmazon Redshift CLI および API を使用してクラスターを

管理する

Page 29: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

スターサブネットグループ (p. 26)」を参照してください。VPC の設定の詳細については、VPCAmazonVirtual PrivateCloud入門ガイドの「AmazonVPCの使用を開始する」を参照してください。

• VPC セキュリティグループを関連付ける

次に、VPCセキュリティグループを使用してインバウンドアクセスを許可します。詳細については、AmazonVirtualPrivateCloudユーザーガイドの「VPCのセキュリティ」を参照してください。AmazonRedshiftクラスターセキュリティグループを使用して、クラスターへのインバウンドアクセスを許可することはできません。

詳細については、「VPC でクラスターを作成する (p. 25)」を参照してください。

VPC 内のクラスターのスナップショットを復元する

VPC 内のクラスターのスナップショットは、VPC の外部ではなく VPC の内部でのみ復元できます。これらは、アカウント内の同じ VPC または別の VPC 内で復元できます。スナップショットの詳細については、「Amazon Redshift スナップショット (p. 53)」を参照してください。

VPC でクラスターを作成するVPC 内にクラスターをデプロイするための通常のステップは、次のとおりです。

VPC でクラスターを作成する方法

1. VPC を設定します。

クラスターは、アカウントのデフォルトの VPC 内(アカウント内に VPC がある場合)、または作成した VPC 内に作成できます。詳細については、「クラスターの起動用にサポートされているプラットフォーム (p. 7)」を参照してください。VPC を作成するには、Amazon Virtual PrivateCloud 入門ガイドのステップ 2 および 3 を実行してください。VPC 識別子、サブネット、およびサブネットのアベイラビリティーゾーンを書きとめておきます。クラスターの起動時にこれらの情報が必要になります。

Note

次のステップでサブネットをクラスターサブネットグループに追加できるように、VPC内に少なくとも1つのサブネットが定義されている必要があります。VPCウィザードを使用する場合は、VPC のサブネットが自動的に作成されます。VPC へのサブネットの追加の詳細については、「サブネットを VPC に追加するには」を参照してください。

2. Amazon Redshift クラスターで使用できる VPC 内のサブネットを指定する Amazon Redshift クラスターサブネットグループを作成します。

クラスターサブネットグループは、AmazonRedshiftコンソールを使用するか、またはプログラムで作成することができます。詳細については、「AmazonRedshiftのクラスターサブネットグループ (p. 26)」を参照してください。

3. クラスターに関連付ける VPC セキュリティグループ内のインバウンド接続に対して、アクセスを許可します。

VPC の外部(パブリックインターネット上)のクライアントがクラスターに接続できるようにするには、クラスターの起動時に使用したポートへのインバウンドアクセスを許可する VPC セキュリティグループに、クラスターを関連付ける必要があります。セキュリティグループルールの例については、Amazon Virtual Private Cloud ユーザーガイドの「セキュリティグループのルール」を参照してください。

4. VPC でクラスターを起動します。

API Version 2012-12-0125

Amazon Redshift 管理ガイドVPC でクラスターを作成する

Page 30: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

入門ガイドで説明されている手順を使用して、VPC でクラスターを起動できます。詳細については、「ステップ2:クラスターを起動する」を参照してください。ウィザードに従って、[ADDITIONALCONFIGURATION] ページの [Configure Network Options] に次の情報を指定します。

• [Choose a VPC]: ドロップダウンリストから VPC を選択します。• [Cluster Subnet Group]: ステップ 2 で作成したクラスターサブネットグループを選択します。• [Publicly Accessible]:パブリックインターネットからアクセスできるパブリックIPアドレスをクラスターに指定する場合は [Yes]、VPC 内からのみアクセスできるプライベート IP アドレスをクラスターに指定する場合は [No]を選択します。AWSアカウントでEC2-Classicクラスターを作成できる場合、デフォルトは「No」、それ以外の場合、デフォルトは「Yes」になります。

• クラスターへの承認済みデバイスのアクセスを許可する VPC セキュリティグループを選択します。

[ADDITIONAL CONFIGURATION] ページのスクリーンショットの例を次に示します。

これで、クラスターを使用する準備ができました。入門ガイドのステップに従って、サンプルデータをアップロードし、サンプルクエリを試行することにより、クラスターをテストできます。

Amazon Redshift のクラスターサブネットグループTopics• 概要 (p. 26)• コンソールを使用したクラスターサブネットグループの管理 (p. 27)• AWS SDK for Java を使用したクラスターサブネットグループの管理 (p. 30)• Amazon Redshift の CLI および API を使用したクラスターサブネットグループの管理 (p. 32)

概要Virtual Private Cloud(VPC)でクラスターをプロビジョニングする場合は、クラスターサブネットグループを作成します。VPC の詳細については、「Amazon Virtual Private Cloud(Amazon VPC)」の製品詳細ページを参照してください。

VPC は、セキュリティおよびオペレーションのニーズに基づいたリソースのグループ化を可能にする1 つまたは複数のサブネット(VPC 内の IP アドレスのサブセット)を持つことができます。クラス

API Version 2012-12-0126

Amazon Redshift 管理ガイドクラスターサブネットグループ

Page 31: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

ターサブネットグループにより、VPC内にサブネットセットを指定できます。クラスターをプロビジョニングするとき、サブネットグループを指定すると、AmazonRedshiftによってグループ内のサブネットの 1 つにクラスターが作成されます。

VPC の作成の詳細については、「Amazon Virtual Private Cloud(Amazon VPC)」を参照してください。

サブネットグループを作成したら、以前に追加したサブネットを削除することや、より多くのサブネットを追加することができます。AmazonRedshiftでは、クラスターサブネットグループを作成、変更、または削除するためのAPIを提供しています。これらの操作はコンソールで実行することもできます。

コンソールを使用したクラスターサブネットグループの管理Topics• クラスターサブネットグループの作成 (p. 27)• クラスターサブネットグループの変更 (p. 28)• クラスターサブネットグループの削除 (p. 29)

このセクションでは、AmazonRedshiftコンソールを使用してクラスターサブネットグループを管理する方法について説明します。クラスターサブネットグループの作成、既存のクラスターサブネットグループの管理、またはクラスターサブネットグループの削除を行うことができます。このようなタスクはすべて、クラスターサブネットグループリストから開始されます。管理を行う場合は、対象とするクラスターサブネットグループを選択する必要があります。

以下に例示したクラスターサブネットグループリストには、クラスターサブネットグループが1つ表示されています。デフォルトでは、AWS アカウントに対して定義されたクラスターサブネットグループは存在しません。my-subnet-groupが選択(強調表示)されているので、編集または削除ができます。選択したクラスターサブネットグループの詳細は、[Cluster Subnet Group Details] の下に表示されます。

クラスターサブネットグループの作成

VPC でクラスターをプロビジョニングするには、クラスターサブネットグループが少なくとも 1 つ定義されている必要があります。

クラスターサブネットグループを作成する方法

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで、[Subnet Groups] をクリックします。3. [Create Cluster Subnet Group] をクリックします。

API Version 2012-12-0127

Amazon Redshift 管理ガイドクラスターサブネットグループ

Page 32: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

4. [Create Cluster Subnet Group] ダイアログボックスで、グループにサブネットを追加します。

a. クラスターサブネットグループの [Name]、[Description]、および [VPC ID] を指定します。b. 以下のいずれかの操作を実行して、グループにサブネットを追加します。

• [add all the subnets] リンクをクリックします。または• [Availability Zone] および [Subnet ID] のボックスを使用して特定のサブネットを選択し、[Add] をクリックします。

以下の例に、1つのサブネットグループで定義されたクラスターサブネットグループを示します。

5. [Yes, Create] をクリックします。

クラスターサブネットグループのリストに新しいグループが表示されます。

クラスターサブネットグループの変更

クラスターサブネットグループを変更する方法

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで、[Subnet Groups] をクリックします。

API Version 2012-12-0128

Amazon Redshift 管理ガイドクラスターサブネットグループ

Page 33: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

3. クラスターサブネットグループリストで、変更するグループの行をクリックし、[Edit] をクリックします。

以下の例では、subnetgroup2が変更対象のクラスターサブネットグループです。

4. [Cluster Subnet Group Details] で、以下の操作のいずれかを実行します。

操作目的

個々のサブネットを選択するには、[Availability Zone] および[Subnet ID] のボックスを使用するか、[add all the subnets] をクリックします。

[Save] をクリックします。

1つまたは複数のサブネットをグループに追加します。

グループで使用しているサブネットのリストで、削除するサブネットの横にある [Remove] をクリックします。

[Save] をクリックします。

グループからサブネットを削除します。

クラスターサブネットグループの削除

クラスターで使用されているクラスターサブネットグループは削除できません。

クラスターサブネットグループを削除する方法

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで、[Subnet Groups] をクリックします。

API Version 2012-12-0129

Amazon Redshift 管理ガイドクラスターサブネットグループ

Page 34: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

3. クラスターサブネットグループリストで、削除するグループの行を選択します。

以下の例では、my-subnet-groupが削除対象のクラスターサブネットグループです。

4. [Delete Cluster Subnet Group] ダイアログボックスで、[Delete] をクリックします。

AWS SDK for Java を使用したクラスターサブネットグループの管理以下の Java コードの例では、クラスターサブネットに対する一般的な操作を示します。

• クラスターサブネットグループの作成• クラスターサブネットグループに関するメタデータの一覧表示• クラスターサブネットグループの変更

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例 (p. 109)」を参照してください。コードを更新し、クラスターサブネットグループ名と2つのサブネット識別子を指定する必要があります。

import java.io.IOException;import java.util.ArrayList;import java.util.List;

import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.PropertiesCredentials;import com.amazonaws.services.redshift.AmazonRedshiftClient;import com.amazonaws.services.redshift.model.*;

public class CreateAndModifyClusterSubnetGroup {

public static AmazonRedshiftClient client; public static String clusterSubnetGroupName = "***provide a cluster subnet group name ****"; // You can use the VPC console to find subnet IDs to use. public static String subnetId1 = "***provide a subnet ID****"; public static String subnetId2 = "***provide a subnet ID****";

API Version 2012-12-0130

Amazon Redshift 管理ガイドクラスターサブネットグループ

Page 35: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

public static void main(String[] args) throws IOException {

AWSCredentials credentials = new PropertiesCredentials( CreateAndModifyClusterSubnetGroup.class .getResourceAsStream("AwsCredentials.properties"));

client = new AmazonRedshiftClient(credentials);

try { createClusterSubnetGroup(); describeClusterSubnetGroups(); modifyClusterSubnetGroup(); } catch (Exception e) { System.err.println("Operation failed: " + e.getMessage()); } }

private static void createClusterSubnetGroup() { CreateClusterSubnetGroupRequest request = new CreateClusterSubnet GroupRequest() .withClusterSubnetGroupName(clusterSubnetGroupName) .withDescription("my cluster subnet group") .withSubnetIds(subnetId1); client.createClusterSubnetGroup(request); System.out.println("Created cluster subnet group: " + clusterSubnetGroup Name); }

private static void modifyClusterSubnetGroup() { // Get existing subnet list. DescribeClusterSubnetGroupsRequest request1 = new DescribeClusterSubnet GroupsRequest() .withClusterSubnetGroupName(clusterSubnetGroupName); DescribeClusterSubnetGroupsResult result1 = client.describeClusterSub netGroups(request1); List<String> subnetNames = new ArrayList<String>(); // We can work with just the first group returned since we requested info about one group. for (Subnet subnet : result1.getClusterSubnetGroups().get(0).getSub nets()) { subnetNames.add(subnet.getSubnetIdentifier()); } // Add to existing subnet list. subnetNames.add(subnetId2);

ModifyClusterSubnetGroupRequest request = new ModifyClusterSubnet GroupRequest() .withClusterSubnetGroupName(clusterSubnetGroupName) .withSubnetIds(subnetNames); ClusterSubnetGroup result2 = client.modifyClusterSubnetGroup(request);

System.out.println("\nSubnet group modified."); printResultSubnetGroup(result2); }

private static void describeClusterSubnetGroups() {

API Version 2012-12-0131

Amazon Redshift 管理ガイドクラスターサブネットグループ

Page 36: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

DescribeClusterSubnetGroupsRequest request = new DescribeClusterSubnet GroupsRequest() .withClusterSubnetGroupName(clusterSubnetGroupName);

DescribeClusterSubnetGroupsResult result = client.describeClusterSubnet Groups(request); printResultSubnetGroups(result); }

private static void printResultSubnetGroups(DescribeClusterSubnetGroupsResult result) { if (result == null) { System.out.println("\nDescribe cluster subnet groups result is null."); return; }

for (ClusterSubnetGroup group : result.getClusterSubnetGroups()) { printResultSubnetGroup(group); }

} private static void printResultSubnetGroup(ClusterSubnetGroup group) { System.out.format("Name: %s, Description: %s\n", group.getClusterSubnet GroupName(), group.getDescription()); for (Subnet subnet : group.getSubnets()) { System.out.format(" Subnet: %s, %s, %s\n", subnet.getSubnetIdenti fier(), subnet.getSubnetAvailabilityZone().getName(), subnet.getSub netStatus()); } }}

Amazon Redshift の CLI および API を使用したクラスターサブネットグループの管理以下の Amazon Redshift CLI 操作を使用してクラスターサブネットグループを管理できます。

• create-cluster-subnet-group• delete-cluster-subnet-group• describe-cluster-subnet-groups• modify-cluster-subnet-group

以下の Amazon Redshift API を使用してクラスターサブネットグループを管理できます。

• CreateClusterSubnetGroup• DeleteClusterSubnetGroup• DescribeClusterSubnetGroups• ModifyClusterSubnetGroup

API Version 2012-12-0132

Amazon Redshift 管理ガイドクラスターサブネットグループ

Page 37: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift クラスターセキュリティグループ

Topics• 概要 (p. 33)• コンソールを使用したセキュリティグループの管理 (p. 34)• AWS SDK for Java を使用したセキュリティグループの管理 (p. 38)• Amazon Redshift CLI および API を使用したセキュリティグループの管理 (p. 41)

概要AmazonRedshiftクラスターをプロビジョニングすると、デフォルトではロックされているため、誰もアクセスすることはできません。他のユーザーに対して Amazon Redshift クラスターへのインバウンドアクセス権を付与するには、クラスターセキュリティグループを定義し、それをクラスターに関連付けます。セキュリティグループはクラスターへのアクセスを制御するルールのセットから構成されます。個々のルールはCIDR/IPアドレスの範囲、またはクラスターへのアクセスが許可されているAmazonEC2セキュリティグループを識別します。セキュリティグループをクラスターと関連付けると、セキュリティグループに定義されているルールがクラスターへのアクセスを制御します。

クラスターのプロビジョニングとは独立してセキュリティグループを作成できます。クラスターをプロビジョニングするとき、またはその後のどちらでも、セキュリティグループを Amazon Redshift クラスターと関連付けることができます。また、セキュリティグループを複数のクラスターと関連付けることもできます。

AmazonRedshiftにはデフォルトのセキュリティグループが提供されており、これが最初のクラスターを起動すると自動的に作成されます。初期状態では、このセキュリティグループは空です。インバウンドアクセスルールをデフォルトのセキュリティグループに追加し、それをAmazonRedshiftクラスターに関連付けることができます。

デフォルトのセキュリティグループで十分な場合は独自のセキュリティグループを作成する必要はありませんが、オプションで作成することでクラスターへのインバウンドアクセスをより有効に管理できるようになります。例えば、AmazonRedshiftクラスターでサービスを実行していて、数社の顧客がいると仮定します。すべての顧客に同じアクセス権を与えたくない場合は、別々のセキュリティグループ(各会社につき 1 つ)を作成することをお勧めします。会社に固有の EC2 セキュリティグループとCIDR/IP範囲を識別するため、各セキュリティグループにルールを追加できます。その後、すべてのセキュリティグループをクラスターと関連付けます。

API Version 2012-12-0133

Amazon Redshift 管理ガイド概要

Page 38: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

1つのセキュリティグループを複数のクラスターと関連付けることができ、複数のセキュリティグループを 1 つのクラスターと関連付けることもできます。

Amazon Redshift API またはAWS SDKを使用して、セキュリティグループをプログラムで管理できます。AmazonRedshiftコンソールを使用して、コードを記述することなくセキュリティグループを管理することもできます。

AmazonRedshiftは変更内容を即座にセキュリティグループに適用します。そのため、セキュリティグループをクラスターに関連付けると、更新されたセキュリティグループのインバウンドクラスターアクセスルールは即座に適用されます。

このセクションでは、セキュリティグループの作成方法、インバウンド(進入)ルールの追加方法、およびセキュリティグループをクラスターに関連付ける方法について説明します。

Note

独自の仮想プライベートネットワーク(VPC)にクラスターを作成する場合、クラスターセキュリティグループを使用することはできません。その代わり、VPCセキュリティグループを使用して VPC 内のクラスターへのインバウンドアクセス権を付与する必要があります。VPCのクラスターについての詳細は、「Virtual Private Cloud(VPC)でクラスターを管理する(p. 24)」を参照してください。

コンソールを使用したセキュリティグループの管理

Topics• セキュリティグループを作成する (p. 35)• セキュリティグループの進入ルールを管理する (p. 36)• セキュリティグループを削除する (p. 37)• セキュリティグループをクラスターと関連付ける (p. 38)

AmazonRedshiftコンソールを使用してセキュリティグループの作成、変更、削除を行うことができます。また、AmazonRedshiftコンソールでデフォルトのセキュリティグループを管理することもできます。すべてのタスクは、セキュリティグループリストから開始します。管理を行うセキュリティグループを選択する必要があります。

以下のセキュリティグループリストの例には、2 つのセキュリティグループ(defaultセキュリティグループと、securitygroup1と呼ばれるカスタムのセキュリティグループ)があります。securitygroup1が選択(強調表示)されているので、編集または削除ができます。選択されたセキュリティグループの詳細は、[Cluster Security Group] に表示されています。

API Version 2012-12-0134

Amazon Redshift 管理ガイドコンソールを使用したセキュリティグループの管理

Page 39: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

デフォルトのセキュリティグループを削除することはできませんが、進入アクセスを許可したり無効にしたりすることで変更できます。

セキュリティグループを作成するセキュリティグループを作成するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. [Navigation] ペインで、[Security Groups] をクリックします。3. [Create Cluster Security Group] をクリックします。

4. [Create Cluster Security Group] ダイアログボックスで、クラスターセキュリティグループの名前と説明を指定します。

5. [Create] をクリックします。

セキュリティグループのリストに新規グループが表示されます。

API Version 2012-12-0135

Amazon Redshift 管理ガイドセキュリティグループを作成する

Page 40: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

セキュリティグループの進入ルールを管理するセキュリティグループの進入ルールを管理するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. [Navigation] ペインで、[Security Groups] をクリックします。3. セキュリティグループリストで、ルールを管理するセキュリティグループの行をクリックします。

以下の例では、securitygroup1が選択されています。定義された進入ルールはありません。

4. 以下のいずれかを行ってください。

• 次のルールアクションのうちいずれかを実行します。

操作目的

[ConnectionType]ボックスで、[CIDR/IP]をクリックします。

[CIDR/IP] ボックスで、範囲を指定します。

[Authorize] をクリックします。

CIDR/IPに基づく進入ルールを追加する

API Version 2012-12-0136

Amazon Redshift 管理ガイドセキュリティグループの進入ルールを管理する

Page 41: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

操作目的

[Connection Type] で [EC2 Security Group] を選択します。

[AWS Account] で使用するアカウントを選択します。デフォルトでは、現在コンソールにログインしているアカウントが使用されます。この場合、[EC2 Security Group Name] ボックスのEC2セキュリティグループの名前をクリックする必要があります。

[AWS Account] を [Another account] に変更する場合、[AWSAccount ID]および [EC2 Security Group]の両方に値を指定する必要があります。

[Authorize] をクリックします。

EC2セキュリティグループに基づく進入ルールを追加する

[Action] で、該当のルールに対応する [Revoke] ボタンをクリックします。

進入ルールを無効にする

セキュリティグループを削除するセキュリティグループが 1 つ以上のクラスターに関連付けられている場合は、削除できません。

セキュリティグループを削除するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. [Navigation] ペインで、[Security Groups] をクリックします。3. 削除するセキュリティグループの行をクリックしてから、[Delete] をクリックします。

1 つの行を選択して、[Delete] ボタンを有効にする必要があります。

Note

defaultセキュリティグループは削除できません。

API Version 2012-12-0137

Amazon Redshift 管理ガイドセキュリティグループを削除する

Page 42: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

4. [Delete Cluster Security Group] ダイアログボックスで、[Yes, Delete] をクリックします。

セキュリティグループがクラスターで使用されている場合は、削除できません。次の例では、securitygroup1が examplecluster2で使用されていることを示します。

セキュリティグループをクラスターと関連付けるプロビジョニングしたクラスターごとに、1つ以上のセキュリティグループが関連付けられます。クラスターの作成時にセキュリティグループを関連付けるか、またはクラスターを変更した後でセキュリティグループを関連付けることができます。詳細については、「クラスターを作成するには (p. 8)」および「クラスターを変更するには (p. 14)」を参照してください。

AWSSDK for Javaを使用したセキュリティグループの管理

次の例では、セキュリティグループで行う一般的な操作について説明します。

• 新規セキュリティグループを作成します• セキュリティグループに進入ルールを追加します• クラスターの設定を変更してセキュリティグループをクラスターと関連付けます。

デフォルトでは、新規セキュリティグループを作成するときに、進入ルールは作成されていません。この例では、2 つの進入ルールを追加して新規セキュリティグループを変更します。1 つの進入ルールはCIDR/IP範囲を指定して追加し、もう一つのルールは所有者 IDと Amazon EC2セキュリティグループの組み合わせを指定して追加します。

API Version 2012-12-0138

Amazon Redshift 管理ガイドセキュリティグループをクラスターと関連付ける

Page 43: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例(p. 109)」を参照してください。コードを更新し、クラスター識別子およびAWSアカウント番号を指定する必要があります。

import java.io.IOException;import java.util.ArrayList;import java.util.List;

import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.PropertiesCredentials;import com.amazonaws.services.redshift.AmazonRedshiftClient;import com.amazonaws.services.redshift.model.*;

public class CreateAndModifyClusterSecurityGroup {

public static AmazonRedshiftClient client; public static String clusterSecurityGroupName = "securitygroup1"; public static String clusterIdentifier = "***provide cluster identifier***";

public static String ownerID = "***provide account id****";

public static void main(String[] args) throws IOException {

AWSCredentials credentials = new PropertiesCredentials( CreateAndModifyClusterSecurityGroup.class .getResourceAsStream("AwsCredentials.properties"));

client = new AmazonRedshiftClient(credentials);

try { createClusterSecurityGroup(); describeClusterSecurityGroups(); addIngressRules(); associateSecurityGroupWithCluster(); } catch (Exception e) { System.err.println("Operation failed: " + e.getMessage()); } }

private static void createClusterSecurityGroup() { CreateClusterSecurityGroupRequest request = new CreateClusterSecurity GroupRequest() .withDescription("my cluster security group") .withClusterSecurityGroupName(clusterSecurityGroupName);

client.createClusterSecurityGroup(request); System.out.format("Created cluster security group: '%s'\n", clusterSe curityGroupName); }

private static void addIngressRules() {

AuthorizeClusterSecurityGroupIngressRequest request = new Authorize ClusterSecurityGroupIngressRequest() .withClusterSecurityGroupName(clusterSecurityGroupName) .withCIDRIP("192.168.40.5/32");

ClusterSecurityGroup result = client.authorizeClusterSecurityGroupIn

API Version 2012-12-0139

Amazon Redshift 管理ガイドAWS SDK for Java を使用したセキュリティグループの管

Page 44: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

gress(request);

request = new AuthorizeClusterSecurityGroupIngressRequest() .withClusterSecurityGroupName(clusterSecurityGroupName) .withEC2SecurityGroupName("default") .withEC2SecurityGroupOwnerId(ownerID); result = client.authorizeClusterSecurityGroupIngress(request); System.out.format("\nAdded ingress rules to security group '%s'\n", clusterSecurityGroupName); printResultSecurityGroup(result); }

private static void associateSecurityGroupWithCluster() {

// Get existing security groups used by the cluster. DescribeClustersRequest request = new DescribeClustersRequest() .withClusterIdentifier(clusterIdentifier);

DescribeClustersResult result = client.describeClusters(request); List<ClusterSecurityGroupMembership> membershipList = result.getClusters().get(0).getClusterSecurityGroups();

List<String> secGroupNames = new ArrayList<String>(); for (ClusterSecurityGroupMembership mem : membershipList) { secGroupNames.add(mem.getClusterSecurityGroupName()); } // Add new security group to the list. secGroupNames.add(clusterSecurityGroupName);

// Apply the change to the cluster. ModifyClusterRequest request2 = new ModifyClusterRequest() .withClusterIdentifier(clusterIdentifier) .withClusterSecurityGroups(secGroupNames);

Cluster result2 = client.modifyCluster(request2); System.out.format("\nAssociated security group '%s' to cluster '%s'.", clusterSecurityGroupName, clusterIdentifier); }

private static void describeClusterSecurityGroups() { DescribeClusterSecurityGroupsRequest request = new DescribeClusterSecur ityGroupsRequest();

DescribeClusterSecurityGroupsResult result = client.describeClusterSe curityGroups(request); printResultSecurityGroups(result.getClusterSecurityGroups()); }

private static void printResultSecurityGroups(List<ClusterSecurityGroup> groups) { if (groups == null) { System.out.println("\nDescribe cluster security groups result is null."); return; }

API Version 2012-12-0140

Amazon Redshift 管理ガイドAWS SDK for Java を使用したセキュリティグループの管

Page 45: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

System.out.println("\nPrinting security group results:"); for (ClusterSecurityGroup group : groups) { printResultSecurityGroup(group); } } private static void printResultSecurityGroup(ClusterSecurityGroup group) {

System.out.format("\nName: '%s', Description: '%s'\n", group.getClusterSecurityGroupName(), group.getDescription()); for (EC2SecurityGroup g : group.getEC2SecurityGroups()) { System.out.format("EC2group: '%s', '%s', '%s'\n", g.getEC2Security GroupName(), g.getEC2SecurityGroupOwnerId(), g.getStatus()); } for (IPRange range : group.getIPRanges()) { System.out.format("IPRanges: '%s', '%s'\n", range.getCIDRIP(), range.getStatus());

} }}

AmazonRedshift CLIおよびAPIを使用したセキュリティグループの管理

次の Amazon Redshift CLI 操作を使用して、セキュリティグループを管理できます。

• authorize-cluster-security-group-ingress• create-cluster-security-group• delete-cluster-security-group• describe-cluster-security-groups• revoke-cluster-security-group-ingress

次の Amazon Redshift API を使用して、セキュリティグループを管理できます。

• AuthorizeClusterSecurityGroupIngress• CreateClusterSecurityGroup• DeleteClusterSecurityGroup• DescribeClusterSecurityGroups• RevokeClusterSecurityGroupIngress

API Version 2012-12-0141

Amazon Redshift 管理ガイドAmazon Redshift CLI および API を使用したセキュリティ

グループの管理

Page 46: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift パラメータグループ

Topics• 概要 (p. 42)• コンソールを使用したパラメータグループの管理 (p. 44)• AWS SDK for Java を使用したパラメータグループの管理 (p. 48)• Amazon Redshift CLI および API を使用したパラメータグループの管理 (p. 52)

概要AmazonRedshiftクラスターをプロビジョニングするときに、パラメータグループをクラスターに関連付けます。グループ内のパラメータはクラスターに作成したすべてのデータベースに適用されます。AmazonRedshiftエンジンにはデフォルトのパラメータグループが用意されており、そのパラメータには値があらかじめ設定されています。デフォルトのパラメータグループの値を変更することはできません。デフォルトのパラメータグループの名前は default.redshift-versionです。例:default.redshift-1.0。

パラメータグループで使用できるパラメータのリストは、パラメータグループが属しているパラメータグループファミリーによって異なります。パラメータグループファミリーは Amazon Redshift のエンジンバージョンを参照します。例えば、パラメータグループファミリー「redshift-1.0」は、AmazonRedshift エンジンのバージョン1.0を識別します。このファミリーのパラメータグループには、特定のバージョンの Amazon Redshift 用の固有のパラメータセットがあります。次の表は、redshift-1.0 パラメータグループファミリーの defaultパラメータグループのパラメータとその値の一覧です。

値パラメータ名

ISO, MDYdatestyle

0extra_float_digits

defaultquery_group

falserequire_ssl

API Version 2012-12-0142

Amazon Redshift 管理ガイド概要

Page 47: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

値パラメータ名

$user, publicsearch_path

0statement_timeout

[{"query_concurrency":5}]wlm_json_configuration

これらのパラメータの詳細については、「Amazon Redshift Developer Guide」の「ConfigurationReference」を参照してください。ワークロード管理構成を設定するには、wlm_json_configurationパラメータを次のwlm_json_configuration パラメータを使用したワークロード管理の構成 (p. 43)セクションで説明されているとおりに使用します。

Note

この時点では、Amazon Redshift エンジンはバージョン 1.0 のみのため、パラメータグループファミリーは redshift-1.0 のみです。defaultパラメータグループおよびユーザーが作成するパラメータグループは、redshift-1.0 ファミリーに属します。

お使いのアプリケーションに異なるパラメータ値が必要な場合は、独自のパラメータグループを作成できます。パラメータグループの作成は、クラスターの作成には依存していません。クラスターを作成する前にパラメータグループを作成できます。クラスターを作成するときにパラメータグループをクラスターに関連付けるか、defaultパラメータグループを使用することもできます。

パラメータグループを作成すると、初期状態ではパラメータグループのパラメータ値は defaultパラメータグループと同じ値ですが、パラメータ値は変更できます。

defaultパラメータグループまたは新規パラメータグループでは、すべてのパラメータはengine-default型になります。パラメータ値は Amazon Redshift によりあらかじめ設定されるためです。ユーザーが作成したパラメータグループのパラメータ値を変更すると、値が変更されたことを示すために、パラメータの型が userに変更されます。

ユーザーが作成したパラメータグループについては、パラメータ値はいつでも変更できます。またはすべてのパラメータ値をデフォルトにリセットすることもできます。また、異なるパラメータグループをクラスターに関連付けることもできます。既にクラスターと関連付けられているパラメータグループのパラメータ値を変更する、または異なるパラメータグループをクラスターと関連付ける場合、更新されたパラメータ値が有効になるようにクラスターまたはデータベースを再起動する必要があります。クラスターに障害が発生し、AmazonRedshiftにより再起動された場合、変更内容はそのときに適用されます。

wlm_json_configurationパラメータを使用したワークロード管理の構成ワークロード管理(WLM)を使用すると、複数のクエリキューを定義し、実行時にチャネルクエリを適切なキューに振り向けることができます。ワークロード管理についての詳細は、「Amazon RedshiftDeveloper Guide」の「Implementing Workload Management」を参照してください。

デフォルトでは、クラスターは 5 つのクエリを同時に実行する 1 つのキューで構成されます。他のクエリキューがない場合、AmazonRedshiftはクエリをこのキューに割り当てます。オプションで、JSONを使用してワークロード管理構成を指定して、パラメータグループのwlm_json_configurationパラメータを設定することで、より多くのキューを作成することができます。例えば、次の JSON は同時実行レベルを 5 に設定する、デフォルトのWLM 構成を示しています。

API Version 2012-12-0143

Amazon Redshift 管理ガイドwlm_json_configuration パラメータを使用したワークロー

ド管理の構成

Page 48: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

{ "query_concurrency":5}

独自のパラメータグループを作成する場合は、WLM構成を変更してより多くのキューを追加できます。例えば、次のJSONでは2つのキューを定義します。必須のデフォルトキューに加え、特定のユーザーグループと 1 つのクエリグループを持つキューを定義します。また、同時実行レベルを 7 に設定しています。

[ { "user_group":[ "example_user_group1" ], "query_group":[ "example_query_group1" ], "query_concurrency":7 }, { "query_concurrency":5 }]

Amazon Redshift 管理コンソールを使用すると、ユーザーインターフェイスを使用してクエリグループ、ユーザーグループ、同時実行レベルの値を指定できます。WLM 構成をプログラムで設定するには、JSONを作成して、パラメータグループを変更するためのリクエストに組み込む必要があります。サブトピックで、WLM 構成をプログラムで設定する方法、またはコンソールを使用して設定する方法を説明します。

コンソールを使用したパラメータグループの管理Topics• パラメータグループを作成する (p. 45)• パラメータグループを変更する (p. 46)• パラメータグループを削除する (p. 48)• パラメータグループとクラスターを関連付ける (p. 48)

AmazonRedshiftコンソールを使用して、パラメータグループの作成、変更、および削除を行うことができます。タスクのすべては、パラメータグループリストから開始します。

以下のパラメータグループリストには、2 つのパラメータグループ(デフォルトのパラメータグループ、および parametergroup1と呼ばれるカスタムのパラメータグループ)があります。parametergroup1が選択(強調表示)されているので、編集または削除ができます。

API Version 2012-12-0144

Amazon Redshift 管理ガイドコンソールを使用したパラメータグループの管理

Page 49: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

デフォルトのパラメータグループの削除や変更はできません。異なるパラメータ値を持つパラメータグループが必要な場合は、新規パラメータグループを作成し、それを変更する必要があります。デフォルトのパラメータグループはクラスターを起動するまでは作成されません。

各クラスターを1つのパラメータグループと関連付ける必要があります。クラスターを作成するときにこの関連付けを行うか、または異なるパラメータグループを使用するように既存のクラスターを変更することができます。クラスターにパラメータグループを関連付ける方法についての詳細は、「クラスターを変更するには (p. 14)」を参照してください。クラスターと関連付けられたパラメータグループの設定を変更する場合、クラスターが再起動するまではその変更は適用されません。

パラメータグループを作成するお使いのクラスターバージョン用のデフォルトのパラメータグループとは異なるパラメータ値を設定する場合は、パラメータグループを作成します。

パラメータグループを作成するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. [Navigation] ペインで、[Parameter Groups] をクリックします。3. [Create Cluster Parameter Group] をクリックします。

4. [Create Cluster Parameter Group] ダイアログボックスで、パラメータグループファミリー、パラメータグループ名、パラメータグループの説明を指定します。すべての設定が正しいことを確認したら、[Yes, Create] をクリックします。

API Version 2012-12-0145

Amazon Redshift 管理ガイドパラメータグループを作成する

Page 50: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

パラメータグループを変更する変更しているパラメータグループがクラスターと関連付けられている場合は、パラメータグループへの変更内容はクラスターが再起動された後に適用されます。

パラメータグループを変更するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. [Navigation] ペインで、[Parameter Groups] をクリックします。3. パラメータグループリストで、変更するパラメータグループの行をクリックしてから、[Edit

Parameters] をクリックします。

1 行が強調表示され、[Edit Parameters] ボタンを有効化されている必要があります。

Note

デフォルトのパラメータグループを変更することはできません。

4. [Edit]タブをクリックします。パラメータ値を変更するには、[Value]列の対応するボックスに新しい値を入力します。すべての設定が正しいことを確認したら、[SaveChanges]をクリックします。

5. ワークロード管理構成を編集するには、パラメータグループリストで、変更するパラメータグループの行をクリックしてから、[Edit WLM] をクリックします。

API Version 2012-12-0146

Amazon Redshift 管理ガイドパラメータグループを変更する

Page 51: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

[WLM] タブをクリックし、ワークロード管理構成を編集します。

a. 以下のいずれかを行ってください。

操作目的

キューの [Concurrency]、[User Groups]、または [Query Groups] フィールドを変更します。これらのキューのフィールドに関する詳細については、「Amazon Redshift Developer Guide」の「ImplementingWorkloadManagement」を参照してください。

既存のキューの変更

[Add New Queue] をクリックします。新しいキューの作成

[Up]および[Down]ボタンを使用して、ユーザーおよびクエリグループに基づいて、キューに割り当てられたクエリの順番を変更します。詳細については、「Amazon Redshift DeveloperGuide」の「Defining Query Queues」を参照してください。

リスト内でのキューの順番を変更する

キューの[X]ボタンをクリックして削除します。キューの削除

b. すべての設定が正しいことを確認したら、[Save Changes] をクリックします。

API Version 2012-12-0147

Amazon Redshift 管理ガイドパラメータグループを変更する

Page 52: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

パラメータグループを削除するパラメータグループが1つ以上のクラスターに関連付けられている場合は、パラメータグループを削除できません。

パラメータグループを削除するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. [Navigation] ペインで、[Parameter Groups] をクリックします。3. 削除するパラメータグループの行をクリックしてから、[Delete] をクリックします。

1 行が強調表示され、[Delete] ボタンを有効化されている必要があります。

Note

デフォルトのパラメータグループを削除することはできません。

4. [Delete Cluster Parameter Groups] ダイアログボックスで、[Delete] をクリックします。

パラメータグループとクラスターを関連付けるプロビジョニングしたクラスターごとに、1つのパラメータグループが関連付けられます。クラスターの作成時にパラメータグループを関連付けるか、またはクラスターを変更した後でパラメータグループを関連付けることができます。詳細については、「クラスターを作成するには (p. 8)」および「クラスターを変更するには (p. 14)」を参照してください。

AWSSDK for Javaを使用したパラメータグループの管理

この例では、パラメータグループに関連する以下のタスクについて説明します。

API Version 2012-12-0148

Amazon Redshift 管理ガイドパラメータグループを削除する

Page 53: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• パラメータグループを作成する• パラメータグループを変更する• パラメータグループとクラスターを関連付ける• パラメータグループに関する情報を取得する

この例では、新規パラメータグループ parametergroup1を作成し、以下の更新を実行します。

• パラメータ extra_float_digitsを、デフォルト値の 0 から 2 に変更します。• 既存のワークロード管理構成(wlm_json_configurationパラメータ)を、デフォルトのキューの他に 1 つのキューを定義する以下の JSON と置き換えます。

[ { "user_group":[ "example_user_group1" ], "query_group":[ "example_query_group1" ], "query_concurrency":7 }, { "query_concurrency":5 }]

前述の JSON は、2 つのオブジェクト(各キューにつき 1 つ)の配列です。最初のオブジェクトは、特定のユーザーグループとクエリグループを持つキューを定義します。また、同時実行レベルを7に設定しています。

{ "user_group":[ "example_user_group1" ], "query_group":[ "example_query_group1" ], "query_concurrency":7}

この例ではWLM構成を置き換えているため、このJSON設定では特定のユーザーグループとクエリグループを持たないデフォルトのキューも定義します。同時実行レベルをデフォルト値の 5 に設定します。

{ "query_concurrency":5}

ワークロード管理(WLM)構成についての詳細は、「Implementing workload management」を参照してください。

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例 (p. 109)」を参照してください。コードを更新し、クラスター識別子を指定する必要があります。

API Version 2012-12-0149

Amazon Redshift 管理ガイドAWS SDK for Java を使用したパラメータグループの管理

Page 54: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

import java.io.IOException;import java.util.ArrayList;import java.util.List;

import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.PropertiesCredentials;import com.amazonaws.services.redshift.AmazonRedshiftClient;import com.amazonaws.services.redshift.model.*;

public class CreateAndModifyClusterParameterGroup {

public static AmazonRedshiftClient client; public static String clusterParameterGroupName = "parametergroup1"; public static String clusterIdentifier = "***provide cluster identifier***";

public static String parameterGroupFamily = "redshift-1.0";

public static void main(String[] args) throws IOException {

AWSCredentials credentials = new PropertiesCredentials( CreateAndModifyClusterParameterGroup.class .getResourceAsStream("AwsCredentials.properties"));

client = new AmazonRedshiftClient(credentials);

try { createClusterParameterGroup(); modifyClusterParameterGroup(); associateParameterGroupWithCluster(); describeClusterParameterGroups(); } catch (Exception e) { System.err.println("Operation failed: " + e.getMessage()); } }

private static void createClusterParameterGroup() { CreateClusterParameterGroupRequest request = new CreateClusterParamet erGroupRequest() .withDescription("my cluster parameter group") .withParameterGroupName(clusterParameterGroupName) .withParameterGroupFamily(parameterGroupFamily); client.createClusterParameterGroup(request); System.out.println("Created cluster parameter group."); }

private static void describeClusterParameterGroups() { DescribeClusterParameterGroupsResult result = client.describeClusterPara meterGroups(); printResultClusterParameterGroups(result); }

private static void modifyClusterParameterGroup() { List<Parameter> parameters = new ArrayList<Parameter>(); parameters.add(new Parameter() .withParameterName("extra_float_digits") .withParameterValue("2")); // Replace WLM configuration. The new configuration defines a queue (in addition to the default).

API Version 2012-12-0150

Amazon Redshift 管理ガイドAWS SDK for Java を使用したパラメータグループの管理

Page 55: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

parameters.add(new Parameter() .withParameterName("wlm_json_configuration") .withParameterValue("[{\"user_group\":[\"ex ample_user_group1\"],\"query_group\":[\"example_query_group1\"],\"query_concur rency\":7},{\"query_concurrency\":5}]"));

ModifyClusterParameterGroupRequest request = new ModifyClusterParamet erGroupRequest() .withParameterGroupName(clusterParameterGroupName) .withParameters(parameters); client.modifyClusterParameterGroup(request);

}

private static void associateParameterGroupWithCluster() {

ModifyClusterRequest request = new ModifyClusterRequest() .withClusterIdentifier(clusterIdentifier) .withClusterParameterGroupName(clusterParameterGroupName);

Cluster result = client.modifyCluster(request);

System.out.format("Parameter Group %s is used for Cluster %s\n", clusterParameterGroupName, result.getClusterParamet erGroups().get(0).getParameterGroupName()); } private static void printResultClusterParameterGroups(DescribeClusterPara meterGroupsResult result) { if (result == null) { System.out.println("\nDescribe cluster parameter groups result is null."); return; }

System.out.println("\nPrinting parameter group results:\n"); for (ClusterParameterGroup group : result.getParameterGroups()) { System.out.format("\nDescription: %s\n", group.getDescription()); System.out.format("Group Family Name: %s\n", group.getParameterGroup Family()); System.out.format("Group Name: %s\n", group.getParameterGroupName());

describeClusterParameters(group.getParameterGroupName()); } }

private static void describeClusterParameters(String parameterGroupName) {

DescribeClusterParametersRequest request = new DescribeClusterParamet ersRequest() .withParameterGroupName(parameterGroupName);

DescribeClusterParametersResult result = client.describeClusterParamet ers(request); printResultClusterParameters(result, parameterGroupName); }

API Version 2012-12-0151

Amazon Redshift 管理ガイドAWS SDK for Java を使用したパラメータグループの管理

Page 56: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

private static void printResultClusterParameters(DescribeClusterParamet ersResult result, String parameterGroupName) { if (result == null) { System.out.println("\nCluster parameters is null."); return; }

System.out.format("\nPrinting cluster parameters for \"%s\"\n", paramet erGroupName); for (Parameter parameter : result.getParameters()) { System.out.println(" Name: " + parameter.getParameterName() + ", Value: " + parameter.getParameterValue()); System.out.println(" DataType: " + parameter.getDataType() + ", MinEngineVersion: " + parameter.getMinimumEngineVersion()); System.out.println(" AllowedValues: " + parameter.getAllowedValues() + ", Source: " + parameter.getSource()); System.out.println(" IsModifiable: " + parameter.getIsModifiable() + ", Description: " + parameter.getDescription()); } }}

Amazon Redshift CLI および API を使用したパラメータグループの管理

次の Amazon Redshift CLI 操作を使用してパラメータグループを管理することができます。

• create-cluster-parameter-group• delete-cluster-parameter-group• describe-cluster-parameters• describe-cluster-parameter-groups• describe-default-cluster-parameters• modify-cluster-parameter-group• reset-cluster-parameter-group

次の Amazon Redshift API を使用してパラメータグループを管理することができます。

• CreateClusterParameterGroup• DeleteClusterParameterGroup• DescribeClusterParameters• DescribeClusterParameterGroups• DescribeDefaultClusterParameters• ModifyClusterParameterGroup• ResetClusterParameterGroup

API Version 2012-12-0152

Amazon Redshift 管理ガイドAmazon Redshift CLI および API を使用したパラメータグ

ループの管理

Page 57: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift スナップショット

Topics• 概要 (p. 53)• コンソールを使用したスナップショットの管理 (p. 56)• AWS SDK for Java を使用したスナップショットの管理 (p. 62)• Amazon Redshift CLI および API を使用したスナップショットの管理 (p. 65)

概要スナップショットはクラスターのポイントインタイムバックアップです。スナップショットは、自動的に作成することも手動で作成することもできます。AmazonRedshiftは、これらのスナップショットをAmazonS3に暗号化SecureSockets Layer(SSL)接続を使用して内部的に保存できます。クラスターを復元する必要がある場合は、AmazonRedshiftで新しいクラスターを作成し、指定したスナップショットからデータをインポートします。

自動スナップショットと手動スナップショットクラスターを作成するとき、AmazonRedshiftではデフォルトで自動スナップショットが有効になっています。自動スナップショットが有効になっている場合、AmazonRedshiftでは定期的に自動スナップショットを取得します。自動スナップショットは、指定の保持期間が終了すると、AmazonRedshiftによって削除されます。デフォルトの保持期間は1日です。保持期間は、AmazonRedshiftコンソールを使用して変更することも、Amazon Redshift の API または AWS SDK を使用してプログラム的に変更することもできます。保持期間を0(ゼロ)に設定すると、自動スナップショットは無効になります。この場合、Amazon Redshift はスナップショットの取得を中止し、クラスターの既存の自動スナップショットをいずれも削除します。

自動スナップショットを削除できるのは Amazon Redshift だけであり、これを手動で削除することはできません。自動スナップショットを無効にした場合、またはクラスターを削除した場合、自動スナップショットは、その保持期間が終了すると、Amazon Redshift によって削除されます。

自動スナップショットが有効になっているかどうかに関係なく、いつでも好きなときにスナップショットを手動で取得できます。手動スナップショットが Amazon Redshift によって自動的に削除されることはありません。手動スナップショットは、クラスターを削除した後も保持されます。手動スナップショットにはストレージ料金が発生するので、不要になったスナップショットについては手動で削除することが重要です。手動スナップショットを削除すると、そのスナップショットは表示不可能となり、

API Version 2012-12-0153

Amazon Redshift 管理ガイド概要

Page 58: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

そのスナップショットを参照する操作を新たに開始することはできません。復元操作が進行中である場合、復元は完了するまで実行されます。

バックアップ時間を短縮し、S3 ストレージ要件を軽減するために、Amazon Redshift では差分バックアップを使用します。スナップショットが取得されるとき、前回のスナップショット以降にクラスターに加えられた変更がバックアップによって記録されます。AmazonRedshiftでは、手動スナップショットを使用してクラスターを復元するのに必要なすべての差分バックアップデータ、またはスナップショットの保持期限に達していない自動スナップショットを確実に保持します。

長期稼働スナップショットの進行状況をモニタリングすることができます。モニタリングは CLI でdescribe-cluster-snapshot を呼び出すか、DescribeClusterSnapshots API アクションを呼び出すか、または AWS Management Console でスナップショットの詳細を表示します。これにより、進行中のスナップショットについて、差分バックアップのサイズ、転送速度、経過時間、および推定残り時間などの情報が表示されます。

AmazonRedshiftでは、お使いのクラスターのストレージ容量に等しい空きストレージをスナップショット用に提供しており、これはそのクラスターが削除されるまで有効です。この空きストレージは、自動スナップショットにも手動スナップショットにも使用できます。空きバックアップストレージが一杯になった場合、追加のストレージには通常料金が請求されます。料金表については、AmazonRedshiftの製品詳細ページを参照してください。

スナップショットからのクラスターの復元スナップショットには、クラスター上で動作しているデータベースからのデータと、クラスターに関する情報(ノード数、ノートのタイプ、マスターユーザー名など)が含まれます。スナップショットからクラスターを復元する必要がある場合は、AmazonRedshiftでクラスター情報を使用して新しいクラスターを作成し、スナップショットデータからすべてのデータベースを復元します。AmazonRedshiftがスナップショットから作成した新しいクラスターの設定(ノード数やノードのタイプなど)は、スナップショットが取得された元のクラスターの設定と同じです。クラスターが復元される場所は、リクエスト時に別のアベイラビリティーゾーンを指定しない限り、同じリージョンおよびアベイラビリティーゾーンとなります。

DescribeClustersAPIアクションを呼び出すか、AWSManagementConsoleでクラスターの詳細を表示することにより、復元の進行状況をモニタリングできます。これにより、進行中の復元について、スナップショットデータのサイズ、転送速度、経過時間、および推定残り時間などの情報が表示されます。メトリックスの説明については、RestoreStatus を参照してください。

スナップショットを使用して、アクティブクラスターを前の状態に切り替えることはできません。

Note

新しいクラスターは、デフォルトのセキュリティおよびパラメータのグループに関連付けられるだけです。元のクラスターがその他のいずれかのセキュリティまたはパラメータのグループに関連付けられていた場合は、それらのグループを手動で新しいクラスターに関連付ける必要があります。

自動スナップショットのコピー自動スナップショットを無効にした場合、またはクラスターを削除した場合、自動スナップショットは、その保持期間が終了した時点で、AmazonRedshiftによって削除されます。自動スナップショットをもっと長い期間保持したい場合は、それを手動スナップショットにコピーします。手動スナップショットは、それを手動で削除するまで保持されます。

API Version 2012-12-0154

Amazon Redshift 管理ガイドスナップショットからのクラスターの復元

Page 59: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

スナップショットの共有1つの既存の手動スナップショットについては、そのスナップショットへのアクセスを許可することにより、最大 20 の AWS 顧客アカウントのユーザーと共有することができます。アクセス権限が付与されたいずれかのアカウントのユーザーとしてログインされた担当者は、スナップショットを表示することも、当該アカウントでスナップショットを復元して新しい Redshift クラスターを作成することもできます。例えば、実稼働用およびテスト用に個別のAWS顧客アカウントを使用する場合、ユーザーは本番用アカウントを使用してログオンし、テスト用アカウントのユーザーとスナップショットを共有することができます。テスト用アカウントのユーザーとしてログオンされた担当者は、テストまたは診断作業のためのテスト用アカウントによって所有される新しいクラスターを作成するためにスナップショットを復元することができます。

手動スナップショットは、それが作成されたAWS顧客アカウントによって永続的に所有されます。スナップショットを所有するアカウントのユーザーのみが、スナップショットへのアクセスを他のアカウントに許可したり、アクセス許可を取り消したりすることができます。アクセス権限が付与されたアカウントのユーザーは、そのアカウントと共有されているスナップショットの表示または復元が行えるだけで、共有されているスナップショットのコピーや削除を行うことはできません。アクセス許可はスナップショットの所有者がそれを取り消すまで有効です。アクセス許可が取り消されると、前にアクセス権限を付与されたユーザーはスナップショットの可視性を失い、スナップショットを参照する新しいアクションを起動できなくなります。アクセス権限が取り消される際、アカウントがスナップショットを復元するプロセスの途中にあった場合、復元は完了するまで実行されます。スナップショットにアクティブ認可がある限り、そのスナップショットを削除することはできません。まず、すべてのアクセス許可を取り消す必要があります。

AWS 顧客アカウントには、該当するアカウントによって所有されるスナップショットへのアクセスが常に許可されます。所有者アカウントへのアクセスを許可する試みまたは取り消す試みを行うと、エラーが発生します。非アクティブAWS顧客アカウントによって所有されているスナップショットを復元または表示することはできません。

AWS顧客アカウントへのアクセスを許可した場合、そのアカウントの IAMユーザーはスナップショットでのアクションの実行を許可する IAM ポリシーを持っていない限り、そのようなアクションを実行できません。

• スナップショット所有者アカウントの IAM ユーザーがスナップショットへのアクセスを許可および取り消しできるのは、それらのユーザーが、当該スナップショットが含まれるリソース仕様を使用してそうしたアクションを実行することを許可してくれる IAM ポリシーを持っている場合に限られます。例えば、以下のポリシーを持っていれば、AWS アカウント 012345678912のユーザーは、my-snapshot20130829という名前のスナップショットへのアクセスを他のアカウントに許可することができます。

{ "Statement":[ { "Effect":"Allow", "Action":[ "redshift:AuthorizeSnapshotAccess", "redshift:RevokeSnapshotAccess" ], "Resource":[ "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snap shot20130829" ] } ]}

API Version 2012-12-0155

Amazon Redshift 管理ガイドスナップショットの共有

Page 60: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• スナップショットが共有されている AWS アカウントの IAM ユーザーは、そのスナップショットでアクションを実行することを許可する IAM ポリシーを持っていない限り、そうしたアクションを実行することはできません。• スナップショットを一覧または表示するためには、前述ユーザーはDescribeClusterSnapshotsアクションを許可する IAM ポリシーを持っている必要があります。以下に例を示します。

{ "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusterSnapshots" ], "Resource":[ "*" ] } ]}

• スナップショットを復元するためには、前述ユーザーは、RestoreFromClusterSnapshotアクションを許可すると共に、ユーザーが作成しようとしているクラスターとスナップショットとを両方ともカバーしたリソースエレメントを含んでいるIAMポリシーを、持っている必要があります。例えば、アカウント 012345678912のユーザーがスナップショット my-snapshot20130829をアカウント 219876543210と共有している場合、スナップショットを復元してクラスターを作成するには、アカウント 219876543210のユーザーが次のようなポリシーを持っている必要があります。

{ "Statement":[ { "Effect":"Allow", "Action":[ "redshift:RestoreFromClusterSnapshot" ], "Resource":[ "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snap shot20130829", "arn:aws:redshift:us-east-1:219876543210:cluster:from-another-account" ] } ]}

• スナップショットへのアクセスが AWS アカウントによって取り消されると、そのアカウントのユーザーは、前に共有していたスナップショットリソースでのアクションを許可するIAMポリシーを持っていたとしても、スナップショットにアクセスできなくなります。

コンソールを使用したスナップショットの管理Topics• 手動スナップショットの作成 (p. 57)

API Version 2012-12-0156

Amazon Redshift 管理ガイドコンソールを使用したスナップショットの管理

Page 61: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• 手動スナップショットの削除 (p. 58)• 自動スナップショットのコピー (p. 59)• スナップショットからのクラスターの復元 (p. 60)• クラスターのスナップショットの共有 (p. 61)

Amazon Redshift は、データの自動的な差分スナップショットを定期的に取得し、Amazon S3 に保存します。さらに、いつでも好きなときにデータの手動スナップショットを取得することもできます。このセクションでは、AmazonRedshiftコンソールからスナップショットを管理する方法について説明します。スナップショットの詳細については、「AmazonRedshiftスナップショット(p. 53)」を参照してください。

AmazonRedshiftコンソールでのスナップショットタスクはすべてスナップショットリストから開始します。スナップショットのタイプ、時間範囲、および関連付けられたクラスターを使用してリストをフィルタリングすることができます。既存のスナップショットを選択すると、以下の例に示すように、スナップショットの詳細がリスト内にインライン形式で表示されます。スナップショットを操作する場合に使用できるオプションは、選択するスナップショットのタイプに応じて異なります。

手動スナップショットの作成クラスターの手動スナップショットは、以下に示すスナップショットリストから作成できます。あるいは、クラスター設定ペインでクラスターのスナップショットを取得することもできます(「クラスターのスナップショットの作成 (p. 20)」を参照)。

手動スナップショットを作成する方法

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Snapshots] をクリックします。3. [Create Snapshot] をクリックします。

API Version 2012-12-0157

Amazon Redshift 管理ガイド手動スナップショットの作成

Page 62: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

4. [Create Snapshot] ダイアログボックスで、次の操作を行います。

a. [Cluster Identifier] ボックスで、スナップショットを作成するクラスターをクリックします。b. [Snapshot Identifier] ボックスに、スナップショットの名前を入力します。

5. [Create] をクリックします。

スナップショットの作成が完了するまで時間がかかる場合があります。新しいスナップショットとその現在の状態がスナップショットのリストに表示されます。以下の例は、examplecluster-manual-02-13-13が作成過程にあることを示しています。

手動スナップショットの削除手動スナップショットを削除する方法

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Snapshots] をクリックします。3. 削除するスナップショットを見つけるためにリストをフィルタリングする必要がある場合は、以下

に示す操作のいずれか、またはすべてを実行します。

• [Time Range] ボックスで、検索範囲を絞るための時間範囲をクリックします。• [Type] ボックスの [manual] をクリックします。• [Cluster]ボックスで、削除するスナップショットが関連付けられているクラスターをクリックします。

API Version 2012-12-0158

Amazon Redshift 管理ガイド手動スナップショットの削除

Page 63: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

4. スナップショットリストで、削除するスナップショットが含まれている行をクリックします。5. [Delete Manual Snapshot] をクリックします。

6. [Delete Manual Snapshot] ダイアログボックスの [Delete] をクリックします。

自動スナップショットのコピー自動スナップショットを無効にした場合、またはクラスターを削除した場合、自動スナップショットはその保持期間が過ぎると自動的に削除されます。自動スナップショットをもっと長い期間保持したい場合は、それを手動スナップショットにコピーします。手動スナップショットがAmazonRedshiftによって自動的に削除されることはないので、このコピーは必要に応じて保管しておくことができます。

自動スナップショットをコピーする方法

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Snapshots] をクリックします。3. 削除するスナップショットを見つけるためにリストをフィルタリングする必要がある場合は、以下

に示す操作のいずれか、またはすべてを実行します。

• [Time Range] ボックスで、検索範囲を絞るための時間範囲をクリックします。• [Type] ボックスの [automated] をクリックします。• [Cluster]ボックスで、コピーするスナップショットが関連付けられているクラスターをクリックします。

4. スナップショットリストで、コピーするスナップショットの行をクリックします。5. [Copy Automated Snapshot] をクリックします。

API Version 2012-12-0159

Amazon Redshift 管理ガイド自動スナップショットのコピー

Page 64: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

6. [Copy Automated Snapshot]ダイアログボックスの[Snapshot Identifier]ボックスにスナップショットのコピーの名前を入力します。

7. [Copy] をクリックします。

スナップショットからのクラスターの復元クラスターをスナップショットから復元する場合は、AmazonRedshiftによって新しいクラスターが作成され、その新しいクラスターにスナップショットのすべてのデータが含められます。

スナップショットからクラスターを復元する方法

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Snapshots] をクリックします。3. 削除するスナップショットを見つけるためにリストをフィルタリングする必要がある場合は、以下

に示す操作のいずれか、またはすべてを実行します。

• [Time Range] ボックスで、検索範囲を絞るための時間範囲をクリックします。• [Type] ボックスの [manual] または [automated] をクリックします。• [Cluster]ボックスで、コピーするスナップショットが関連付けられているクラスターをクリックします。

4. スナップショットリストで、使用するスナップショットが含まれている行をクリックします。5. [Restore From Snapshot] をクリックします。

API Version 2012-12-0160

Amazon Redshift 管理ガイドスナップショットからのクラスターの復元

Page 65: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

6. [Restore Cluster from Snapshot] ダイアログボックスで、以下の操作を行います。

a. [Cluster Identifier] ボックスに、復元するクラスターのクラスター識別子を入力します。

クラスター識別子は、次の条件を満たしている必要があります。

• 1~255 文字の英数字またはハイフンを含める必要があります。• 英字は小文字を使用する必要があります。• 1 字目は文字である必要があります。• ハイフンを、文字列の最後に使用したり、2 つ続けて使用したりすることはできません。• AWS アカウントのすべてのクラスター間で一意である必要があります。

b. [Port] ボックスでは、スナップショットからのポートをそのまま使用するか、またはその値を適宜変更します。

c. 必要に応じて [Allow Version Upgrade] を選択します。d. [Availability Zone]ボックスでは、スナップショットからのアベイラビリティーゾーンをそのま

ま使用するか、その値を適宜変更します。

7. [Restore] をクリックします。

クラスターが、デフォルトのセキュリティおよびパラメータのグループで作成されます。クラスターのセキュリティグループおよびパラメータグループの変更の詳細については、「コンソールを使用したセキュリティグループの管理 (p. 34)」および「コンソールを使用したパラメータグループの管理 (p. 44)」を参照してください。

クラスターのスナップショットの共有自分が所有する手動スナップショットへのアクセスを他のユーザーに許可することができます。そのアクセス許可については後で不要になった場合に取り消すことができます。

API Version 2012-12-0161

Amazon Redshift 管理ガイドクラスターのスナップショットの共有

Page 66: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クラスターのスナップショットを共有する方法

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインで [Snapshots] をクリックします。3. 削除するスナップショットを見つけるためにリストをフィルタリングする必要がある場合は、以下

に示す操作のいずれか、またはすべてを実行します。

• [Time Range] ボックスで、検索範囲を絞るための時間範囲をクリックします。• [Type] ボックスの [manual] または [automated] をクリックします。• [Cluster]ボックスで、コピーするスナップショットが関連付けられているクラスターをクリックします。

4. スナップショットリストで、使用するスナップショットが含まれている行をクリックします。5. [Manage Access ] をクリックします。6. [Manage Snapshot Access] ダイアログボックスで、スナップショットにアクセスする権限をユー

ザーに与えることも、前に与えたアクセス権限を取り消すこともできます。

• スナップショットにアクセスする権限をユーザーに与えるには、対象ユーザーの 12 桁の AWSアカウント ID(ダッシュを除く)をボックスに入力し、[Add Account] をクリックします。

• ユーザーのアクセス権限を取り消すには、ユーザーの AWS アカウント ID の横にある [X] をクリックします。

7. [Save]をクリックして変更内容を保存するか、[Cancel]をクリックして変更内容を元に戻します。

AWSSDK for Javaを使用したスナップショットの管理

以下の例では、スナップショットに関係する一般的な操作を示します。

• クラスターの手動クラスタースナップショットの作成• クラスターのすべてのスナップショットに関する情報の表示• クラスターの手動スナップショットの削除

API Version 2012-12-0162

Amazon Redshift 管理ガイドAWS SDK for Java を使用したスナップショットの管理

Page 67: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

この例では、クラスターのスナップショットが開始されます。スナップショットが正常に作成されると、新しいスナップショットよりも前に作成されていた、クラスターの手動スナップショットがすべて削除されます。手動スナップショットの作成が開始されても、それがすぐに利用できるわけではないので、この例では、describeClusterSnapshotメソッドを呼び出してスナップショットの状態をポーリングするループを使用しています。開始後スナップショットが使用できるようになるまでに通常は数分かかります。スナップショットの詳細については、「AmazonRedshiftスナップショット(p. 53)」を参照してください。

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例 (p. 109)」を参照してください。コードを更新し、クラスター識別子を指定する必要があります。

import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;

import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.PropertiesCredentials;import com.amazonaws.services.redshift.AmazonRedshiftClient;import com.amazonaws.services.redshift.model.CreateClusterSnapshotRequest;import com.amazonaws.services.redshift.model.DeleteClusterSnapshotRequest;import com.amazonaws.services.redshift.model.DescribeClusterSnapshotsRequest;import com.amazonaws.services.redshift.model.DescribeClusterSnapshotsResult;import com.amazonaws.services.redshift.model.Snapshot;

public class CreateAndDescribeSnapshot {

public static AmazonRedshiftClient client; public static String clusterIdentifier = "***provide cluster identifier***";

public static long sleepTime = 10;

public static void main(String[] args) throws IOException {

AWSCredentials credentials = new PropertiesCredentials( CreateAndDescribeSnapshot.class .getResourceAsStream("AwsCredentials.properties"));

client = new AmazonRedshiftClient(credentials);

try { // Unique snapshot identifier String snapshotId = "my-snapshot-" + (new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss")).format(new Date());

Date createDate = createManualSnapshot(snapshotId); waitForSnapshotAvailable(snapshotId); describeSnapshots(); deleteManualSnapshotsBefore(createDate); describeSnapshots();

} catch (Exception e) { System.err.println("Operation failed: " + e.getMessage()); } }

private static Date createManualSnapshot(String snapshotId) {

CreateClusterSnapshotRequest request = new CreateClusterSnapshotRequest()

API Version 2012-12-0163

Amazon Redshift 管理ガイドAWS SDK for Java を使用したスナップショットの管理

Page 68: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

.withClusterIdentifier(clusterIdentifier) .withSnapshotIdentifier(snapshotId); Snapshot snapshot = client.createClusterSnapshot(request); System.out.format("Created cluster snapshot: %s\n", snapshotId); return snapshot.getSnapshotCreateTime(); }

private static void describeSnapshots() {

DescribeClusterSnapshotsRequest request = new DescribeClusterSnapshots Request() .withClusterIdentifier(clusterIdentifier); DescribeClusterSnapshotsResult result = client.describeClusterSnap shots(request);

printResultSnapshots(result); }

private static void deleteManualSnapshotsBefore(Date creationDate) {

DescribeClusterSnapshotsRequest request = new DescribeClusterSnapshots Request() .withEndTime(creationDate) .withClusterIdentifier(clusterIdentifier) .withSnapshotType("manual");

DescribeClusterSnapshotsResult result = client.describeClusterSnap shots(request);

for (Snapshot s : result.getSnapshots()) { DeleteClusterSnapshotRequest deleteRequest = new DeleteClusterSnap shotRequest() .withSnapshotIdentifier(s.getSnapshotIdentifier()); Snapshot deleteResult = client.deleteClusterSnapshot(deleteRequest);

System.out.format("Deleted snapshot %s\n", deleteResult.getSnap shotIdentifier()); } }

private static void printResultSnapshots(DescribeClusterSnapshotsResult result) { System.out.println("\nSnapshot listing:"); for (Snapshot snapshot : result.getSnapshots()) { System.out.format("Identifier: %s\n", snapshot.getSnapshotIdentifi er()); System.out.format("Snapshot type: %s\n", snapshot.getSnapshotType());

System.out.format("Snapshot create time: %s\n", snapshot.getSnap shotCreateTime()); System.out.format("Snapshot status: %s\n\n", snapshot.getStatus());

} }

private static Boolean waitForSnapshotAvailable(String snapshotId) throws InterruptedException {

API Version 2012-12-0164

Amazon Redshift 管理ガイドAWS SDK for Java を使用したスナップショットの管理

Page 69: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Boolean snapshotAvailable = false; System.out.println("Wating for snapshot to become available."); while (!snapshotAvailable) { DescribeClusterSnapshotsResult result = client.describeClusterSnap shots(new DescribeClusterSnapshotsRequest() .withSnapshotIdentifier(snapshotId)); String status = (result.getSnapshots()).get(0).getStatus(); if (status.equalsIgnoreCase("available")) { snapshotAvailable = true; } else { System.out.print("."); Thread.sleep(sleepTime*1000); } } return snapshotAvailable; }

}

AmazonRedshift CLIおよびAPIを使用したスナップショットの管理

以下の Amazon Redshift CLI 操作を使用してスナップショットを管理できます。

• authorize-snapshot-access• copy-cluster-snapshot• create-cluster-snapshot• delete-cluster-snapshot• describe-cluster-snapshots• restore-from-cluster-snapshot• revoke-snapshot-access

以下の Amazon Redshift API アクションを使用して、スナップショットを管理できます。

• AuthorizeSnapshotAccess• CopyClusterSnapshot• CreateClusterSnapshot• DeleteClusterSnapshot• DescribeClusterSnapshots• RestoreFromClusterSnapshot• RevokeSnapshotAccess

Amazon Redshift スナップショットの詳細については、「Amazon Redshift スナップショット (p. 53)」を参照してください。

API Version 2012-12-0165

Amazon Redshift 管理ガイドAmazonRedshift CLIおよびAPIを使用したスナップショッ

トの管理

Page 70: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift イベント

Topics• 概要 (p. 66)• コンソールを使ったイベントの表示 (p. 66)• AWS SDK for Java を使ったイベントの表示 (p. 68)• Amazon Redshift CLI と API を使ったイベントの表示 (p. 69)

概要Amazon Redshift はイベントを追跡し、AWS アカウントで数週間、そのイベントに関する情報を保持します。AmazonRedshiftはイベントごとに、イベントが発生した日付、説明、イベントのソース(クラスター、パラメータグループ、またはスナップショット)、ソース ID などの情報を報告します。

Amazon Redshift コンソール、Amazon Redshift API、または AWS SDK を使って、イベント情報を取得できます。すべてのイベントのリストを取得することも、フィルタ(イベント期間、開始日と終了日など)を適用して、特定期間のイベント情報を取得することもできます。また、特定のソースタイプによって生成されたイベント(クラスターイベントやパラメータグループイベントなど)を取得することもできます。

コンソールを使ったイベントの表示左側のナビゲーションの[Events]をクリックして、AmazonRedshiftコンソールでイベントを表示できます。イベントのリストでは、[Source Type] フィルタ、またはリストのすべてのフィールド内のテキストをフィルタするカスタムの [Filter] を使って、結果をフィルタすることができます。例えば、「12Dec 2012」を検索する場合、この値を含む [Date] フィールドと一致します。

API Version 2012-12-0166

Amazon Redshift 管理ガイド概要

Page 71: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

イベントソースタイプは、イベントの種類を示します。次のソースタイプが使用できます。[Cluster]、[Cluster Parameter Group]、[Cluster Security Group]、[Snapshot]

イベントのフィルタ場合によって、特定のカテゴリのイベント、または特定のクラスターのイベントを検索する場合があります。このような場合、表示されたイベントをフィルタできます。

イベントをフィルタするには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. ナビゲーションペインの [Events] をクリックします。3. イベントをフィルタするには、以下のいずれかを実行します。

a. イベントタイプでフィルタするには、[Filter Cluster] をクリックして、ソースタイプを選択します。

b. イベントの説明に表示されたテキストでフィルタするには、検索ボックスにテキストを入力すると、入力内容に応じて、リストが絞り込まれます。

API Version 2012-12-0167

Amazon Redshift 管理ガイドイベントのフィルタ

Page 72: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

AWS SDK for Java を使ったイベントの表示次の例では、指定したクラスターのイベントと指定したイベントソースタイプを一覧表示します。この例では、ページネーションの使用方法を示します。

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例 (p. 109)」を参照してください。コードをアップデートして、クラスターの識別子とイベントソースタイプを指定する必要があります。

import java.io.IOException;import java.util.Date;

import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.PropertiesCredentials;import com.amazonaws.services.redshift.AmazonRedshiftClient;import com.amazonaws.services.redshift.model.*;

public class ListEvents {

public static AmazonRedshiftClient client; public static String clusterIdentifier = "***provide cluster identifier***";

public static String eventSourceType = "***provide source type***"; // e.g. cluster-snapshot

public static void main(String[] args) throws IOException {

AWSCredentials credentials = new PropertiesCredentials( ListEvents.class .getResourceAsStream("AwsCredentials.properties"));

client = new AmazonRedshiftClient(credentials);

try { listEvents(); } catch (Exception e) { System.err.println("Operation failed: " + e.getMessage()); } }

private static void listEvents() { long oneWeeksAgoMilli = (new Date()).getTime() - (7L*24L*60L*60L*1000L);

Date oneWeekAgo = new Date(); oneWeekAgo.setTime(oneWeeksAgoMilli); String marker = null;

do { DescribeEventsRequest request = new DescribeEventsRequest() .withSourceIdentifier(clusterIdentifier) .withSourceType(eventSourceType) .withStartTime(oneWeekAgo) .withMaxRecords(20); DescribeEventsResult result = client.describeEvents(request); marker = result.getMarker(); for (Event event : result.getEvents()) { printEvent(event);

API Version 2012-12-0168

Amazon Redshift 管理ガイドAWS SDK for Java を使ったイベントの表示

Page 73: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

} } while (marker != null);

} static void printEvent(Event event) { if (event == null) { System.out.println("\nEvent object is null."); return; }

System.out.println("\nEvent metadata:\n"); System.out.format("SourceID: %s\n", event.getSourceIdentifier()); System.out.format("Type: %s\n", event.getSourceType()); System.out.format("Message: %s\n", event.getMessage()); System.out.format("Date: %s\n", event.getDate()); }}

Amazon Redshift CLI と API を使ったイベントの表示

次の Amazon Redshift CLI 操作を使って、イベントを管理できます。

• イベントの説明

Amazon Redshift は次の API を使って、イベントを表示します。

• DescribeEvents

API Version 2012-12-0169

Amazon Redshift 管理ガイドAmazon Redshift CLI と API を使ったイベントの表示

Page 74: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift クラスターのパフォーマンスをモニタリングする

Topics• 概要 (p. 70)• Amazon Redshift パフォーマンスデータの概要 (p. 71)• Amazon Redshift コンソールでパフォーマンスデータを使用する (p. 74)

概要AmazonRedshiftでは、クラスターとデータベースの状態やパフォーマンスを追跡できるようにするため、パフォーマンスメトリックスとデータが提供されます。このセクションでは、AmazonRedshift(特に Amazon Redshift コンソール)で使用できるデータのタイプについて説明します。Amazon Redshiftコンソールで使用できるパフォーマンスデータは、次の 2 つのカテゴリに分類されます。

• Amazon CloudWatch メトリックス – Amazon CloudWatch メトリックスは、CPU使用率、レイテンシー、スループットなど、クラスターの物理的な側面をモニタリングするのに役立ちます。メトリックスデータはAmazon Redshift コンソールに直接表示されます。このデータはAmazon CloudWatchコンソールでも表示できるほか、Amazon CloudWatch コマンドラインインターフェイス(CLI)やAWS Software Development Kit(SDK)など、メトリックスを操作するその他の任意の方法でも使用できます。

• クエリ/ロードパフォーマンスデータ – パフォーマンスデータは、データベースのアクティビティとパフォーマンスをモニタリングするのに役立ちます。このデータは Amazon Redshift コンソールに集計され、AmazonCloudWatchメトリックスで表示される情報を、特定のデータベースクエリ/ロードイベントに簡単に関連付けることができます。また、ユーザー独自のカスタムパフォーマンスクエリを作成し、データベースで直接実行することもできます。クエリ/ロードパフォーマンスデータは、Amazon Redshift コンソールのみで表示されます。Amazon CloudWatch メトリックスとしては公開されません。

パフォーマンスデータは Amazon Redshift コンソールに統合され、次の方法でより高いエクスペリエンスが提供されます。

• クラスターに関連付けられたパフォーマンスデータは、クラスターを表示し、サイズ変更などクラスターに関する決定を行うためにパフォーマンスデータが必要になる可能性があるときに、コンテキストに応じて表示されます。

API Version 2012-12-0170

Amazon Redshift 管理ガイド概要

Page 75: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• 一部のパフォーマンスメトリックスは、Amazon CloudWatch と比較して、より適切にスケーリングされた単位で Amazon Redshift コンソールに表示されます。例えば、WriteThroughputは GB/秒(AmazonCloudWatchではバイト/秒)で表示されますが、これはノードの一般的なストレージ容量としてより適切な単位です。

• クラスターのノードのパフォーマンスデータは、簡単に同じグラフに一緒に表示できるので、クラスターのすべてのノードのパフォーマンスを簡単にモニタリングできます。ただし、ノードごとのパフォーマンスデータを表示することも可能です。

Amazon Redshift では、パフォーマンスデータ(Amazon CloudWatch メトリックスおよびクエリ/ロードデータの両方)が追加料金なしで提供されます。パフォーマンスデータは毎分記録されます。パフォーマンスデータの過去の値は、AmazonRedshiftコンソール内でアクセスできます。AmazonCloudWatchを使用して、Amazon CloudWatch メトリックスとして公開される Amazon Redshift パフォーマンスデータにアクセスする方法の詳細については、「AmazonCloudWatchDeveloperGuide」の「Introductionto Amazon CloudWatch」を参照してください。

Amazon Redshift パフォーマンスデータの概要Amazon Redshift CloudWatch メトリックスAmazon Redshift CloudWatch メトリックスでは、クラスターの状態とパフォーマンスに関する情報を取得し、ドリルダウンしてノードレベルでその情報を表示できます。これらのメトリックスを使用するときは、各メトリックスには1つ以上のディメンションが関連付けられていて、それによりメトリックスの適用先つまりメトリックスのスコープがわかることに留意してください。AmazonRedshiftには次の 2 つのディメンションがあります。

• NodeIDディメンションを持つメトリックスは、クラスターのノードのパフォーマンスデータを提供するメトリックスです。これには、リーダーノードおよびコンピューティングノードが含まれます。これらのメトリックスの例には、CPUUtilization、ReadIOPS、WriteIOPSがあります。

• ClusterIdentifierディメンションのみを持つメトリックスは、クラスターのパフォーマンスデータを提供するメトリックスです。これらのメトリックスの例には、HealthStatusやMaintenanceModeがあります。

Note

一部のメトリックスでは、クラスター固有のメトリックスがノード動作の集計を表し、そのメトリックス値の解釈には注意が必要です。これは、リーダーノードの動作はコンピューティングノードとともに集計されるためです。

Amazon CloudWatch メトリックスおよびディメンションの詳細については、「Amazon CloudWatchDeveloper Guide」の「Amazon CloudWatch Concepts」を参照してください。

次の表に、使用可能なすべてのメトリックスを示します。

説明メトリックス

CPU使用率(パーセンテージ)。このメトリックスは、クラスターに対するすべてのノード(リーダーおよびコンピューティング)のCPU使用率の値の集計を表します。

単位: Percent

ディメンション:ノード(リーダーおよびコンピューティング)、クラスター

CPUUtilization

API Version 2012-12-0171

Amazon Redshift 管理ガイドパフォーマンスデータの概要

Page 76: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

説明メトリックス

クラスターへのデータベース接続の数。

単位: Count

ディメンション: クラスター

DatabaseConnections

クラスターの状態を示します。クラスターは毎分データベースに接続し、簡単なクエリを実行します。この操作を正しく実行できる場合、クラスターは正常な状態であると見なされます。それ以外の場合、クラスターは正常な状態ではありません。正常でない状態が発生する可能性があるのは、クラスターデータベースに極端に高い負荷がかかっているか、クラスター上のデータベースに設定の問題がある場合です。

Note

Amazon CloudWatchでは、このメトリックスは1または0と報告されますが、AmazonRedshiftコンソールでは、このメトリックはわかりやすくするために HEALTHYまたは UNHEALTHYという単語で表示されます。このメトリックスが Amazon Redshift コンソールで表示される場合、サンプリング平均は無視され、HEALTHYまたはUNHEALTHYのみが表示されます。Amazon CloudWatch では、サンプリングの問題により、1または0以外の値が発生する場合があります。HealthStatusに対して 1 未満の値は 0(UNHEALTHY)と報告されます。

単位: 1/0(Amazon Redshift コンソールでは HEALTHY/UNHEALTHY)

ディメンション: クラスター

HealthStatus

クラスターがメンテナンスモードかどうかを示します。

Note

Amazon CloudWatchでは、このメトリックスは1または0と報告されますが、AmazonRedshiftコンソールでは、このメトリックはわかりやすくするためにONまたはOFFという単語で表示されます。このメトリックスが Amazon Redshift コンソールで表示される場合、サンプリング平均は無視され、ONまたは OFFのみが表示されます。Amazon CloudWatch では、サンプリングの問題により、1 または 0以外の値が発生する場合があります。MaintenanceModeに対して0 より大きい値は 1(ON)と報告されます。

単位: 1/0(Amazon Redshift コンソールでは ON/OFF)。

ディメンション: クラスター

MaintenanceMode

ノードまたはクラスターがデータを受け取るレート。

単位: バイト/秒(Amazon Redshift コンソールでは MB/秒)

ディメンション:ノード(リーダーおよびコンピューティング)、クラスター

NetworkReceiveThroughput

API Version 2012-12-0172

Amazon Redshift 管理ガイドAmazon Redshift CloudWatch メトリックス

Page 77: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

説明メトリックス

ノードまたはクラスターがデータを書き込むレート。

単位: バイト/秒(Amazon Redshift コンソールでは MB/秒)

ディメンション:ノード(リーダーおよびコンピューティング)、クラスター

NetworkTransmitThroughput

使用中のディスク容量の割合。

単位: Percent

ディメンション:ノード(リーダーおよびコンピューティング)、クラスター

PercentageDiskSpaceUsed

1 秒あたりのディスク読み取り操作の平均回数。

単位: 回/秒

ReadIOPS

ディスク読み取り I/O 操作にかかる平均時間。

単位: Seconds

ディメンション: ノード

ReadLatency

1 秒あたりのディスクからの平均読み取りバイト数。

単位: bytes(Amazon Redshift コンソールでは GB/秒)

ReadThroughput

1 秒あたりの書き込み操作の平均回数

単位: 回/秒

WriteIOPS

ディスク書き込み I/O 操作にかかる平均時間。

単位: Seconds

ディメンション: ノード

WriteLatency

1 秒あたりのディスクへの平均書き込みバイト数。

単位: bytes(Amazon Redshift コンソールでは GB/秒)

WriteThroughput

AmazonRedshiftのクエリ/ロードパフォーマンスデータAmazon CloudWatch メトリックスに加えて、Amazon Redshift はクエリ/ロードパフォーマンスデータを提供します。クエリ/ロードパフォーマンスデータを使用すると、データベースのパフォーマンスとクラスターメトリックス間の関係を理解するのに役立ちます。例えば、クラスターの CPU 使用率が急上昇したことに気付いた場合、クラスターの CPU グラフでその上昇を見つけ、そのときに実行されていたクエリを表示できます。逆に、特定のクエリについて確認している場合、メトリックスデータ(CPUなど)がコンテキストに表示されるので、クラスターメトリックスに対するクエリの影響について理解できます。

クエリ/ロードパフォーマンスデータはAmazon CloudWatchメトリックスとして公開されず、AmazonRedshift コンソールのみで表示できます。クエリ/ロードパフォーマンスデータはデータベースのシステムテーブルへのクエリから生成されます(「AmazonRedshift Developer Guide」の「SystemTablesReference」を参照してください)。ユーザー独自のカスタムデータベースパフォーマンスクエリを生成することもできますが、コンソールに表示されているクエリ/ロードパフォーマンスデータで開始することをお勧めします。ユーザー自身によるデータベースパフォーマンスの測定とモニタリングの詳細

API Version 2012-12-0173

Amazon Redshift 管理ガイドAmazon Redshift のクエリ/ロードパフォーマンスデータ

Page 78: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

については、「Amazon Redshift Developer Guide」の「Managing Performance」を参照してください。

次の表に、Amazon Redshift コンソールでアクセスできるクエリ/ロードデータのさまざまな側面を示します。

説明クエリ/ロードデータ

指定された期間のクエリのリストです。このリストは、クエリ ID、クエリ実行時間、ステータスなどの値に基づいて並べ替えることができます。このデータは、クラスター詳細ページの [Queries] タブからアクセスします。

クエリの概要

次のものを含む、特定のクエリの詳細を提供します。

• クエリ ID、タイプ、クエリが実行されたクラスター、実行時間などのクエリのプロパティ。

• クエリのステータス、エラー数などの詳細。• 実行された SQL ステートメント。• 利用可能な場合は説明プラン。• クエリ実行中のクラスターのパフォーマンスデータ(「Amazon RedshiftCloudWatch メトリックス (p. 71)」を参照)。

クエリの詳細

指定された期間のすべてのロードをリストします。このリストは、クエリID、クエリ実行時間、ステータスなどの値に基づいて並べ替えることができます。このデータは、クラスター詳細ページの [Loads] タブでアクセスします。このデータは、クラスター詳細ページの [Queries] タブからアクセスします。

ロードの概要

次のものを含む、特定のロード操作の詳細を提供します。

• クエリ ID、タイプ、クエリが実行されたクラスター、実行時間などのロードのプロパティ。

• ロードのステータス、エラー数などの詳細。• 実行された SQL ステートメント。• ロードされたファイルのリスト。• ロード操作中のクラスターのパフォーマンスデータ(「Amazon RedshiftCloudWatch メトリックス (p. 71)」を参照)。

ロードの詳細

AmazonRedshiftコンソールでパフォーマンスデータを使用する

このセクションでは、クラスターおよびクエリのパフォーマンスに関する情報を含むパフォーマンスデータをAmazon Redshift コンソールで表示する方法について説明します。さらに、Amazon Redshiftコンソールから直接クラスターメトリックスでアラームを作成できます。

Amazon Redshift コンソールでパフォーマンスデータを表示するときは、クラスター別に表示できます。クラスターのパフォーマンスデータグラフは、パフォーマンスに関するほとんどの一般的な疑問に答えるデータにアクセスできるように設計されています。一部のパフォーマンスデータ(「AmazonRedshift CloudWatch メトリックス (p. 71)」を参照)については、Amazon CloudWatch を使用してメトリックスグラフをさらにカスタマイズすることもできます。例えば、長い時間を選択したり、クラスター間でメトリックスを組み合わせたりできます。Amazon CloudWatch コンソールの使用の詳細につ

API Version 2012-12-0174

Amazon Redshift 管理ガイドパフォーマンスデータを使用する

Page 79: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

いては、「Amazon CloudWatch コンソールでパフォーマンスメトリックスを使用する (p. 83)」を参照してください。

パフォーマンスデータの使用を開始するには、クラスターパフォーマンスダッシュボードでクラスターを見つけます。ダッシュボードは、クラスターが保守中かどうか、最近のイベント数など、クラスターの状態([available] など)、およびクラスターの [DB Health]([healthy] など)を一目でわかるように表示するクラスターのリストです。ダッシュボードから対象のクラスターを選択し、クラスターの詳細に移動します。このページからは、パフォーマンスデータを含む [Events+Alarms]、[Performance]、[Queries]、[Loads] の各タブにアクセスできます。次の例に、これらのタブを示します。

クラスターのパフォーマンスデータを表示するAmazonRedshiftのクラスターメトリックスを使用すると、次の一般的なパフォーマンス事例が可能になります。

• 指定された時間範囲でクラスターメトリックスが異常かどうかを判断し、異常な場合は、パフォーマンスに影響しているクエリを識別します。

• 過去または現在のクエリがクラスターのパフォーマンスに影響しているかどうかを確認します。問題のクエリを特定した場合は、クエリ実行中のクラスターのパフォーマンス、クエリが低速だった理由を診断するのに役立つ情報、パフォーマンスを向上させるためにできる操作、を含めた詳細を表示できます。

デフォルトのクラスター表示では、一緒にグラフ化されたすべてのノード、Average統計、過去 1 時間のデータが表示されます。このビューは必要に応じて変更できます。HealthStatusなど一部のメトリックスはリーダーノードにのみ該当し、WriteOpsなどその他のメトリックスはコンピューティングノードにのみ該当します。ノード表示モードを切り替えると、すべてのフィルタがリセットされます。

クラスターのパフォーマンスデータを表示するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. 左ナビゲーションで [Clusters] をクリックします。3. クラスターリストで、パフォーマンスデータを表示するクラスターの横にある拡大鏡のアイコンを

クリックします。

API Version 2012-12-0175

Amazon Redshift 管理ガイドクラスターのパフォーマンスデータを表示する

Page 80: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

4. [Performance] タブを選択します。

デフォルトでは、パフォーマンスビューには過去1時間のクラスターのパフォーマンスが表示されます。ビューを微調整する必要がある場合は、次の表に示すように、使用できるフィルタがあります。

使用するフィルタ目的

[Time Range] ドロップダウンから時間範囲を選択します。デフォルトでは、過去 1 時間が表示されます。

データを表示する時間範囲を変更する

[Period]ドロップダウンから期間を選択します。デフォルトでは、5 分の期間が表示されます。メトリックスを調査するときにさらに詳細が必要な場合(ドリルイン)や、短時間のメトリックス(例:10 分)を表示する場合は、5 分よりも短い期間を使用します。同様に、長時間のメトリックス(例:数日)のメトリックスを表示する場合は、5 分よりも長い期間を使用します。

データが表示される期間を変更する

[Statistic] ドロップダウンから統計を選択します。デフォルトでは、Average統計が使用されます。

メトリックスに表示される統計を変更する

[Metrics] ドロップダウンからメトリックスを選択します。デフォルトでは、すべてのメトリックスが表示されます。

表示するメトリックスを変更する(すべて、または特定のメトリックス)

[Nodes] ボタンをクリックします。デフォルトでは、特定のメトリックスのノードデータは組み合わされたグラフに表示されます。別のグラフにノードデータを表示するように選択した場合は、さらに個別のノードを表示または非表示にできます。

同じグラフでノードメトリックスが個別に表示されるのか、一緒に表示されるのかを変更する

API Version 2012-12-0176

Amazon Redshift 管理ガイドクラスターのパフォーマンスデータを表示する

Page 81: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クラスターメトリックス – 例次の例は、1 つのノードクラスターの CPUUtilizationおよび NetworkReceiveThroughputメトリックスを示しています。この場合、クラスターメトリックスのグラフでは、1 つの線が [Shared] とマークされて表示されます。これは、リーダーノードおよびコンピューティングノードが組み合わされているためです。この例は、表示されている時間範囲で複数のクエリが実行されたことを示しています。[Queries]グラフで、2つのメトリックスのピーク値で実行されているクエリにカーソルが置かれ、[Query ID] が右側に表示されています。次に、[Query ID] をクリックすると、実行中のクエリに関する詳細を表示できます。

次の例は、2つのノードがあるクラスターのNetworkReceiveThroughputを示しています。リーダーノードおよび2つのコンピューティングノードの線を示しています。リーダーノードのメトリックスは平らであり、注目する必要はありません。これは、データはコンピューティングノードのみでロードされるためです。この例では、表示されている期間に 1 つの長いクエリが実行されたことを示しています。[Queries] グラフで、長時間実行されているクエリにカーソルが置かれ、[Query ID] が右側に表示されています。次に、[Query ID]をクリックすると、実行中のクエリに関する詳細を表示できます。クエリの実行中に NetworkReceiveThroughput値が表示されます。

API Version 2012-12-0177

Amazon Redshift 管理ガイドクラスターのパフォーマンスデータを表示する

Page 82: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クエリの実行中にクラスターメトリックスを表示するクエリの実行中にクラスターメトリックスを表示して、パフォーマンスの低いクエリを識別したり、ボトルネックのクエリを検索したり、ワークロードに対してクラスターのサイズを変更する必要があるかどうか判断したりできます。

クエリの実行中にクラスターメトリックスを表示するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. 左ナビゲーションで [Clusters] をクリックします。3. クラスターリストで、クエリの実行中にクラスターのパフォーマンスを表示するクラスターを選択

します。

4. [Queries] タブを選択します。

5. クエリリストで、対象のクエリを見つけ、[Query] 列でクエリ ID をクリックします。

この例では、実行時間が最大のクエリを見つけることができるように、クエリは[Run time]を基準に並べ替えられています。

6. 表示される新しい [Query] タブで、クエリの詳細を確認できます。

API Version 2012-12-0178

Amazon Redshift 管理ガイドクエリの実行中にクラスターメトリックスを表示する

Page 83: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クラスターメトリックスを見つけるには、クエリ詳細の下部までスクロールします。[Query] タブのその他の例については、「クエリ実行中のクラスターメトリックス – 例 (p. 79)」を参照してください。

次の例では、このクエリが実行中の時間の [CPUUtilization] および[NetworkReceiveThroughput] メトリックスが表示されます。

Tip

[Query Properties]、[Loaded Files] などの個別のペインの詳細を閉じて、ペインでの詳細の表示方法を管理できます。

クエリ実行中のクラスターメトリックス – 例次の例では、クエリについて [Query Properties]、[Details]、[SQL]、[Loaded Files]の各情報が表示されます。

API Version 2012-12-0179

Amazon Redshift 管理ガイドクエリの実行中にクラスターメトリックスを表示する

Page 84: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

次の例では、[Explain Plan] が表示されます。

ロード操作中にクラスターメトリックスを表示するロード操作中にクラスターのパフォーマンスを表示すると、リソースを消費しているクエリを識別し、その影響を軽減するためのアクションを実行できます。

API Version 2012-12-0180

Amazon Redshift 管理ガイドロード操作中にクラスターメトリックスを表示する

Page 85: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

ロード操作中にクラスターメトリックスを表示するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. 左ナビゲーションで [Clusters] をクリックします。3. クラスターリストで、クエリの実行中にクラスターのパフォーマンスを表示するクラスターを選択

します。

4. [Loads] タブを選択します。

5. ロードリストで、対象のロード操作を見つけ、[Load] 列でロード ID をクリックします。

6. 表示される新しい [Query] タブで、ロード操作の詳細を表示できます。

この時点で、「クエリの実行中にクラスターメトリックスを表示する(p.78)」に示すように[Query]タブを使用できます。クエリの詳細を確認し、ロード操作中にクラスターメトリックスの値を表示することができます。

アラームを作成するAmazon Redshift コンソールで作成するアラームは、Amazon CloudWatch アラームです。これらのアラームは、クラスターとそのデータベースに関する予防的な決定を行うために役立ちます。「AmazonRedshift CloudWatch メトリックス (p. 71)」にリストされているいずれのメトリックスにも、1 つ以上のアラームを設定できます。例えば、クラスターノードの高い CPUUtilizationに対してアラームを設定すると、ノードの使用率が高すぎるときに、そのことが示されます。同様に、クラスターノードの

API Version 2012-12-0181

Amazon Redshift 管理ガイドアラームを作成する

Page 86: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

低い CPUUtilizationに対してアラームを設定すると、ノードの使用率が低すぎるときに、そのことが示されます。

ここでは、Amazon Redshift コンソールを使用してアラームを作成する方法について説明します。アラームを作成するには、Amazon CloudWatch コンソールを使用するか、Amazon CloudWatch コマンドラインインターフェイス(CLI)や Amazon Software Development Kit(SDK)など、メトリックスの操作に通常使用するその他の方法を使用できます。アラームを削除するには、Amazon CloudWatchコンソールを使用する必要があります。

Amazon Redshift コンソールでクラスターメトリックスにアラームを作成するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. 左ナビゲーションで [Clusters] をクリックします。3. クラスターリストで、クエリの実行中にクラスターのパフォーマンスを表示するクラスターを選択

します。

4. [Events+Alarms] タブを選択します。

5. [Create Alarm] をクリックします。

6. [Create Alarm] ダイアログボックスで、アラームを設定し、[Create] をクリックします。

Note

[Send a notification to] ボックスに表示される通知は、Amazon Simple Notification Service(AmazonSNS)のトピックです。AmazonSNSおよびトピック作成の詳細については、「Amazon Simple Notification Service Getting Started Guide」の「Create a Topic」を参照

API Version 2012-12-0182

Amazon Redshift 管理ガイドアラームを作成する

Page 87: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

してください。Amazon SNSにトピックがない場合は、[create topic]リンクをクリックして [Create Alarm] ダイアログボックスでトピックを作成できます。

アラームの詳細は、状況に応じて変わります。次の例では、ノード(Compute-0)の平均的なCPU使用率にアラームが設定されていて、CPU 使用率が 5 分間で連続して 4 回にわたり 80 パーセントを超えた場合に、[redshift-example-cluster-alarms] トピックに通知が送信されます。

7. アラームのリストで、新しいアラームを見つけます。

次の例に示すように、アラームの状態を判断するために十分なデータが収集されるまでに、少し待たなければならない場合があります。

しばらくすると、状態が [OK] に変わります。

8. (オプション)アラームの [Name] をクリックしてアラームの設定を変更するか、[More Options]の表示リンクをクリックして、Amazon CloudWatch コンソールでこのアラームに移動します。

AmazonCloudWatchコンソールでパフォーマンスメトリックスを使用するAmazon CloudWatch コンソールでAmazon Redshift メトリックスを使用するときは、次のいくつかのことに留意してください。

• クエリ/ロードパフォーマンスデータを使用できるのは、Amazon Redshift コンソール内のみです。

API Version 2012-12-0183

Amazon Redshift 管理ガイドAmazonCloudWatchコンソールでパフォーマンスメトリッ

クスを使用する

Page 88: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• Amazon CloudWatch の一部のメトリックスには、Amazon Redshift コンソールで使用されるものとは異なる単位があります。例えば、WriteThroughputは GB/秒で表示されますが(AmazonCloudWatch ではバイト/秒)、これはノードのストレージ容量としてより一般的な単位です。

Amazon CloudWatch コンソール、コマンドラインツール、または Amazon SDK で Amazon Redshiftメトリックスを使用するときは、2 つの概念に留意してください。

• 最初に、対象のメトリックスディメンションを指定します。ディメンションは、メトリックスを一意に識別できるようにする名前と値のペアです。Amazon Redshift のディメンションはClusterIdentifierおよび NodeIDです。Amazon CloudWatchコンソールには、クラスターおよびノード固有のディメンションを簡単に選択できるようにするために、Redshift ClusterおよびRedshift Nodeビューが用意されています。ディメンションの詳細については、「AmazonCloudWatch Developer Guide」の「Dimensions」を参照してください。

• 2 番目に、ReadIOPSなどのメトリックス名を指定します。

次の表は、使用できる Amazon Redshift メトリックディメンションのタイプをまとめたものです。すべてのデータは 1 分間無料で取得できます。

説明ディメンションAmazonCloudWatch 名前空間

フィルタにより、クラスターのノードに固有のデータが要求されました。NodeIDは、"Leader"、"Shared"、または"Compute-N" のいずれかになります。ここで、Nはクラスターのノード数を表す0、1、... です。"Shared"は、クラスターには 1 つのノードのみがあることを意味します。つまり、リーダーノードとコンピューティングノードが組み合わされています。

NodeIDAWS/Redshift

フィルタにより、クラスターに固有のデータが要求されました。クラスターに固有のメトリックスには、HealthStatus、MaintenanceMode、DatabaseConnectionsがあります。ノードのメトリックスでもある、このディメンションの全般的なメトリックス(ReadIOPSなど)は、ノードメトリックスデータの集計を表します。これらのメトリックスは、リーダーノードおよびコンピューティングノードの動作を集計するため、その解釈には注意が必要です。

ClusterIdentifier

ゲートウェイおよびボリュームメトリックスの使用は、その他のサービスメトリックスの使用と似ています。参考のため、Amazon CloudWatch ドキュメントに説明されている一般的な多くのタスクを以下に示します。

• 利用可能なメトリックスのリスト化• メトリックスの統計の取得• CloudWatch アラームの作成

API Version 2012-12-0184

Amazon Redshift 管理ガイドAmazonCloudWatchコンソールでパフォーマンスメトリッ

クスを使用する

Page 89: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift リザーブドノードの購入

Topics• 概要 (p. 85)• Amazon Redshift コンソールを使用したリザーブドノードサービスの購入 (p. 86)• AWS SDK for Java を使用したリザーブドノードサービスの購入 (p. 89)• Amazon Redshift CLI および API を使用したリザーブドノードサービスの購入 (p. 92)

概要Amazon Redshift クラスターを作成するときに、Amazon Redshift でクラスターを作成する AWS リージョン、クラスターに必要なノード数、ノードタイプなどの情報を指定します。AmazonRedshiftは、リクエストを受けてすぐにそのコンピューティングノードをプロビジョニングします。プロビジョニングされたコンピューティングノードについては、AWS アカウントに時間料金で課金されます。

より長い期間(1年以上など)、継続してクラスターの実行を維持する予定の場合、1年間または 3年間、コンピューティングノードを予約することで、料金を大幅に節約することができます。コンピューティングノードを予約するには、リザーブドノードというサービスをご購入ください。予約する個々のコンピューティングノードについて、1 つのサービスを購入します。

コンピューティングノードを予約した場合、クラスターが実行されているかどうかにかかわらず、固定の前払い料金と時間料金をお支払いいただきます。ただし、時間料金は、オンデマンドの使用料金よりも大幅に安くなります。料金の詳細については、AmazonRedshiftの製品詳細ページを参照してください。

リザーブドノードサービスの概要コンピューティングノードを予約するには、コンピューティングノードを予約するノードタイプと期間を選択します。次に、使用タイプ、ノードの予測使用量(料金に影響します)を指定します。現在、Amazon Redshift は、「Heavy Utilization」のリザーブドノードサービスのみを提供しています。

既存のAmazonRedshiftクラスターについて、リザーブドノードサービスを購入できます。この場合、ノードタイプとリザーブドノードのリージョンが、既存クラスターのものと一致する必要があります。これらの値が一致しない場合、AmazonRedshiftは安価なリザーブドノード料金でクラスターノードを

API Version 2012-12-0185

Amazon Redshift 管理ガイド概要

Page 90: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

構築できず、クラスターノードには引き続きオンデマンド料金がかかります。さらに、AWS アカウントには、購入したリザーブドノードの前払い料金と時間料金が課金されます。AmazonRedshiftには、購入できるリザーブドノードサービスの定義済みリストがあります。各サービスには、ノードタイプ、予約期間、サービスタイプ、固定の時間料金が記載されています。AmazonRedshiftコンソールから、これらの値を選択します。また、Amazon Redshift API を使用して、利用できるサービスのリストを取得することもできます。各サービスには固有のIDがあります。このIDで、購入するサービスを識別できます。

リザーブドノードを購入するには、クラスターのノードタイプおよびリージョンと一致するリザーブドノードサービスを選択します。また、購入するリザーブドノードサービスの使用量を指定することもできます。プログラムでリザーブドノードを購入する場合、リージョンは、使用しているエンドポイントによって決まります。AmazonRedshiftコンソールを使用してリザーブドノードを購入している場合、リージョンセレクタを使用できます。

リザーブドノードサービスを購入しても、AmazonRedshiftはお客様のアカウントに新しいリソースを割り当てません。そのため、AmazonRedshiftクラスターを作成する必要があります。また、作成するクラスターは、購入したリザーブドノードのノードタイプおよびリージョンと一致する必要があります。

リザーブドノードサービスの購入は、単に課金の概念です。予約したノードの説明と一致するオンデマンドノードを現在実行している場合、そのノードの使用について、直ちにリザーブドノード料金での課金を開始します。また、予約したノード数を超える同様のノードが実行されている場合、通常料金が課金されます。以下の例を参照してください。

• 既に、特定のAWSリージョンで、特定タイプのリザーブドノードサービスを3つ購入しているとします。この状態で、同じリージョンに2つのクラスターを作成します。同じノードタイプを使用する3つのノードがあるクラスターと2つのノードがあるクラスターです。これらのクラスターをプロビジョニングすると、Amazon Redshift は、1つ目の 3つのノードについてはリザーブドノード料金を課金し、残りの 2 つのノードについてはオンデマンドの時間料金を課金します。

• 既に、2つのノードがある実行中のクラスターがあり、オンデマンドの時間料金を支払っているとします。長期間、クラスターを使用することにしたので、2つのリザーブドノードサービスを購入しました。既存のクラスターは引き続き機能しますが、AmazonRedshiftはオンデマンドの時間料金ではなく、リザーブドノード料金で課金します。

Amazon Redshift コンソールを使用したリザーブドノードサービスの購入

Topics• リザーブドノードサービスの一覧表示 (p. 87)• リザーブドノードサービスの購入 (p. 87)

ここでは、AmazonRedshiftコンソールを使用して、リザーブドノードサービスを購入する方法と、既存のリザーブドノードサービスを表示する方法について説明します。リザーブドノードリストでは、サービスの詳細を確認できます。ここでは、新しいノードを購入することもできます。リストのサービスを選択すると、サービスの詳細が表示されます。

payment-pending、active、payment-failed、または retiredというサービスのステータスが表示されます。サービスがアクティブになるまで、特典は使用できません。

API Version 2012-12-0186

Amazon Redshift 管理ガイドコンソールを使用したリザーブドノードサービスの購入

Page 91: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

リザーブドノードサービスの一覧表示リザーブドノードサービスを一覧表示するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. [Navigation] ペインで、[Reserved Nodes] をクリックします。

3. (オプション)サービスの表示を絞り込むには、[Filter]ボックスを使用します。次のいずれか、または両方を実行します。

• 予約 ID のすべてまたは一部を入力します。入力した文字列が含まれるサービスのみが表示されます。

• [All Purchases]、[Active]、または [Inactive] をクリックします。

リザーブドノードサービスの購入リザーブドノードサービスを購入するには

1. AWS マネジメントコンソールにサインインして Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

2. [Navigation] ペインで、[Reserved Nodes] をクリックします。3. [Purchase Reserved Nodes] をクリックします。

API Version 2012-12-0187

Amazon Redshift 管理ガイドリザーブドノードサービスの一覧表示

Page 92: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

4. [PurchaseReservedNodes]ウィザードで、[Node Type]、[Term]、[Offering Type]、および [Numberof Nodes] を指定します。

5. すべての設定が正しいことを確認したら、[Continue] をクリックします。6. サービスの詳細を確認し、[Purchase] をクリックします。

7. リザーブドノードリストで、サービスの [Status] を確認します。

ステータスがactiveに変わったら、ノードを使用できます。この時点で、[RemainingDays]ボックスには正しい値が表示されます。

API Version 2012-12-0188

Amazon Redshift 管理ガイドリザーブドノードサービスの購入

Page 93: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

AWS SDK for Java を使用したリザーブドノードサービスの購入

以下の例は、AWS SDK for Java を使用して次の処理を実行する方法を示しています。

• 既存のリザーブドノードを一覧表示します。• 指定したノード条件に基づいて、新しいリザーブドノードサービスを検索します。• リザーブドノードを購入します。

この例では、指定したノードタイプと固定の料金に一致するすべてのリザーブドノードサービスが選択されます。次に、見つかったサービスに対してプログラムが実行され、サービスを購入できるようになります。

Important

このプログラムを実行し、リザーブドノードサービスを購入するサービスを承認すると、サービスについて課金されます。

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例 (p. 109)」を参照してください。コードを更新し、別のノードタイプと固定料金を指定する必要があります。

import java.io.DataInput;import java.io.DataInputStream;import java.io.IOException;import java.util.ArrayList;

import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.PropertiesCredentials;import com.amazonaws.services.redshift.AmazonRedshiftClient;import com.amazonaws.services.redshift.model.DescribeReservedNodeOfferings Request;import com.amazonaws.services.redshift.model.DescribeReservedNodeOfferingsResult;import com.amazonaws.services.redshift.model.DescribeReservedNodesResult;import com.amazonaws.services.redshift.model.PurchaseReservedNodeOfferingRequest;import com.amazonaws.services.redshift.model.ReservedNode;import com.amazonaws.services.redshift.model.ReservedNodeAlreadyExistsException;import com.amazonaws.services.redshift.model.ReservedNodeOffering;import com.amazonaws.services.redshift.model.ReservedNodeOfferingNotFoundExcep tion;import com.amazonaws.services.redshift.model.ReservedNodeQuotaExceededException;

API Version 2012-12-0189

Amazon Redshift 管理ガイドJava を使用したリザーブドノードサービスの購入

Page 94: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

public class ListAndPurchaseReservedNodeOffering {

public static AmazonRedshiftClient client; public static String nodeTypeToPurchase = "dw.hs1.xlarge"; public static Double fixedPriceLimit = 10000.00; public static ArrayList<ReservedNodeOffering> matchingNodes = new ArrayL ist<ReservedNodeOffering>();

public static void main(String[] args) throws IOException {

AWSCredentials credentials = new PropertiesCredentials( ListAndPurchaseReservedNodeOffering.class .getResourceAsStream("AwsCredentials.properties"));

client = new AmazonRedshiftClient(credentials);

try { listReservedNodes(); findReservedNodeOffer(); purchaseReservedNodeOffer();

} catch (Exception e) { System.err.println("Operation failed: " + e.getMessage()); } }

private static void listReservedNodes() { DescribeReservedNodesResult result = client.describeReservedNodes(); System.out.println("Listing nodes already purchased."); for (ReservedNode node : result.getReservedNodes()) { printReservedNodeDetails(node); } }

private static void findReservedNodeOffer() { DescribeReservedNodeOfferingsRequest request = new DescribeReserved NodeOfferingsRequest(); DescribeReservedNodeOfferingsResult result = client.describeReserved NodeOfferings(request); Integer count = 0;

System.out.println("\nFinding nodes to purchase."); for (ReservedNodeOffering offering : result.getReservedNodeOfferings())

{ if (offering.getNodeType().equals(nodeTypeToPurchase)){

if (offering.getFixedPrice() < fixedPriceLimit) { matchingNodes.add(offering); printOfferingDetails(offering); count +=1; } } } if (count == 0) { System.out.println("\nNo reserved node offering matches found.");

API Version 2012-12-0190

Amazon Redshift 管理ガイドJava を使用したリザーブドノードサービスの購入

Page 95: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

} else { System.out.println("\nFound " + count + " matches."); } }

private static void purchaseReservedNodeOffer() throws IOException { if (matchingNodes.size() == 0) { return; } else { System.out.println("\nPurchasing nodes.");

for (ReservedNodeOffering offering : matchingNodes) { printOfferingDetails(offering); System.out.println("WARNING: purchasing this offering will incur costs."); System.out.println("Purchase this offering [Y or N]?"); DataInput in = new DataInputStream(System.in); String purchaseOpt = in.readLine(); if (purchaseOpt.equalsIgnoreCase("y")){

try { PurchaseReservedNodeOfferingRequest request = new Pur chaseReservedNodeOfferingRequest() .withReservedNodeOfferingId(offering.getReserved NodeOfferingId()); ReservedNode reservedNode = client.purchaseReserved NodeOffering(request); printReservedNodeDetails(reservedNode); } catch (ReservedNodeAlreadyExistsException ex1){ } catch (ReservedNodeOfferingNotFoundException ex2){ } catch (ReservedNodeQuotaExceededException ex3){ } catch (Exception ex4){ } } } System.out.println("Finished.");

} }

private static void printOfferingDetails( ReservedNodeOffering offering) { System.out.println("\nOffering Match:"); System.out.format("Id: %s\n", offering.getReservedNodeOfferingId()); System.out.format("Node Type: %s\n", offering.getNodeType()); System.out.format("Fixed Price: %s\n", offering.getFixedPrice()); System.out.format("Offering Type: %s\n", offering.getOfferingType()); System.out.format("Duration: %s\n", offering.getDuration()); }

private static void printReservedNodeDetails(ReservedNode node) { System.out.println("\nPurchased Node Details:"); System.out.format("Id: %s\n", node.getReservedNodeOfferingId()); System.out.format("State: %s\n", node.getState());

API Version 2012-12-0191

Amazon Redshift 管理ガイドJava を使用したリザーブドノードサービスの購入

Page 96: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

System.out.format("Node Type: %s\n", node.getNodeType()); System.out.format("Start Time: %s\n", node.getStartTime()); System.out.format("Fixed Price: %s\n", node.getFixedPrice()); System.out.format("Offering Type: %s\n", node.getOfferingType()); System.out.format("Duration: %s\n", node.getDuration());

}}

AmazonRedshift CLIおよびAPIを使用したリザーブドノードサービスの購入

次の Amazon Redshift CLI 操作で、リザーブドノードサービスを購入できます。

• purchase-reserved-node-offering• describe-reserved-node-offerings• describe-orderable-cluster-options

次の Amazon Redshift API を使用して、リザーブドノードサービスを購入できます。

• PurchaseReservedNodeOffering• DescribeReservedNodeOfferings• DescribeOrderableClusterOptions

API Version 2012-12-0192

Amazon Redshift 管理ガイドAmazonRedshift CLIおよびAPIを使用したリザーブドノー

ドサービスの購入

Page 97: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift のリソースに対するアクセスの制御

このトピックでは、AWS Identity and Access Management (IAM)を使用し、Amazon Redshift クラスターおよびその他のリソースを作成、設定、削除できるAWSユーザーを制御する方法について説明します。

はじめにAmazon Redshift リソースへのアクセスは 3 つのレベルで制御されます。

• クラスター管理–クラスターを作成、設定、削除する機能は、ユーザーまたはAWSセキュリティ認証情報に関連付けられているアカウントに与えられるアクセス権により制御されます。適切なアクセス権を持つ AWSユーザーは AWS Management Console、AWS Command Line Interface (CLI)、Amazon Redshift アプリケーションプログラミングインターフェイス(API)を使用し、クラスターを管理できます。このセクションではこのアクセスを制御する方法について説明します。

• クラスター接続性 – Amazon Redshift セキュリティグループにより、IP 範囲(CIDR)と AmazonRedshift クラスターへの接続が許可される AWS インスタンスが指定されます。Amazon Redshift、Amazon EC2、Amazon VPC セキュリティグループを作成し、それらのグループとクラスターを関連付ける方法の詳細については、「AmazonRedshiftクラスターセキュリティグループ(p. 33)」を参照してください。

• データベースアクセス–Amazon Redshift データベース内のリソースへのアクセスは、接続時に指定する Amazon Redshift ユーザー ID とパスワードにより制御されます。テーブルやビューなど、自分のユーザー ID にアクセス権が与えられているデータベースオブジェクトにのみアクセスできます。これらのAmazonRedshiftユーザーアカウントの作成とそのアクセス権の管理は、CREATEUSER、CREATE GROUP、GRANT、REVOKE SQL 文により行われます。詳細については、「ManagingDatabase Security」を参照してください。

Amazon Redshift は AWS Identity and Access Management (IAM)を使用し、AWSアカウントのクラスターを作成、変更、削除できるAWSアカウントのユーザーを制御します。アカウント内にIAMユーザーとグループを作成しない場合、そのアカウントが所有する Amazon Redshift クラスターを管理する必要があるユーザーにアカウントルート認証情報を提供する必要があります。ルート認証情報は、アカウントが所有するすべてのAWSリソースへの無制限アクセスを提供します。結果として、アカウント認証情報を利用して Amazon Redshift リソースを作成または管理する代わりに IAM を使用することを推奨します。

API Version 2012-12-0193

Amazon Redshift 管理ガイドはじめに

Page 98: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

IAM を使用し、次を行います。

• AWS アカウントの下にユーザーとグループを作成します。• 同じアカウントのユーザーと AWS アカウントリソースを共有します。• 各 IAM ユーザーまたはグループが利用できる Amazon Redshift アクションおよびリソースを制御する IAM ポリシーを定義します。デフォルトでは、新規 IAM ユーザーには何も権限が与えられていません。IAM ユーザーに必要なすべてのアクセス権を与える必要があります。

• 各ユーザーのセキュリティ認証情報を設定します。

IAM に関する詳細は、次に進んでください。

• AWS Identity and Access Management (IAM)• IAM 入門ガイド• IAM を使用する

AWS セキュリティ認証情報の取得に関する詳細は、「AWS Security Credentials」を参照してください。

IAM のグループとユーザーを作成するこのセクションでは、グループを作成し、グループのアクセス権を指定するポリシーを定義し、ユーザーをグループに追加するための主要なステップについて説明します。グループではなく、ユーザーにポリシーを適用することもできます。IAMグループ、ユーザー、ポリシーに関する詳細は、上記のIAM文書を参照してください。

IAM のグループとユーザーを作成するには

1. https://console で IAM コンソールを開きます。aws.amazon.com/iam/)を開きます。2. ダッシュボードから [Create a New Group of Users] をクリックします。3. [Group Name] ページの [Group] の下にグループの名前を指定します。4. [Permissions] ページで、グループの一連のポリシーを指定します。各ポリシーは、一連のアクセ

ス権を指定する JSON 文書です。

• [Policy Generator] と [Custom Policy] のいずれかを使用し、ポリシー要素を含むカスタムポリシーを定義し、グループに管理権限が与えられるAmazonRedshift APIアクションおよびリソースを定義できます。Amazon Redshift アクションおよびリソースに関する詳細は、「AmazonRedshift の IAM ポリシー要素 (p. 95)」を参照してください。

• [Select Policy Template] を使用し、AWS Management Console で Amazon Redshift 機能を有効にするAmazonRedshiftポリシーテンプレートの1つから作成されたポリシーを添付できます。Amazon Redshift テンプレートの詳細については、「Amazon Redshift コンソールの IAM ポリシーテンプレート (p. 98)」を参照してください。

5. [User] ページで、1 つ以上のユーザー名を指定します。ユーザーが CLI または API を使用する場合、[Generate an access key for each user] を選択します。[Continue] をクリックします。

6. 前のステップで IAMにアクセスキーの生成を要求した場合、[Download Credentials] または [ShowUser Security Credentials] をクリックし、アクセスキーを保存します。

7. グループのユーザーが AWS Management Console を使用する場合、ナビゲーションペインで[Users] をクリックし、各ユーザーに以下を実行します。

1. 対象のユーザーを選択します。2. 詳細ペインで [Security Credentials] タブをクリックします。

API Version 2012-12-0194

Amazon Redshift 管理ガイドIAM のグループとユーザーを作成する

Page 99: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

3. [Sign-In Credentials] で、[Manage Password] をクリックします。4. [Manage Password] ダイアログボックスで、アクションをクリックし、[Apply] をクリックします。

5. [Download Credentials] または [Show User Security Credentials] をクリックし、パスワードを保存します。

8. 各ユーザーに認証情報(IAMおよび CLI アクセスのアクセスキー、AWS Management Console アクセスのパスワード)を与えます。

Amazon Redshift の IAM ポリシー要素IAM ポリシーを作成し、各 IAM ユーザーまたはグループが実行する権限を持つ Amazon Redshift アクションおよびリソースを指定します。ポリシーは、1つ以上の文を含むJSON文書です。各文には、その文により許可される権限を定義する要素が含まれます。IAM を使用するガイドの「エレメントの参照」セクションには、ポリシーで使用できる要素が説明されています。

IAM ポリシー文内で、Amazon Redshift はアクション要素を使用し、ユーザーが実行できる API アクションおよびCLIコマンドを制御したり、リソース要素を使用し、それらのアクションでアクセスが許可される特定の Amazon Redshift リソースを制御したりできます。

Amazon Redshift の IAM ポリシーアクションIAMポリシーのアクション要素により、ユーザーが個々のAmazonRedshift APIアクションを実行できるかどうかが指定されます。アクション要素により、許可または拒否される1つ以上のAmazonRedshiftAPI が識別されます。ポリシーに API アクションを指定するとき、関連 CLI コマンドの使用も許可します。例えば、redshift:CreateClusterポリシーアクションの許可属性により、CreateClusterAPI アクションと create-cluster CLI コマンドの両方の実行権限がユーザーに与えられます。IAMポリシーアクションの参照については、「IAM ポリシーエレメントの参照」を参照してください。

Amazon Redshift API アクションの完全なリストについては、Amazon Redshift API Reference の「アクション」を参照してください。この表には、IAM ポリシーアクション要素に指定できる AmazonRedshift アクションが一覧表示されています。

CLI リンクAPI リンクアクション

authorize-cluster-security-group-ingressAuthorizeClusterSecurityGroupIngressredshift:AuthorizeClusterSecurityGroupIngress

authorize-snapshot-accessAuthorizeSnapshotAccessredshift:AuthorizeSnapshotAccess

copy-cluster-snapshotCopyClusterSnapshotredshift:CopyClusterSnapshot

create-clusterCreateClusterredshift:CreateCluster

create-cluster-parameter-groupCreateClusterParameterGroupredshift:CreateClusterParameterGroup

create-cluster-security-groupCreateClusterSecurityGroupredshift:CreateClusterSecurityGroup

create-cluster-snapshotCreateClusterSnapshotredshift:CreateClusterSnapshot

create-cluster-subnet-groupCreateClusterSubnetGroupredshift:CreateClusterSubnetGroup

delete-clusterDeleteClusterredshift:DeleteCluster

delete-cluster-parameter-groupDeleteClusterParameterGroupredshift:DeleteClusterParameterGroup

delete-cluster-security-groupDeleteClusterSecurityGroupredshift:DeleteClusterSecurityGroup

API Version 2012-12-0195

Amazon Redshift 管理ガイドAmazon Redshift の IAM ポリシー要素

Page 100: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

CLI リンクAPI リンクアクション

delete-cluster-snapshotDeleteClusterSnapshotredshift:DeleteClusterSnapshot

delete-cluster-subnet-groupDeleteClusterSubnetGroupredshift:DeleteClusterSubnetGroup

describe-cluster-parameter-groupsDescribeClusterParameterGroupsredshift:DescribeClusterParameterGroups

describe-cluster-parametersDescribeClusterParametersredshift:DescribeClusterParameters

describe-cluster-security-groupsDescribeClusterSecurityGroupsredshift:DescribeClusterSecurityGroups

describe-cluster-snapshotsDescribeClusterSnapshotsredshift:DescribeClusterSnapshots

describe-cluster-subnet-groupsDescribeClusterSubnetGroupsredshift:DescribeClusterSubnetGroups

describe-cluster-versionsDescribeClusterVersionsredshift:DescribeClusterVersions

describe-clustersDescribeClustersredshift:DescribeClusters

describe-default-cluster-parametersDescribeDefaultClusterParametersredshift:DescribeDefaultClusterParameters

イベントの説明DescribeEventsredshift:DescribeEvents

describe-orderable-cluster-optionsDescribeOrderableClusterOptionsredshift:DescribeOrderableClusterOptions

describe-reserved-node-offeringsDescribeReservedNodeOfferingsredshift:DescribeReservedNodeOfferings

describe-reserved-nodesDescribeReservedNodesredshift:DescribeReservedNodes

describe-resizeDescribeResizeredshift:DescribeResize

modify-clusterModifyClusterredshift:ModifyCluster

modify-cluster-parameter-groupModifyClusterParameterGroupredshift:ModifyClusterParameterGroup

modify-cluster-subnet-groupModifyClusterSubnetGroupredshift:ModifyClusterSubnetGroup

purchase-reserved-node-offeringPurchaseReservedNodeOfferingredshift:PurchaseReservedNodeOffering

reboot-clusterRebootClusterredshift:RebootCluster

reset-cluster-parameter-groupResetClusterParameterGroupredshift:ResetClusterParameterGroup

restore-from-cluster-snapshotRestoreFromClusterSnapshotredshift:RestoreFromClusterSnapshot

revoke-cluster-security-group-ingressRevokeClusterSecurityGroupIngressredshift:RevokeClusterSecurityGroupIngress

revoke-snapshot-accessRevokeSnapshotAccessredshift:RevokeSnapshotAccess

Redshift は、Redshift API に基づかないアクションもサポートします。redshift:ViewQueriesInConsoleアクションを使用し、ユーザーが Amazon Redshift コンソール[Cluster] ディスプレイで [Queries] タブを表示できるかどうかを制御できます。

Amazon Redshift の IAM ポリシーリソースIAMポリシーのリソース要素により、ユーザーがアクションを実行できるリソースが指定されます。リソースが属するサービスの名前(Redshift)、リージョン(us-east-1など)、アカウント番号、リソースのタイプ(クラスターやパラメータグループなど)、リソースの名前を含む Amazon リソースネーム(ARN)を使用し、1 つのリソースまたは一連のリソースを指定できます。IAM ポリシーリソース要素の参照については、「IAM ポリシーエレメントの参照」を参照してください。

API Version 2012-12-0196

Amazon Redshift 管理ガイドAmazon Redshift の IAM ポリシーリソース

Page 101: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift ARN の形式に関する詳細は、「Amazon Redshift Amazon リソースネーム(ARN)を構築する (p. 102)」を参照してください。

Amazon Redshift スナップショットについては、<クラスター名>/<スナップショット名>のように、名前にスナップショットとそれの作成元であるクラスターの両方の名前が含まれます。IAMポリシーにスナップショット ARN のあるリソース要素が含まれ、クラスターノードが * 以外の場合、そのポリシーを持つすべてのユーザーは、クラスタースナップショットアクセスの許可、クラスタースナップショットのコピー、クラスタースナップショットの削除、スナップショットからのクラスターの復元、クラスタースナップショットアクセスの取り消しを実行するとき、スナップショットのソースクラスター名を指定する必要があります。

クラスタースナップショットのコピーやスナップショットからのクラスターの復元など、一部のAmazonRedshiftアクションでは複数のAmazonRedshiftリソースが参照されます。これらのアクションを正常に完了するには、両方のリソースをカバーするリソース要素のあるポリシーを IAM ユーザーに与える必要があります。例えば、スナップショットからクラスターを復元するアクションを実行するには、スナップショットにアクセスし、指定したクラスター ID でクラスターを作成するためのアクセス権をIAM ユーザーに与える必要があります。

Amazon Redshift では、IAM リソース要素に「*」などのワイルドカードを使用できます。例えば、"Resource": "*"と指定すると、すべてのAmazonRedshiftリソースで操作が可能になります。あるいは、この ARN を使用し、「my-cluster」という名前のクラスターからのすべてのスナップショットを指定します。

arn:aws:redshift:us-east-1:123456789012:snapshot:my-cluster/*

この表は、各 Amazon Redshift リソースタイプの ARN 形式の例を示したものです。

サンプル ARNリソースタイプ

arn:aws:redshift:us-east-1:123456789012:cluster:my-clusterクラスター

arn:aws:redshift:us-east-1:123456789012:parametergroup:my-param-grpパラメータグループ

arn:aws:redshift:us-east-1:123456789012:securitygroup:my-publicセキュリティグループ

arn:aws:redshift:us-east-1:123456789012:snapshot:myCluster/my-snaphot20130807スナップショット

arn:aws:redshift:us-east-1:123456789012:subnetgroup:my-subnet-10サブネットグループ

ポリシーに基づきユーザーまたはグループが Amazon Redshift リソースを作成できるとき、ポリシーにはそのタイプのリソースを指定するリソース要素が含まれている必要があります。例えば、このポリシーには、ユーザーまたはグループが my-cluster から名前が始まるクラスターからスナップショットを作成できることが明記されています。

{ "Statement": [ { "Action": [ "redshift:CreateClusterSnapshot" ], "Effect": "Allow", "Resource": [ "arn:aws:redshift:us-east-1:123456789012:snapshot:my-cluster*" ] } ]}

API Version 2012-12-0197

Amazon Redshift 管理ガイドAmazon Redshift の IAM ポリシーリソース

Page 102: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift では、一部のアクションでリソース要素がサポートされません。リソース要素をサポートしないアクションは次のようになります。

• AuthorizeClusterSecurityGroup• AuthorizeSnapshotAccess• CopyClusterSnapshot• CreateCluster• CreateClusterParameterGroup• CreateClusterSecurityGroup• CreateClusterSnapshot• CreateClusterSubnetGroup• DeleteCluster• DeleteClusterParameterGroup• DeleteClusterSecurityGroup• DeleteClusterSnapshot• DeleteClusterSubnetGroup• DescribeClusterParameters• DescribeResize• ModifyCluster• ModifyClusterParameterGroup• ModifyClusterSubnetGroup• RebootCluster• ResetClusterParameterGroup• RestoreFromClusterSnapshot• RevokeClusterSecurityGroup• RevokeSnapshotAccess

Amazon Redshift コンソールの IAM ポリシーテンプレート

AmazonRedshiftコンソールは、クラスターのパフォーマンスを監視したり、アラームを設定したりできるCloudWatchメトリックスなど、他のサービスからの機能を提供します。他のサービスから提供される機能を利用する場合、独自の明示的なアクセス権が必要になります。AmazonRedshiftアクションへのアクセスではカバーされません。AWS IAMコンソールは次の事前定義済みの Amazon Redshift ポリシーテンプレートを提供します。これを利用し、必要なアクセスを許可できます。

• Amazon Redshift 読み取り専用アクセス – AWS Management Console を介して Amazon Redshift への読み取り専用アクセスを提供します。

• Amazon Redshift 完全アクセス – AWS Management Console を介して Amazon Redshift への完全アクセスを提供します。

Amazon Redshift のポリシーの例このセクションではIAMポリシーの例を提供します。この例により、特定のAmazonRedshiftアクションを実行する権限をユーザーに与える方法と、そのようなアクションを使用できるリソースを指定する方法が説明されます。アクセス権を与えるユーザーまたはグループにそのようなポリシーを関連付けることができます。

API Version 2012-12-0198

Amazon Redshift 管理ガイドAmazon Redshift コンソールの IAMポリシーテンプレート

Page 103: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Example 1: IAMユーザーにすべてのAmazon Redshift API アクションおよびリソースへの完全アクセスを許可する

次のポリシーでは、すべてのリソースですべての Amazon Redshift アクションにアクセスできます。

{ "Statement": [ { "Action": [ "redshift:*" ], "Effect": "Allow", "Resource": "*" } ]}

アクション要素の値 redshift:*は、Amazon Redshift API のすべてのアクションを示します。

Example 2: IAM ユーザーからの一連の API アクションを拒否する

デフォルトでは、すべてのアクセス権が拒否されます。ただし、特定のアクションまたは一連のアクションへのアクセスを明示的に拒否しなければならない場合もあります。次のポリシーでは、すべてのAmazon Redshift アクションへのアクセスが許可され、名前が Deleteで始まるAmazon Redshift アクションへのアクセスが明示的に拒否されます。このポリシーは、us-east-1リージョンのすべてのRedshiftリソースに適用されます。

{ "Statement": [ { "Action": [ "redshift:*" ], "Effect": "Allow", "Resource": "arn:aws:redshift:us-east-1:*" }, { "Action": [ "redshift:Delete*" ], "Effect": "Deny", "Resource": "arn:aws:redshift:us-east-1:*" } ]}

API Version 2012-12-0199

Amazon Redshift 管理ガイドAmazon Redshift のポリシーの例

Page 104: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Example 3: クラスターを管理する

次のポリシーでは、ユーザーはすべてのクラスターを作成、削除、変更、再起動できます。さらに、名前が protectedで始まるクラスターを削除する許可が拒否されます。

{ "Statement": [ { "Action": [ "redshift:CreateCluster", "redshift:DeleteCluster", "redshift:ModifyCluster", "redshift:RebootCluster" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "redshift:DeleteCluster" ], "Resource": [ "arn:aws:redshift:us-east-1:0123456789012:cluster:protected*" ], "Effect": "Deny" } ]}

API Version 2012-12-01100

Amazon Redshift 管理ガイドAmazon Redshift のポリシーの例

Page 105: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Example 4: スナップショットアクセスを許可し、取り消す

次のポリシーでは、ユーザー(例: UserA)に「shared」という名前のクラスターから作成されたスナップショットへのアクセスが許可されます。さらに、スナップショットの名前が revokable始まる場合、sharedクラスターから作成されたスナップショットへのアクセスが取り消されます。

{ "Statement": [ { "Action": [ "redshift:AuthorizeSnapshotAccess" ], "Resource": [ "arn:aws:redshift:us-east-1:0123456789012:shared/*" ], "Effect": "Allow" }, { "Action": [ "redshift:RevokeSnapshotAccess" ], "Resource": [ "arn:aws:redshift:us-east-1:0123456789012:snapshot:*/revokable*" ], "Effect": "Allow" } ]}

UserA がスナップショットへのアクセスを UserB に許可した場合、スナップショットからクラスターを復元できるように、UserB には次のようなポリシーを与える必要があります。このポリシーでは、UserBはスナップショットを表現したり、スナップショットから復元したり、クラスターを作成したりできます。作成するクラスターの名前を from-other-accountで始める必要があります。

{ "Statement": [ { "Action": [ "redshift:DescribeClusterSnapshots" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "redshift:RestoreFromClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-east-1:0123456789012:snapshot:*/*", "arn:aws:redshift:us-east-1:2109876543210:cluster:from-other-account*"

], "Effect": "Allow" }

API Version 2012-12-01101

Amazon Redshift 管理ガイドAmazon Redshift のポリシーの例

Page 106: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

]}

Example 5: クラスタースナップショットのコピーとスナップショットからの復元を許可する

次のポリシーでは、ユーザーは「big-cluster-1」という名前のクラスターから作成したスナップショットをコピーし、名前が snapshot-for-restoreで始まるスナップショットを復元できます。

{ "Statement": [ { "Action": [ "redshift:CopyClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-east-1:0123456789012:snapshot:big-cluster-1/*" ], "Effect": "Allow" }, { "Action": [ "redshift:RestoreFromClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-east-1:0123456789012:snapshot:*/snapshot-for-re store*", "arn:aws:redshift:us-east-1:0123456789012:cluster:*" ], "Effect": "Allow" } ]}

AmazonRedshift Amazonリソースネーム(ARN)を構築する

Amazon Web Services で作成されたリソースは、Amazon リソースネーム(ARN)と呼ばれる一意のID により識別されます。IAM ポリシーを利用してユーザーまたはグループがアクセスできる AmazonRedshift リソースを制御するとき、ユーザーにアクセスを許可するリソースを定義する ARN を 1 つまたは複数指定します。

Amazon Redshift リソースの ARN は次の構文を使用します。

arn:aws:redshift:<region>:<account number>:<resourcetype>:<name>

• <region> は、us-west-2 など、Amazon Redshift リソースが作成された AWS のリージョンです。Amazon Redshift のリージョンの一覧については、「Amazon Redshift Regions and Endpoints」を参照してください。

• <account number> はダッシュ記号が省略された AWS アカウント番号です。アカウント番号を見つけるには、http://aws.amazon.com で自分の AWS にログインし、[My Account/Console] をクリックし、[My Account] をクリックします。

• <resourcetype> は Amazon Redshift リソースのタイプです。次の表は、特定の Amazon Redshift リソースの ARN を構築するときに指定する必要があるリソースタイプを示しています。

API Version 2012-12-01102

Amazon Redshift 管理ガイドAmazon Redshift Amazonリソースネーム(ARN)を構築

する

Page 107: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

ARN 形式リソースタイプ

arn:aws:redshift:<region>:<account>:cluster:<cluster name>クラスター

arn:aws:redshift:<region>:<account>:parametergroup:<parameter groupname>

パラメータグループ

arn:aws:redshift:<region>:<account>:securitygroup:<security group name>セキュリティグループ

arn:aws:redshift:<region>:<account>:snapshot:<cluster name>/<snapshotname>

スナップショット

arn:aws:redshift:<region>:<account>:subnetgroup:<subnet group name>サブネットグループ

• <name> は Amazon Redshift リソースのリソース ID です。スナップショットについては、その名前は、<クラスター名>/<>スナップショット名>のように、スナップショットの作成元であるクラスターの ID と特定のスナップショットの名前を組み合わせたものになります。

次の表は、AmazonRedshiftリソースのARNの例を示したものです。AWSアカウントは123456789012であり、米国東部(バージニア北部)で作成されており、リソース名が「my」で始まります。

サンプル ARNリソースタイプ

arn:aws:redshift:us-east-1:123456789012:cluster:my-clusterクラスター

arn:aws:redshift:us-east-1:123456789012:parametergroup:my-param-grpパラメータグループ

arn:aws:redshift:us-east-1:123456789012:securitygroup:my-publicセキュリティグループ

arn:aws:redshift:us-east-1:123456789012:snapshot:my-cluster/my-snaphot20130807スナップショット

arn:aws:redshift:us-east-1:123456789012:subnetgroup:my-subnet-10サブネットグループ

異なるセットのスナップショットの ARN の例があります。

• クラスター「my-cluster」から作成されたすべてのスナップショット:

arn:aws:redshift:us-east-1:123456789012:snapshot:my-cluster/*• 名前が「my-snapshot」で始まるすべてのスナップショット:

arn:aws:redshift:us-east-1:123456789012:snapshot:*/my-snapshot*

API Version 2012-12-01103

Amazon Redshift 管理ガイドAmazon Redshift Amazonリソースネーム(ARN)を構築

する

Page 108: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift における制限

Topics• クォータと制限 (p. 104)• 命名に関する制約 (p. 105)

クォータと制限各 Amazon Redshift アカウントにはクォータが割り当てられています。クォータにより、作成できるクラスターの数、プロビジョニングできるノードの合計数、作成できるスナップショットの数などが制限されます。クォータの制限を超える処理を実行しようとすると、処理は失敗します。

AmazonRedshiftには、クラスターおよびアカウントごとにプロビジョニングできるノードの数にクォータが設定されています。これらの制限については、「AWSService Limits」を参照してください。アカウントに設定されているAmazon Redshiftのクォータ制限を緩和するには、Amazon Redshift上限緩和申請を提出して変更を要請してください。

クォータ以外にも、AmazonRedshiftにはクラスター値ごとに次の制限があります。これらの制限は緩和できません。

• クラスターに対して割り当て(プロビジョニング)できるノード数は固定されており、クォータ緩和申請を提出しても変更されません。制限はノードのタイプごとに異なります。現在の制限の一覧については、「Amazon Redshift の料金表」ページにある「Amazon Redshift のノードタイプ」のセクションを参照してください。

• クラスターごとに作成できるパーマネントテーブルの数は9990個です。テーブルの作成の詳細については、「Amazon Redshift Database Developer Guide」の「Create Table Usage Notes」を参照してください。

• クラスターごとに作成できるユーザー定義データベースの数は 60 です。データベースの作成の詳細については、「Amazon Redshift Database Developer Guide」の「Create Database」を参照してください。

• データベースごとに作成できるスキーマの数は 256 です。スキーマの作成の詳細については、「Amazon Redshift Database Developer Guide」の「Create Schema」を参照してください。

• クラスターに対して同時に可能なユーザー接続の数は95です。詳細については、「AmazonRedshiftManagement Guide」の「クラスターへの接続 (p. 121)」を参照してください。

• スナップショットの復元を許可できるAWSアカウントの数は20です。詳細については、「AmazonRedshift Management Guide」の「スナップショットの共有 (p. 55)」を参照してください。

API Version 2012-12-01104

Amazon Redshift 管理ガイドクォータと制限

Page 109: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

命名に関する制約次の表に、Amazon Redshift での命名に関する制約を示します。

• 小文字のみを使用する必要があります。• 1~63 文字の英数字またはハイフンを使用する必要があります。

• 1 字目は文字である必要があります。• ハイフンを、文字列の最後に使用したり、2 つ続けて使用したりすることはできません。

• AWS アカウントのすべてのクラスター間で一意である必要があります。

クラスター識別子

• 1~64 文字の英数字を使用する必要があります。• 小文字のみを使用する必要があります。• 予約語は使用できません。予約語の一覧については、「Amazon Redshift Developer Guide」の「ReservedWords」を参照してください。

データベース名

• 小文字のみを使用する必要があります。• 1~128 文字の英数字を使用する必要があります。• 1 字目は文字である必要があります。• 予約語は使用できません。予約語の一覧については、「Amazon Redshift Developer Guide」の「ReservedWords」を参照してください。

マスターユーザー名

• 8~64 文字の長さにする必要があります。• 最低 1 個の大文字を含める必要があります。• 最低 1 個の小文字を含める必要があります。• 数字を 1 個含める必要があります。• 表示可能な ASCII 文字(ASCII コード 33~126)のうち、'(シングルクォート)、"(ダブルクォート)、\、/、@および空白を除く任意の文字を使用できます。

マスターパスワード

• 1~255 文字の英数字またはハイフンを使用する必要があります。

• 小文字のみを使用する必要があります。• 1 字目は文字である必要があります。• ハイフンを、文字列の最後に使用したり、2 つ続けて使用したりすることはできません。

パラメータグループ名

API Version 2012-12-01105

Amazon Redshift 管理ガイド命名に関する制約

Page 110: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• 255 文字以下の英数字またはハイフンを使用する必要があります。

• 小文字のみを使用する必要があります。• "Default" という文字列を使用することはできません。• AWS アカウントで作成したすべてのセキュリティグループ間で一意である必要があります。

クラスターセキュリティグループ名

• 255 文字以下の英数字またはハイフンを使用する必要があります。

• 小文字のみを使用する必要があります。• "Default" という文字列を使用することはできません。• AWS アカウントで作成したすべてのセキュリティグループ間で一意である必要があります。

サブネットグループ名

• 255 文字以下の英数字またはハイフンを使用する必要があります。

• 小文字のみを使用する必要があります。• "Default" という文字列を使用することはできません。• AWS アカウントで作成したすべてのセキュリティグループ間で一意である必要があります。

クラスタースナップショット識別子

API Version 2012-12-01106

Amazon Redshift 管理ガイド命名に関する制約

Page 111: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift クラスターとデータベースへのアクセス

Amazon Redshift、クラスター、およびクラスター内のデータベースの作成、管理、および削除に使用できる管理ツールとインターフェイスが複数あります。

• Amazon Web Services 管理ツールとインターフェイスを使用すると、Amazon Redshift クラスターの作成、管理、および削除を行うことができます。これらのツールとインターフェイスは、データウェアハウスのセットアップ、操作、およびスケーリング、容量のプロビジョニング、クラスターのモニタリングとバックアップ、AmazonRedshiftエンジンへのパッチやアップグレードの適用という作業を管理します。• AWS Management Consoleを使用すると、クラスターの作成、管理、および削除を対話的に行うことができます。このガイドのトピックでは、AWS Management Consoleを使用して特定のタスクを実行する場合の手順について説明します。

• 複数ある AWS 管理インターフェイスまたは SDK のいずれかを使用して、クラスターの作成、管理、および削除をプログラムで実行することができます。詳細については、「AmazonRedshift管理インターフェイスの使用 (p. 107)」を参照してください。

• Amazon Redshift クラスターを作成した後は、PostgreSQL ODBC または JDBC ドライバーで SQLステートメントを実行するクライアントアプリケーションまたはツールを使用して、クラスター内のデータベースの作成、管理、および削除を行うことができます。• クライアント SQL ツールのインストールとクラスターへの接続の詳細については、「クラスターへの接続 (p. 121)」を参照してください。

• データベースの設計と Amazon Redshift でサポートされる SQL ステートメントの詳細については、Amazon Redshift Database Developer Guide を参照してください。

Amazon Redshift クラスターおよびデータベースの実行に使用されるインターフェイスは、セキュリティグループや IAM ポリシーなどのアクセス制御メカニズムに準拠しています。詳細については、「Amazon Redshift のリソースに対するアクセスの制御 (p. 93)」を参照してください。

Amazon Redshift 管理インターフェイスの使用Topics• Amazon Redshift での AWS SDK for Java の使用 (p. 108)• Amazon Redshift で使用するクライアント側暗号化データのアップロード (p. 111)

API Version 2012-12-01107

Amazon Redshift 管理ガイドAmazon Redshift 管理インターフェイスの使用

Page 112: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• HTTP リクエストへの署名 (p. 114)• Amazon Redshift CLI のセットアップ (p. 117)

Amazon Redshift は、AWS SDK、AWS コマンドラインインターフェイス、および Amazon Redshift管理APIという、AmazonRedshiftクラスターの作成、管理、および削除に使用できる複数の管理インターフェイスをサポートしています。

Amazon Redshift QUERY API – クエリリクエストを送信することで呼び出すことができる AmazonRedshift 管理 API です。クエリリクエストは、HTTP 動詞(GETまたは POST)とクエリパラメータActionで記述するHTTPまたはHTTPSリクエストです。クエリAPIの呼び出しは、AmazonRedshiftサービスの最も直接的なアクセス方法ですが、エラー処理やリクエストに署名するハッシュの生成など、低レベルの詳細な作業をアプリケーションで処理する必要があります。

• クエリ API リクエストの構築と署名の詳細については、「HTTP リクエストへの署名 (p. 114)」を参照してください。

• Amazon Redshift のクエリ API アクションとデータ型の詳細については、Amazon Redshift APIReference を参照してください。

AWSSDK–アマゾンウェブサービスにはソフトウェア開発キット(SDK)が用意されており、AmazonRedshiftクラスター関連の操作に使用できます。一部のSDKライブラリは基礎となるAmazonRedshiftクエリ API をラップします。このようなライブラリは、特定のプログラミング言語に API 機能を統合し、多くの低レベルの詳細な作業(署名の計算、リクエスト再試行の処理、エラー処理など)を処理します。SDK ライブラリのラッパー関数を呼び出すことで、Amazon Redshift クラスターを管理するアプリケーションの作成プロセスが大幅に簡易化されます。

• Amazon Redshift は、AWS SDKs for Java、.NET、PHP、Python、Ruby、および Node.js でサポートされています。AmazonRedshiftのラッパー関数の詳細については、各SDKのリファレンスマニュアルを参照してください。AWSSDKのリストとマニュアルのリンクについては、「Tools forAmazonWeb Services」を参照してください。

• このガイドでは、Java SDKを使用してAmazon Redshift を操作する例について説明します。これ以外の AWS SDK コードサンプルについては、「Sample Code & Libraries」を参照してください。

AWSコマンドラインインターフェイス(CLI)–Windows、Mac、およびLinuxコンピュータからAWSサービスを管理する際に使用できるコマンドラインツールセットが用意されています。AWSCLIには、Amazon Redshift クエリ API アクションに基づくコマンドが含まれています。

• Amazon Redshift CLI のインストールとセットアップの詳細については、「Amazon Redshift CLI のセットアップ (p. 117)」を参照してください。

• Amazon Redshift CLI コマンドのリファレンスドキュメントについては、AWS CLI Reference の「Amazon Redshift」を参照してください。

Amazon Redshift での AWS SDK for Java の使用Topics• Eclipse を使用した Amazon Redshift の Java 実行例 (p. 109)• コマンドラインからの Amazon Redshift の Java 実行例 (p. 109)• エンドポイントの設定 (p. 110)

AWS SDK for Java には AmazonRedshiftClientというクラスがあります。このクラスを使用してAmazon Redshift とやり取りすることができます。AWS SDK for Java のダウンロードの詳細については、「AWS SDK for Java 」を参照してください。

API Version 2012-12-01108

Amazon Redshift 管理ガイドAWS SDK for Java の使用

Page 113: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Note

AWS SDK for Java には、Amazon Redshift へのアクセスに使用できるスレッドセーフなクライアントが用意されています。最善の方法としては、ご利用のアプリケーションでクライアントを 1 つ作成し、そのクライアントをスレッド間で再利用することです。

AmazonRedshiftClientクラスには、基礎となる Amazon Redshift クエリ API のアクションに対応するメソッドが定義されています(これらのアクションについては、AmazonRedshiftのAPIリファレンスを参照してください)。メソッドを呼び出す場合、対応するリクエストオブジェクトと応答オブジェクトを作成する必要があります。リクエストオブジェクトには、実際のリクエストで渡す必要がある情報が含まれます。応答オブジェクトには、リクエストに対する応答で Amazon Redshift から返される情報が含まれます。

例えば、AmazonRedshiftClientクラスには、クラスターをプロビジョニングする createClusterメソッドがあります。このメソッドは、基礎となる CreateCluster API アクションに対応します。CreateClusterRequestオブジェクトを作成して、createClusterメソッドで情報を渡します。

AmazonRedshiftClient client = new AmazonRedshiftClient(credentials);client.setEndpoint("https://redshift.us-east-1.amazonaws.com/");

CreateClusterRequest request = new CreateClusterRequest() .withClusterIdentifier("exampleclusterusingjava") .withMasterUsername("masteruser") .withMasterUserPassword("12345678Aa") .withNodeType("dw.hs1.xlarge") .withNumberOfNodes(2);

Cluster createResponse = client.createCluster(request);System.out.println("Created cluster " + createResponse.getClusterIdentifier());

Eclipse を使用した Amazon Redshift の Java 実行例Eclipse を使用した Java コード実行の一般的な手順例

1. Eclipse で新しい AWS Java プロジェクトを作成します。

AWS Toolkit for Eclipse Getting Started Guide の「Setting Up the AWS Toolkit for Eclipse」の手順に従います。この手順には、AWSセキュリティ認証情報を含むAwsCredentials.propertiesファイルの設定が含まれます。

2. お読みになっているこのドキュメントのセクションからサンプルコードをコピーし、新しいJavaクラスファイルとしてプロジェクトに貼り付けます。

3. コードを実行します。

コマンドラインからの Amazon Redshift の Java 実行例コマンドラインからの Java 実行例

コマンドラインからの Java コード実行例の一般的な手順

1. 次のように環境をセットアップし、テストします。a. 作業するディレクトリを作成し、そのディレクトリに src、bin、および sdkサブフォルダを作成します。

b. AWS SDK for Java をダウンロードし、作成した sdkサブフォルダに展開します。SDK を展開すると、sdkフォルダ内に 4 つのサブフォルダが作成されます(lib、third-partyフォルダなど)。

API Version 2012-12-01109

Amazon Redshift 管理ガイドAWS SDK for Java の使用

Page 114: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

c. 作業ディレクトリの binフォルダ内に、次の例のように AwsCredentials.propertiesファイルを作成します。

#Insert your AWS Credentials from http://aws.amazon.com/security-credentialssecretKey=*** Your Account Secret Access Key***accessKey=***Your Account Access Key ID***

d. Java プログラムコンパイラ(javac)と Java アプリケーションランチャー(java)を作業ディレクトリから実行できることを確認します。次のコマンドを実行することでテストできます。

javac -helpjava -help

2. 実行するコードを .java ファイルに記入し、そのファイルを srcフォルダに保存します。このプロセスを説明するために、ここでは、AWS SDK for Java を使用したセキュリティグループの管理(p. 38) のコードを使用し、srcディレクトリのファイルがCreateAndModifyClusterSecurityGroup.javaになるようにしています。

3. コードをコンパイルします。

javac -cp sdk/lib/aws-java-sdk-1.3.18.jar -d bin src\CreateAndModifyCluster SecurityGroup.java

別バージョンのAWSSDK for Javaを使用している場合、バージョンのクラスパス(-cp)を調整します。

4. コードを実行します。次のコマンドでは、読みやすくするために改行が加えられています。

java -cp "bin; sdk/lib/*; sdk/third-party/commons-logging-1.1.1/*; sdk/third-party/httpcomponents-client-4.1.1/*; sdk/third-party/jackson-core-1.8/*" CreateAndModifyClusterSecurityGroup

お使いのオペレーティングシステムに合わせて、必要に応じてクラスパスの区切り文字を変更してください。例えば、Windowsの区切り文字は例のように「;」ですが、Unixの場合は「:」です。コード例によっては、この例よりも多くのライブラリが必要になる場合があります。また、使用している AWS SDK のバージョンによってはサードパーティフォルダ名が異なる場合があります。このような場合は、必要に応じてクラスパス(-cp)を調整してください。

このドキュメントのサンプルを実行するには、Amazon Redshift をサポートする AWS SDK のバージョンを使用してください。最新バージョンの AWS SDK for Java を入手するには、「AWS SDKfor Java 」を参照してください。

エンドポイントの設定デフォルトで、AWS SDK for Java はエンドポイントhttps://redshift.us-east-1.amazonaws.com/を使用しています。次のJavaコードスニペットに示すように、client.setEndpointメソッドを使用してエンドポイントを明示的に設定できます。

client = new AmazonRedshiftClient(credentials);client.setEndpoint("https://redshift.us-east-1.amazonaws.com/");

API Version 2012-12-01110

Amazon Redshift 管理ガイドAWS SDK for Java の使用

Page 115: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クラスターをプロビジョニングできる、サポート対象のAWSリージョンのリストについては、アマゾンウェブサービス用語集の「Regions and Endpoints」セクションを参照してください。

Amazon Redshift で使用するクライアント側暗号化データのアップロードAmazon Redshift を使用すると、Amazon S3 バケットのデータを Amazon Redshift データベースにコピーできます。コピーするデータは、サーバー側またはクライアント側で暗号化できます。サーバー側の暗号化の場合、Amazon S3 が透過的に暗号化と復号化を処理します。クライアント側の暗号化の場合、暗号化キーと関連する暗号化プロセスと復号化プロセスを管理します。

ここでは、Amazon S3 でクライアント側暗号化データをアップロードし、Amazon Redshift で利用できるようにする方法について説明します。

Amazon Redshift で Amazon S3 のクライアント側暗号化データを利用する方法と、次を使用する場合の追加の要件については、Amazon S3 Developer Guide の「Specifying Client-Side Encryption Usingthe AWS SDK for Java」を参照してください。

• 対称暗号化–AWSSDK for Java AmazonS3EncryptionClientクラスは、対称キー暗号化に基づくエンベロープ暗号化というプロセスを使用します。このクラスを使用して、Amazon S3 クライアントを作成し、クライアント側暗号化データをアップロードします。

• 256ビットAESマスター対称キー–マスターキーでエンベロープキーを暗号化します。マスターキーを AmazonS3EncryptionClientクラスのインスタンスに渡します。マスターキーは、256-AES暗号化規格を使用する必要があります。このキーは、AmazonRedshiftにデータをコピーするときに必要になるので、キーを保存する必要があります。

• 暗号化されたエンベロープキーを保存するオブジェクトメタデータ–AmazonS3のデフォルトでは、エンベロープキーは AmazonS3EncryptionClientクラスのオブジェクトメタデータとして保存されます。オブジェクトメタデータとして保存された暗号化されたエンベロープキーは、復号化プロセスで使用されます。

クライアント側の暗号化を使用してデータを Amazon S3 に保存した場合、データを Amazon Redshiftにコピーするときに、データベースの COPY 操作でデータが復号化されます。COPY コマンドでは、指定したマスター対称キーが使用されます。詳細については、「Amazon Redshift Developer Guide」の「Loading encrypted data files from Amazon S3」を参照してください。

Note

初めて暗号化APIを使用するときに暗号の暗号化エラーメッセージが表示される場合、使用する JDK のバージョンに、暗号化/復号化変換に使用する最大キー長を 128 ビットに制限するJavaCryptographyExtension(JCE)管轄ポリシーファイルが含まれている可能性があります。この問題の対処方法については、AmazonSimpleStorageServiceDeveloperGuideの「SpecifyingClient-Side Encryption Using the AWS SDK for Java」を参照してください。

例: クライアント側暗号化データのアップロード次の例では、クライアント側の暗号化を使用して、オブジェクトのディレクターを Amazon S3 バケットにアップロードします。この例は、データを Amazon Redshift にアップロードするために、クライアント側の暗号化時に選択する必要がある選択肢を示しています。具体的には、256 ビット AES マスター対称キーの使用方法と、オブジェクトメタデータを使用して暗号化されたエンベロープキーを保存する方法です。詳細については、「AmazonRedshiftで使用するクライアント側暗号化データのアップロード (p. 111)」を参照してください。

この例では、.propertiesファイルを使用して、アップロードプログラムを設定しています。このpropertiesファイルでは、マスター対称キー、バケットの場所、すべてのアップロードされるオブジェ

API Version 2012-12-01111

Amazon Redshift 管理ガイドクライアント側暗号化データのアップロード

Page 116: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

クトのプレフィックス、オブジェクトを読み取るソースの場所を指定します。これらは、指定する必要があるすべての値です。

次のコードは、SampleEncryptAndUploadDataToS3.propertiesという properties ファイルを示しています。

# Base64 encoded AES 256 bit symmetric master key. master_symmetric_key=<enter your key here>

# Endpoint. Use s3-external-1.amazonaws.com for clusters in us-easts3_endpoint=<s3 endpoint>

# Bucket to upload data.s3_bucket=<bucket name>

# S3 prefix to add to uploaded data files. All files loaded will have this prefix.s3_prefix=<object prefix>

# Local directory from which to load data. All files in this directory will be encrypted and loaded.src_dir=<source location>

次の Java クラスでは、properties ファイルを使用して、クライアント側の暗号化を使ったオブジェクトをアップロードしています。

import java.io.File;import java.util.Properties;

import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

import com.amazonaws.AmazonClientException;import com.amazonaws.AmazonServiceException;import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.PropertiesCredentials;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3EncryptionClient;import com.amazonaws.services.s3.model.EncryptionMaterials;import com.amazonaws.services.s3.model.PutObjectRequest;

public class SampleEncryptAndUploadDataToS3 {

private static final int MAX_RETRY_COUNT = 10;

public static void main(String[] args) throws Exception {

//Specify values in SampleEncryptAndUploadDataToS3.properties file.

AWSCredentials credentials = new PropertiesCredentials( SampleEncryptAndUploadDataToS3.class.getResourceAsStream("AwsCreden tials.properties"));

API Version 2012-12-01112

Amazon Redshift 管理ガイドクライアント側暗号化データのアップロード

Page 117: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Properties config = new Properties(); config.load(SampleEncryptAndUploadDataToS3.class.getResourceAs Stream("SampleEncryptAndUploadDataToS3.properties"));

String masterSymmetricKeyBase64 = getProperty(config, "master_symmet ric_key"); String bucketName = getProperty(config, "s3_bucket"); String s3Prefix = getProperty(config, "s3_prefix"); String s3Endpoint = getProperty(config, "s3_endpoint"); String sourceDir = getProperty(config, "src_dir");

SecretKey mySymmetricKey = new SecretKeySpec( Base64.decodeBase64(masterSym metricKeyBase64.getBytes()) , "AES"); EncryptionMaterials materials = new EncryptionMaterials(mySymmetricKey); AmazonS3 s3 = new AmazonS3EncryptionClient(credentials, materials); s3.setEndpoint(s3Endpoint);

// Upload all files. uploadAllFilesToS3(s3, bucketName, s3Prefix, new File(sourceDir) );

}

private static void uploadAllFilesToS3(AmazonS3 s3, String bucketName, String s3Prefix, final File folder) {

System.out.println("Reading files from directory "+folder);

for (final File fileEntry : folder.listFiles()) { if (! fileEntry.isDirectory()) { // Skip sub directories.

int retryCount = 0; boolean done = false; while ( !done ) { try { uploadToS3(s3, bucketName, s3Prefix, fileEntry); done = true; }catch (Exception e ){ retryCount++; if ( retryCount > MAX_RETRY_COUNT ) { System.out.println("Retry count exceeded max retry count "+MAX_RETRY_COUNT+". Giving up"); throw new RuntimeException(e); }

// Do retry after 10 seconds. System.out.println("Failed to upload file "+fileEntry+". Retry ing..."); try { Thread.sleep(10 * 1000); }catch(Exception te) {}

} }// while

}// for }

}

API Version 2012-12-01113

Amazon Redshift 管理ガイドクライアント側暗号化データのアップロード

Page 118: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

private static void uploadToS3(AmazonS3 s3, String bucketName, String s3Prefix, File file) {

try { System.out.println("Uploading a new object to S3 object '"+s3Prefix+"' from file "+file); String key = s3Prefix+"/"+file.getName(); s3.putObject(new PutObjectRequest(bucketName, key, file) );

} catch (AmazonServiceException ase) { System.out.println("Caught an AmazonServiceException, which means your request made it " + "to Amazon S3, but was rejected with an error response for some reason."); System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("AWS Error Code: " + ase.getErrorCode()); System.out.println("Error Type: " + ase.getErrorType()); System.out.println("Request ID: " + ase.getRequestId());

throw ase; } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException, which means the client encountered " + "a serious internal problem while trying to communic ate with S3, " + "such as not being able to access the network."); System.out.println("Error Message: " + ace.getMessage()); throw ace; }

}

private static String getProperty(Properties config, String name) {

if( config.containsKey(name)){ return config.getProperty(name); }

throw new RuntimeException(name+" property not configured"); }

}

HTTP リクエストへの署名Topics• 署名の計算例 (p. 115)

AmazonRedshiftでは、管理APIに送信するすべてのリクエストが署名によって認証されている必要があります。このトピックでは、リクエストに署名する方法について説明します。

いずれかの AWS Software Development Kit(SDK)または AWS コマンドラインインターフェイスを使用する場合、リクエストは自動的に署名されるため、このセクションは省略してかまいません。AWSSDKの使用方法の詳細については、「Amazon Redshift 管理インターフェイスの使用 (p. 107)」を参照

API Version 2012-12-01114

Amazon Redshift 管理ガイドHTTP リクエストへの署名

Page 119: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

してください。Amazon Redshift コマンドラインインターフェイスの使用方法の詳細については、「Amazon Redshift Command Line Reference」を参照してください。

リクエストに署名するには、暗号化ハッシュ関数を使用してデジタル署名を計算します。暗号化ハッシュは、入力データから一意のハッシュ値生成して返す関数です。ハッシュ関数に渡される入力データとしては、リクエストのテキスト、およびシークレットアクセスキーが該当します。ハッシュ関数から返されるハッシュ値をリクエストに署名として含めます。署名は、リクエストのAuthorizationヘッダーの一部です。

AmazonRedshiftは、リクエストを受け取ると、リクエストの署名に使用されたものと同じハッシュ関数と入力データを使用して署名を再計算します。再計算された署名がリクエストに含まれる署名と一致した場合、Amazon Redshift はリクエストを処理します。それ以外の場合、リクエストは拒否されます。

Amazon Redshift は、AWS 署名バージョン 4 を使用した認証をサポートします。署名を計算するプロセスは 3 つのタスクで構成されます。これらのタスクをこの後の例に示します。

• タスク 1: 正規リクエストを作成する

HTTPリクエストを正規形式に変換します。正規形式を使用する必要がある理由は、送信した署名と比較するために、Amazon Redshift で同じ正規形式を使用して署名が計算されるためです。

• タスク 2: 署名文字列を作成する

暗号化ハッシュ関数への入力値の1つとして使用する文字列を作成します。署名文字列と呼ばれる文字列は、ハッシュアルゴリズムの名前、要求日付、認証情報スコープの文字列、および前のタスクで正規化されたリクエストを結合したものです。認証情報スコープの文字列自体は、日付、リージョン、およびサービス情報を結合したものです。

• タスク 3: 署名を作成する

2つの入力文字列(署名文字列と派生キー)を受け取る暗号化ハッシュ関数を使用して、リクエストの署名を作成します。シークレットアクセスキーから、認証情報スコープの文字列を使用して一連のハッシュベースのメッセージ認証コード(HMAC-SHA256)を作成することで、派生キーが計算されます。

署名の計算例次の例に、CreateCluster リクエストの署名を作成する詳細な手順を示します。この例を参考にして実際の署名の計算方法を確認できます。その他の参考計算例については、アマゾンウェブサービス用語集の「Signature Version 4 Test Suite」を参照してください。

GETまたは POSTリクエストを使用してリクエストをAmazon Redshift に送信できます。この 2つの違いとして、GET リクエストではパラメータがクエリ文字列パラメータとして送信されるのに対し、POST リクエストではパラメータがリクエストの本文に含まれます。次の例は POST リクエストを示しています。

例では次のように想定しています。

• リクエストのタイムスタンプは Fri, 07 Dec 2012 00:00:00 GMT

• エンドポイントは米国東部(バージニア北部)リージョン us-east-1

汎用リクエスト構文:

https://redshift.us-east-1.amazonaws.com/ ?Action=CreateCluster &ClusterIdentifier=examplecluster &MasterUsername=masteruser

API Version 2012-12-01115

Amazon Redshift 管理ガイドHTTP リクエストへの署名

Page 120: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

&MasterUserPassword=12345678Aa &NumberOfNode=2 &NodeType=dw.hs1.xlarge &Version=2012-12-01 &x-amz-algorithm=AWS4-HMAC-SHA256 &x-amz-credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_re quest &x-amz-date=20121207T000000Z &x-amz-signedheaders=content-type;host;x-amz-date

「タスク1:正規リクエストを作成する(p.115)」で計算されるリクエストの正規形式は次のとおりです。

POST/

content-type:application/x-www-form-urlencoded; charset=utf-8host:redshift.us-east-1.amazonaws.comx-amz-date:20121207T000000Z

content-type;host;x-amz-date55141b5d2aff6042ccd9d2af808fdf95ac78255e25b823d2dbd720226de1625d

正規リクエストの最後の行はリクエスト本文のハッシュです。この API にはクエリパラメータがないため、正規リクエストの 3 行目は空です。

「タスク 2: 署名する文字列を作成する (p. 115)」で署名する文字列は次のとおりです。

AWS4-HMAC-SHA25620121207T000000Z20121207/us-east-1/redshift/aws4_request06b6bef4f4f060a5558b60c627cc6c5b5b5a959b9902b5ac2187be80cbac0714

署名する文字列の最初の行はアルゴリズム、2 行目はタイムスタンプ、3 行目は認証情報スコープ、最後の行は「タスク1:正規リクエストを作成する(p. 115)」で作成した正規リクエストのハッシュです。認証情報スコープで使用するサービス名は redshiftです。

「タスク 3: 署名を作成する (p. 115)」について、派生キーは次のように表されます。

derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20121207"),"us-east-1"),"redshift"),"aws4_request")

派生キーは連続するハッシュ関数として計算されます。上記の式の内側のHMACステートメントでは、「AWS4」というフレーズをシークレットアクセスキーと連結し、それをキーとして使用して「us-east-1」データをハッシュ処理します。このハッシュの結果が次のハッシュ関数のキーになります。

派生キーを計算した後、署名する文字列と派生キーという2つの入力文字列を受け取るハッシュ関数でそのキーを使用します。例えば、シークレットアクセスキーwJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYを使用し、前述の文字列に署名する場合、計算された署名は次のようになります。

9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920

API Version 2012-12-01116

Amazon Redshift 管理ガイドHTTP リクエストへの署名

Page 121: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

最後のステップは、Authorizationヘッダーの構築です。デモンストレーションのアクセスキーAKIAIOSFODNN7EXAMPLEの場合、ヘッダーは次のとおりです(読みやすいように改行しています)。

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920

Amazon Redshift CLI のセットアップここでは、Amazon Redshift の管理に使用するために、AWS CLI コマンドラインツールをセットアップして実行する方法について説明します。AmazonRedshiftコマンドラインツールは、AWSCommandLine Interface(AWSCLI)で実行されており、Python(http://www.python.org/)を使用ます。AWSCLIは、Python をサポートするあらゆるオペレーティングシステムで実行できます。

インストール手順Amazon Redshift コマンドラインツールを初めて使用する場合、まず AWS CLI をセットアップし、Amazon Redshift CLI オプションを定義した設定ファイルを追加します。

別の AWS サービス用に AWS CLI のインストールと設定が完了している場合は、この手順を省略できます。

AWS Command Line Interface をインストールするには

1. 「Getting Set Up with the AWS Command Line Interface」を参照し、AWS CLI のインストール手順に従います。

For CLI access, you need an access key ID and secret access key. For more information aboutcreating access keys, see How Do I Get Security Credentials? in the AWS General Reference.

2. アクセスキー、デフォルトのリージョン、コマンドの出力形式など、設定情報を含むファイルを作成します。次に、そのファイルを参照する AWS_CONFIG_FILE環境変数を設定します。詳細な手順については、AWSCommand Line Interfaceユーザーガイドの「Configuring the AWSCommandLine Interface」を参照してください。

3. テストコマンドを実行して、AWS CLI インターフェイスが機能していることを確認します。例えば、次のコマンドを実行すると、AWS CLI のヘルプ情報が表示されます。

aws help

次のコマンドを実行すると、Amazon Redshift のヘルプ情報が表示されます。

aws redshift help

AmazonRedshiftCLIコマンドのリファレンスドキュメントについては、AWSCLIReferenceの「AmazonRedshift」を参照してください。

AWS コマンドラインインターフェイスの使用開始Topics• ステップ 1: 開始する前に (p. 118)• ステップ 2: クラスターを起動する (p. 118)

API Version 2012-12-01117

Amazon Redshift 管理ガイドAmazon Redshift CLI のセットアップ

Page 122: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• ステップ 3: インバウンドトラフィックにクラスターアクセスを許可する (p. 119)• ステップ 4: クラスターに接続する (p. 121)• ステップ 5: テーブルの作成、データのアップロード、サンプルクエリの実行 (p. 121)• ステップ 6: サンプルクラスターを削除する (p. 121)

このセクションでは、コマンドラインインターフェイスの使用開始に役立つ、AmazonRedshiftクラスターの基本的な管理タスクの実行方法を説明します。ここに示すタスクは「Amazon Redshift GettingStartedGuide」のタスクとよく似ていますが、AmazonRedshiftコンソールではなくコマンドラインインターフェイスで実行します。

このセクションでは、クラスターの作成、データベーステーブルの作成、データのアップロードおよびクエリのテストの手順を説明します。まずAmazonRedshift CLIを使用してクラスターをプロビジョニングし、必要なアクセス権限を付与します。次にSQLWorkbenchクライアントを使用してクラスターに接続し、サンプルテーブルを作成し、サンプルデータをアップロードし、テストクエリを実行します。

ステップ 1: 開始する前に

まだAWSアカウントをお持ちでない場合は、サインアップしてアカウントを作成してください。その後、AmazonRedshiftコマンドラインツールを設定する必要があります。最後にクライアントツールおよびドライバーをダウンロードします。これはクラスターに接続するために使います。

ステップ 1.1: サインアップして AWS アカウントを作成する

サインアップして AWS ユーザーアカウントを作成する方法については、「Amazon Redshift GettingStarted Guide」を参照してください。

ステップ1.2: AWSコマンドラインインターフェイス(CLI)をダウンロードしてインストールする

AWSコマンドラインインターフェイスをまだインストールしていない場合は、「AmazonRedshift CLIのセットアップ (p. 117)」を参照してください。

ステップ 1.3: クライアントツールおよびドライバーをダウンロードする

PostgreSQL JDBC または ODBC ドライバーを使用する Amazon Redshift クラスターへの接続には、任意の SQL クライアントツールを使用できます。現在そのようなソフトウェアがインストールされていない場合は、SQL Workbench をおすすめします。SQL Workbench は無料のクロスプラットフォームツールです。このツールを使用して Amazon Redshift クラスター内のテーブルへのクエリを実行できます。このセクションの例では、SQL Workbench クライアントを使用しています。

SQL Workbench と PostgreSQL ドライバーをダウンロードする方法については、「Amazon RedshiftGetting Started Guide」にアクセスしてください。

ステップ 2: クラスターを起動する

これで、AWSコマンドラインインターフェイス(CLI)を使用してクラスターを起動する準備ができました。

Important

ここで起動するクラスターはライブとなります(サンドボックスで実行されるわけではありません)。クラスターを終了するまで、そのクラスターについて標準使用料が発生します。ここで説明した演習を1種類の設定だけで実行し、終了し次第クラスターを終了すれば、課金される合計料金はごくわずかです。

API Version 2012-12-01118

Amazon Redshift 管理ガイドAmazon Redshift CLI のセットアップ

Page 123: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

create-clusterコマンドには多くのパラメータがあります。この演習で使用するパラメータ値を次の表で説明します。要件に合ったクラスター構成を作成できるようにするため、実働環境にクラスターを作成する前に、すべての必須およびオプションのパラメータを確認することをお勧めします。詳細については、「create-cluster」を参照してください。

この演習で使用するパラメータ値パラメータ名

exampleclusterCluster Identifier

masteruserMaster Username

TopSecret1Master Password

dw.hs1.xlarge.より大規模なデータセットでテストする場合は、dw.hs1.8xlarge ノードタイプの使用も検討します。

Node Type

single-nodeCluster Type

クラスターを作成するには、次のコマンドを入力します。

aws redshift create-cluster --cluster-identifier examplecluster --master-username masteruser --master-user-password TopSecret1 --node-type dw.hs1.xlarge --cluster-type single-node

クラスター作成プロセスは、完了まで数分かかることがあります。状態を確認するには、次のコマンドを入力します。

aws redshift describe-clusters --cluster-identifier examplecluster

出力は次の例のようになります。

{ "Clusters": [ {

...output omitted...

"ClusterStatus": "creating", "ClusterIdentifier": "examplecluster",

...output omitted...

}

[ClusterStatus]フィールドが [creating] から [available] に変わったら、クラスターは使用できる状態です。

次のステップでは、アクセスを許可してクラスターに接続できるようにします。

ステップ 3: インバウンドトラフィックにクラスターアクセスを許可する

クラスターに接続するには、クライアントへのインバウンドアクセス権限を明示的に付与する必要があります。AmazonEC2インスタンスまたは外部のコンピュータをクライアントとすることができます。

API Version 2012-12-01119

Amazon Redshift 管理ガイドAmazon Redshift CLI のセットアップ

Page 124: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

前のステップでは、セキュリティグループを指定せずにクラスターを作成したため、そのクラスターにはデフォルトのクラスターセキュリティグループが関連付けられています。デフォルトのクラスターセキュリティグループには、クラスターへのインバウンドトラフィックを認証するルールが含まれていません。新しいクラスターにアクセスするには、クラスターセキュリティグループへのインバウンドトラフィックを処理するルール(進入ルール)を追加する必要があります。

インターネットで実行されるアプリケーションの進入ルール

インターネットからクラスターにアクセスする場合は、CIDR/IP(Classless Inter-DomainRouting IP)アドレス範囲を承認する必要があります。この例では、CIDR/IPルール192.0.2.0/24を使用します。この範囲は、実際の IP アドレスとネットマスクに合わせて変更する必要があります。

クラスターのネットワークへの着信を可能にするために、次のコマンドを入力します。

aws redshift authorize-cluster-security-group-ingress --cluster-security-group-name default --cidrip 192.0.2.0/24

EC2 インスタンスの進入ルール

Amazon EC2 インスタンスからクラスターにアクセスする場合は、Amazon EC2 セキュリティグループを認可する必要があります。そのためには、セキュリティグループ名と、EC2 セキュリティグループ所有者の 12 桁のアカウント番号を指定します。

Amazon EC2 コンソールを使用して、使用しているインスタンスに関連付けられた EC2 セキュリティグループを確認できます。

お使いの AWS アカウント番号を確認するには、http://aws.amazon.com にアクセスし、[My Account]ページにサインインします。そのページの右上隅に AWS アカウント番号が表示されています。

この例では、Amazon EC2 セキュリティグループ名として myec2securitygroupを使用し、アカウント番号として 123456789012を使用します。これらの名前と番号は、実際の名前と番号に変更する必要があります。

クラスターのネットワークへの着信を可能にするために、次のコマンドを入力します。

API Version 2012-12-01120

Amazon Redshift 管理ガイドAmazon Redshift CLI のセットアップ

Page 125: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

aws redshift authorize-cluster-security-group-ingress --cluster-security-group-name default --ec2-security-group-name myec2securitygroup --ec2-security-group-owner 123456789012

ステップ 4: クラスターに接続する

デフォルトのクラスターセキュリティグループに進入ルールを追加したので、特定の CIDR/IP またはEC2 セキュリティグループから exampleclusterに着信する接続が認可されます。

これでクラスターに接続する準備ができました。

クラスターへの接続については、「Amazon Redshift Getting Started Guide」を参照してください。

ステップ 5: テーブルの作成、データのアップロード、サンプルクエリの実行

テーブルの作成、データのアップロード、クエリの発行については、「AmazonRedshift GettingStartedGuide」を参照してください。

ステップ 6: サンプルクラスターを削除する

クラスターを起動すると、以後それが使用可能な状態である限り、たとえ能動的に使用していなくても、クラスターの実行時間に基づき料金が請求されます。不要になったクラスターは削除できます。

クラスターを削除するときは、最終スナップショットを作成するかどうかを決定する必要があります。これは演習であり、テスト用クラスターに重要なデータは含まれていないため、最終スナップショットは省略します。

クラスターを削除するには、次のコマンドを入力します。

aws redshift delete-cluster --cluster-identifier examplecluster --skip-final-cluster-snapshot

これで、クラスターの起動、アクセス権の設定、クラスターへの接続、クラスターの終了をひととおり体験しました。

クラスターへの接続Topics• クラスター接続文字列の取得 (p. 122)• SQL Workbench クライアントの設定 (p. 122)• psql ツールを使用してクラスターに接続する (p. 129)• SSL でクラスターに接続する (p. 132)• クラスターにプログラムで接続する (p. 134)• Amazon EC2 以外から接続する – ファイアウォールタイムアウトの問題 (p. 138)

Amazon Redshift クラスターを作成してから、任意の SQL クライアントツールを使ってクラスターにPostgreSQL JDBC または ODBC ドライバーで接続します。Amazon EC2 インスタンスをクライアントコンピュータとして使う場合は、そのインスタンスにSQLWorkbenchおよび必要なドライバーをインストールします。

API Version 2012-12-01121

Amazon Redshift 管理ガイドクラスターへの接続

Page 126: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Note

サードパーティ製データベースツールでクラスターに使用したいものがあれば、別途インストールする必要があります。Amazon Redshift によりサードパーティ製のツールやライブラリが提供されたり、インストールされることはありません。

Amazon Redshift クラスターには最大 95 の同時ユーザー接続を作成できます。

このセクションでは、Secure Sockets Layer(SSL)とサポート証明書の操作、ファイアウォールがタイムアウトになる問題の対処、SQL Workbench/J でのクラスターへの接続といった、クライアントによるクラスターへの接続管理に役立つ情報を示します。

クラスター接続文字列の取得クライアントツールでクラスターに接続するには、クラスター接続文字列が必要です。クラスター接続文字列は、Amazon Redshift コンソールのクラスターの設定ページにあります。

クラスター接続文字列を取得するには

1. Amazon Redshift コンソールの [Clusters] ページで、接続文字列を取得するクラスターの名前をクリックします。

2. そのクラスターの [Configuration]タブの [JDBCURL]または [ODBCURL]で、接続文字列をコピーします。

次の例は米国東部リージョンで起動されたクラスターの接続文字列を示しています。別のリージョンで起動しているクラスターの場合、接続文字列はそのリージョンのエンドポイントに基づくものになります。

SQL Workbench クライアントの設定AmazonRedshiftクラスターを作成したら、SQLクライアントツールを使って標準のPostgreSQLJDBCまたは ODBC ドライバーでクラスターに接続します。既に、標準の PostgreSQL JDBC または ODBCドライバーでクラスターに接続するビジネスインテリジェンスアプリケーションやその他のアプリケーションがある場合は、このセクションはスキップしてかまいません。クラスターに接続するアプリケーションがない場合は、このセクションでそのオプションを示します。

API Version 2012-12-01122

Amazon Redshift 管理ガイドクラスター接続文字列の取得

Page 127: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Amazon Redshift の「Getting Started Guide」では、SQLWorkbench/J を使用してクラスターに接続します。これは、無料で、DBMSに依存しないクロスプラットフォームの SQL クエリツールです。このセクションでは、SQL Workbench/J を使用してクラスターに接続する方法を詳しく説明します。

SQL Workbench/J をセットアップするには

1. SQL Workbench/J ウェブサイトに移動し、使用するオペレーティングシステムに適したパッケージをダウンロードします。

2. 「Installing and starting SQL Workbench/J」にアクセスします。手順に従って SQL Workbench/Jをシステムにインストールします。

Note

SQLWorkbench/Jをシステムにインストールするには、JavaRuntimeEnvironment(JRE)が必要です。使用する JREのバージョンがSQL Workbench/J クライアントに合っていることを確認します。システムで動作している Java Runtime Environment のバージョンを確認するには、次のいずれかを行います。

• Mac: [System Preferences] で Java アイコンをクリックします。• Windows: [Control Panel] で Java アイコンをクリックします。• 任意のシステム: コマンドシェルで「java -version」と入力します。または、http://www.java.com/jp/ にアクセスして [Java の有無のチェック] リンクをクリックし、[Verify Java] ボタンをクリックします。

JavaRuntimeEnvironmentのインストールと設定の詳細については、http://www.java.com/jp/にアクセスしてください。

3. SQL Workbench/J がクラスターに接続するために必要なドライバーをダウンロードします。以下のいずれかの JDBC または ODBC ドライバーを使用できます。ドライバーをシステムの適切な場所に保存します。現在、Amazon Redshift は以下のバージョン 8 JDBC および ODBC ドライバーをサポートしています。

• JDBC http://jdbc.postgresql.org/download/postgresql-8.4-703.jdbc4.jar• ODBC(前後のバージョン)• 32 ビット http://ftp.postgresql.org/pub/odbc/versions/msi/psqlodbc_08_04_0200.zip• 64 ビット http://ftp.postgresql.org/pub/odbc/versions/msi/psqlodbc_09_00_0101-x64.zip

SQL Workbench/J を JDBC ドライバーで使用するには

1. オペレーティングシステムのバージョンに合った 32 ビットまたは 64 ビットバージョンの SQLWorkbench/J を起動します。[Select Connection Profile] ダイアログボックスが表示されます。

2. [Navigation] ペインに表示される接続プロファイルの名前を入力します。3. [Driver] ボックスで、[PostgreSQL(org.postgresql.Driver)] をクリックします。

API Version 2012-12-01123

Amazon Redshift 管理ガイドSQL Workbench クライアントの設定

Page 128: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

4. ドライバーのライブラリが利用できないというメッセージが表示されたら、[Yes] をクリックします。

5. [Library] ボックスの横にある参照アイコン [...] をクリックし、目的のドライバーの場所まで移動してそのドライバーをクリックします。[Classname] ボックスは、SQL Workbench/J によって自動入力されます。[Sample URL] ボックスは空白のままにしておいて、[OK] をクリックします。

6. AmazonRedshift consoleで、選択したドライバーに対応する接続文字列を探します。この例では、JDBCドライバーを使用しています。JDBCURLをコピーします。[Select Connection] ダイアログボックスの [URL] ボックスに JDBC URL を貼り付けます。

7. [Username] ボックスにマスターユーザーの名前を、[Password] ボックスにマスターユーザーのパスワードを入力します。[Autocommit]チェックボックスをオンにします。すべての設定が正しいことを確認したら、[OK] をクリックしてプロファイルを保存します。

8. Amazon Redshift の「Getting Started Guide」に記載されているサンプルのテーブルとデータを読み込んだ場合は、[Statement]ウィンドウに次のクエリを入力することで、接続をテストできます。

select * from users order by userid limit 100;

接続に成功すると、[Results] タブにレコードのリストが表示されます。

API Version 2012-12-01124

Amazon Redshift 管理ガイドSQL Workbench クライアントの設定

Page 129: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

また、次のクエリを使用して接続をテストすることもできます。

select * from information_schema.tables;

SQL Workbench/J を ODBC ドライバーで使用するには

1. ODBCドライバーをシステムにインストールします。この例では、64ビットUnicode ドライバーを使用しています。

a. 「SQLWorkbench/Jをセットアップするには(p. 123)」のステップ3でダウンロードしたドライバーパッケージを展開し、.MSI パッケージを使用してドライバーをインストールします。

b. AmazonRedshift consoleで、クラスターの名前をクリックし、[Configuration]ペインのODBCURL を書き留めるかコピーします。この URL 文字列の一部をステップ e で使用します。

API Version 2012-12-01125

Amazon Redshift 管理ガイドSQL Workbench クライアントの設定

Page 130: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

c. コントロールパネルで [管理ツール] アイコンを開き、[データソース (ODBC)] アイコンをダブルクリックします。

d. [ODBC Data Source Administrator] ダイアログボックスで、[システム DSN] をクリックします。[Add] をクリックします。Unicode ドライバーを選択し、[Finish] をクリックします。

e. [PostgreSQL ODBC Unicode Driver Setup] ダイアログボックスで、次の操作を行います。すべての設定が正しいことを確認したら、[Save] をクリックします。

API Version 2012-12-01126

Amazon Redshift 管理ガイドSQL Workbench クライアントの設定

Page 131: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• [DataSource]ボックスに、名前を入力します。または、自動生成された名前を使用します。この名前は、後で必要になるので書き留めておきます。

• (オプション)[Description] ボックスにわかりやすい説明を入力します。• [SSLMode]ボックスで、目的のモードをクリックします。最適な結果を得るために、[prefer]設定をお勧めします。

• [Server]ボックスに、ステップbでコピーしたODBCURLのサーバー文字列を入力します。• [Database] ボックスに、ステップbでコピーしたODBC URLのデータベース文字列を入力します。

• [User name] ボックスに、ステップ b でコピーした ODBC URL の UID 文字列を入力します。

• [Password] ボックスに、マスターユーザー用に作成したパスワードを入力します。• [Port] ボックスに、ステップ b でコピーした ODBC URL のポート番号を入力します。

2. オペレーティングシステムのバージョンに合った 32 ビットまたは 64 ビットバージョンの SQLWorkbench/J を起動します。[Select Connection Profile] ダイアログボックスが表示されます。[Navigation] ペインに表示される接続プロファイルの名前を入力します。

3. [Driver] ボックスで、[ODBC Bridge (sun.jdbc.odbc.JdbcOdbcDriver)] をクリックします。4. [URL] ボックスで、datasource_name_from_control_panelの部分を、PostgreSQL ODBC

Unicode ドライバーの設定時に使用した正確なデータソース名に置き換えます。

API Version 2012-12-01127

Amazon Redshift 管理ガイドSQL Workbench クライアントの設定

Page 132: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

例えば、jdbc:odbd:datasource_name_from_control_panelをjdbc:odbc:PostgreSQLRedshiftに変更します。

5. [Username] ボックスにマスターユーザーの名前を、[Password] ボックスにマスターユーザーのパスワードを入力します。[Autocommit]チェックボックスをオンにします。すべての設定が正しいことを確認したら、[OK] をクリックしてプロファイルを保存します。

6. Amazon Redshift の「Getting Started Guide」に記載されているサンプルのテーブルとデータを読み込んだ場合は、[Statement]ウィンドウに次のクエリを入力することで、接続をテストできます。

select * from users order by userid limit 100;

接続に成功すると、[Results] タブにレコードのリストが表示されます。

API Version 2012-12-01128

Amazon Redshift 管理ガイドSQL Workbench クライアントの設定

Page 133: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

また、次のクエリを使用して接続をテストすることもできます。

select * from information_schema.tables;

psql ツールを使用してクラスターに接続するAmazonRedshiftクラスターを作成したら、psql(PostgreSQLのターミナル型フロントエンド)を使ってクラスターのデータにクエリを発行することができます。クエリはインタラクティブに入力することも、ファイルから読み取ることもできます。psql から接続するには、クラスターのエンドポイント、データベース、ポートを指定する必要があります。

API Version 2012-12-01129

Amazon Redshift 管理ガイドpsql ツールを使用してクラスターに接続する

Page 134: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Note

psql ツールは、Amazon Redshift から提供されるのではなく PostgreSQL とともにインストールされます。psql の使用については、http://www.postgresql.org/docs/8.4/static/app-psql.htmlを参照してください。PostgreSQL クライアントツールのインストール方法については、http://www.postgresql.org/download/ の PostrgreSQL バイナリダウンロードページから、該当するオペレーティングシステムを選択します。

psql のデフォルト設定を使用して接続するデフォルトでは、psql は Amazon Redshift サービスを検証せず、Secure Sockets Layer(SSL)を使用して暗号化された接続を作成します。

psql のデフォルト設定を使用して接続するには

1. Sign in to the AWS Management Console and open the Amazon Redshift console athttps://console.aws.amazon.com/redshift/.

2. コンテンツペインで、目的のクラスターのチェックボックスをオンにします。[Cluster DatabaseProperties] で、[Endpoint]、[Port]、[Database Name] の値を書き留めます。

3. コマンドプロンプトで、コマンドラインパラメータか接続情報文字列を使用して接続情報を指定します。パラメータを使用するには次のように行います。

psql -h <endpoint> -U <userid> -d <databasename> -p <port>

各パラメータの意味は次のとおりです。

• <endpoint>は前のステップで書き留めた [Endpoint] です。• <userid>はクラスターに接続するアクセス権限があるユーザー ID です。• <databasename>は前のステップで書き留めた [Database Name] です。• <port>は前のステップで書き留めた [Port] です。

以下に例を示します。

psql -h examplecluster.<XXXXXXXXXXXX>.us-east-1.redshift.amazonaws.com -U masteruser -d dev -p 5439

4. psql パスワードプロンプトで、<userid>ユーザーのパスワードを入力します。

これでクラスターに接続されるので、コマンドをインタラクティブに入力できます。

API Version 2012-12-01130

Amazon Redshift 管理ガイドpsql ツールを使用してクラスターに接続する

Page 135: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

証明書を使って接続するpsqlで証明書を使ってサービスを認証するかどうかを制御するには、接続情報文字列を使って接続情報を指定し、sslmodeキーワードを指定する必要があります。デフォルトでは、psqlはsslmode=preferで動作しています。psql で暗号化接続を開いて Amazon Redshift 証明書を使ってサービスを検証するよう指定するには、AmazonRedshift証明書をコンピュータにダウンロードし、sslmode=verify-caを指定し、証明書の場所と sslrootcertを指定します。

接続情報文字列のパラメータの詳細については、http://www.postgresql.org/docs/8.4/static/libpq-connect.html を参照してください。

証明書を使って接続するには

1. パブリックキーをhttps://s3.amazonaws.com/redshift-downloads/redshift-ssl-ca-cert.pemから .pemファイル形式でコンピュータに保存します。Internet Explorer で File\Save as を行う場合、ファイル形式を [Text file (*.txt)] に指定し、.txt 拡張子を削除します。例えば、ファイルをC:\MyDownloads\redshift-ssl-ca-cert.pemという名前で保存します。

2. Amazon Redshift コンソールで、クラスターを選択して [Cluster Database Properties] を表示します。[Endpoint]、[Port]、[Database Name] のフィールドに表示された値を書き留めます。

3. コマンドプロンプトで、接続情報文字列を使って接続情報を指定します。

psql "host=<endpoint> user=<userid> dbname=<databasename> port=<port> sslm ode=verify-ca sslrootcert=<certificate>"

各パラメータの意味は次のとおりです。

• <endpoint>は前のステップで書き留めた [Endpoint] です。• <userid>はクラスターに接続するアクセス権限があるユーザー ID です。• <databasename>は前のステップで書き留めた [Database Name] です。• <port>は前のステップで書き留めた [Port] です。• <certificate>は証明書ファイルへのフルパスです。Windows システムの場合、証明書のパスはLinux形式の区切り文字(/)で指定する必要があります。Windowsの区切り文字(\)は使用しないでください。

以下に例を示します。

psql "host=examplecluster.<XXXXXXXXXXXX>.us-east-1.redshift.amazonaws.com user=masteruser dbname=dev port=5439 sslmode=verify-ca sslrootcert=C:/MyDown loads/redshift-ssl-ca-cert.pem"

4. psql パスワードプロンプトで、<userid>ユーザーのパスワードを入力します。

API Version 2012-12-01131

Amazon Redshift 管理ガイドpsql ツールを使用してクラスターに接続する

Page 136: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

これでクラスターに接続されるので、コマンドをインタラクティブに入力できます。

SSL でクラスターに接続するSecure Sockets Layer(SSL)接続をサポートするには、Amazon Redshift でクラスターごとにSSL証明書を作成してインストールします。これらの証明書は、公開認証局によって署名されます。パブリックキーはhttps://s3.amazonaws.com/redshift-downloads/redshift-ssl-ca-cert.pemに保存されています。

Important

厳密には、AmazonRedshiftでのSSLサポートは、クライアントとクラスター間の接続を暗号化することが目的であり、サーバーの認証に使用されるべきではありません。サーバーを認証するには、SSL証明書のパブリックキー(.pemファイル)をクライアントにインストールし、このキーを使ってクラスターに接続します。

デフォルトでは、クラスターデータベースは SSL の使用の有無にかかわらず接続を受け入れます。クラスターが SSL 接続を要求するように設定するには、クラスターに関連付けられているパラメータグループで require_sslパラメータを trueに設定します。パラメータグループの変更については、「パラメータグループを変更する (p. 46)」を参照してください。

Java でサーバー証明書を使って接続するSecurity Sockets Layer(SSL)は、クライアントとクラスター間を移動するデータを暗号化することによりセキュリティを強化します。サーバー証明書の使用により、クラスターが Amazon Redshift クラスターであることが確認され、セキュリティがさらに強化されます。これを行うには、プロビジョニングしたすべてのクラスターに自動インストールされたサーバー証明書をチェックします。JDBCでサーバー証明書を使用する方法の詳細については、PostgreSQL ドキュメントの「Configuring the Client」を参照してください。

このトピックでは、Amazon Redshift 証明書を Java キーストアに追加する方法を説明します。この手順では、JAVA_HOME環境変数によって示される Java インストールが、クラスターへの接続に使用するクライアントで使用されていることを前提としています。また、rootユーザーとしてタスク内のコマンドを実行することをお勧めします。

サーバー証明書を使って接続するには

1. keytoolプログラムを使って証明書をキーストアに追加します。以下のいずれかを行ってください。

a. コマンドプロンプトで、次のコマンドを使ってデフォルトのキーストアに証明書を追加します。

${JAVA_HOME}/bin/keytool -import -alias <alias> -file <certificate_file name>

ここで、<alias>は証明書へのアクセスに使用する一意な名前、<certificate_filename>はダウンロードした証明書ファイルへのフルパスです。エイリアスは、キーストアでキーを識別するために使用する任意の文字列です。

Note

キーストアがまだ存在しない場合は、キーストアの操作に使用するパスワードの入力を2回要求されることがあります。このパスワードは後で使用するので、書き留めておきます。

b. コマンドプロンプトで、次のコマンドを使って特定のキーストアに証明書を追加します。

API Version 2012-12-01132

Amazon Redshift 管理ガイドSSL でクラスターに接続する

Page 137: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

${JAVA_HOME}/bin/keytool -import -keystore <keystore_name> -alias <alias> -file <certificate_filename>

ここで、<keystore_name>はクライアントアプリケーションが使用するキーストアです。

2. 接続文字列に次のプロパティを指定します。

property name: sslproperty value: true

例えば、SQL Workbench/J の場合は、次のように接続文字列を指定します。

jdbc:postgresql://CLUSTERNFO.redshift.amazonaws.com:PORT/DBNAME?ssl=true

各パラメータの意味は次のとおりです。

• CLUSTERINFOは、クラスター固有の接続情報です(例:examplecluster.copoarqsqlsn.us-east-1)。

• PORTは、クラスター作成時に指定したポートです(例: 5439)。• DBNAMEは、クラスター作成時に指定したデータベースの名前です(例: mydb)。

Java コードの場合は、次のように接続文字列を指定します。

Connection conn = null;Properties props = new Properties();props.setProperty("ssl", "true");conn = DriverManager.getConnection(<jdbc-connection-string>, props);

SSL を使用する Java の完全なサンプルについては、「Java の使用によるクラスターへの接続 (p. 134)」を参照してください。

Java でサーバー証明書を使わずに接続するサーバー証明書を使用しなくても Amazon Redshift クラスターに接続できます。ただし、AmazonRedshiftクラスターに接続していることをクライアント側では確認できなくなります。証明書を使用しなくても SSL を使って接続できます。

サーバー証明書を使わずに接続するには

• 接続文字列に次のプロパティを指定します。

property name: sslfactoryproperty value: org.postgresql.ssl.NonValidatingFactory

例えば、SQL Workbench/J の場合は、次のように接続文字列を指定します。

jdbc:postgresql://CLUSTERNFO.redshift.amazonaws.com:PORT/DB NAME?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

各パラメータの意味は次のとおりです。

API Version 2012-12-01133

Amazon Redshift 管理ガイドSSL でクラスターに接続する

Page 138: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

• CLUSTERINFOは、クラスター固有の接続情報です(例:examplecluster.copoarqsqlsn.us-east-1)。

• PORTは、クラスター作成時に指定したポートです(例: 5439)。• DBNAMEは、クラスター作成時に指定したデータベースの名前です(例: mydb)。

Java コードの場合は、次のように接続文字列を指定します。

Connection conn = null;Properties props = new Properties();props.setProperty("ssl", "true");props.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory");conn = DriverManager.getConnection(<jdbc-connection-string>, props);

クラスターにプログラムで接続するTopics• Java の使用によるクラスターへの接続 (p. 134)• .NET の使用によるクラスターへの接続 (p. 136)

このセクションでは、クラスターにプログラムで接続する方法を示します。クライアント接続を管理する SQL Workbench/J のようなアプリケーションを使用している場合は、このセクションをスキップできます。

Java の使用によるクラスターへの接続Java を使用してプログラムでクラスターに接続する場合、サーバー認証の使用は任意です。サーバー認証を使用する予定がある場合は、「SSLでクラスターに接続する (p. ?)」の手順どおりに操作を行って、AmazonRedshiftサーバー証明書をキーストアに格納します。キーストアを参照するには、コード実行時にプロパティを次のように指定します。

-Djavax.net.ssl.trustStore=<path to keystore>-Djavax.net.ssl.trustStorePassword=<keystore password>

API Version 2012-12-01134

Amazon Redshift 管理ガイドクラスターにプログラムで接続する

Page 139: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Example : Java を使ってクラスターに接続する

次の例では、クラスターに接続し、システムテーブルを返すサンプルクエリを実行します。この例は、データベースにデータがなくても使用できます。

サーバー証明書でクラスターを認証する場合は、キーストアを使用する行のコメントアウトを解除します。

props.setProperty("ssl", "true");

サーバー証明書の詳細については、「SSL でクラスターに接続する (p. 132)」を参照してください。

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例 (p. 109)」を参照してください。

import java.sql.*;import java.util.Properties;

public class ConnectToClusterExample {

static final String dbURL = "***jdbc cluster connection string ****"; //e.g. "jdbc:postgresql://x.y.us-east-1.redshift.amazonaws.com:5439/dev"; static final String MasterUsername = "***master user name***"; static final String MasterUserPassword = "***master user password***";

public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ //Dynamically load postgresql driver at runtime. Class.forName("org.postgresql.Driver");

//Open a connection and define properties. System.out.println("Connecting to database..."); Properties props = new Properties();

//Uncomment the following line if using a keystore. //props.setProperty("ssl", "true"); props.setProperty("user", MasterUsername); props.setProperty("password", MasterUserPassword); conn = DriverManager.getConnection(dbURL, props);

//Try a simple query. System.out.println("Listing system tables..."); stmt = conn.createStatement(); String sql; sql = "select * from information_schema.tables;"; ResultSet rs = stmt.executeQuery(sql);

//Get the data from the result set. while(rs.next()){ //Retrieve two columns. String catalog = rs.getString("table_catalog"); String name = rs.getString("table_name");

//Display values. System.out.print("Catalog: " + catalog);

API Version 2012-12-01135

Amazon Redshift 管理ガイドクラスターにプログラムで接続する

Page 140: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

System.out.println(", Name: " + name); } rs.close(); stmt.close(); conn.close(); }catch(Exception ex){ //For convenience, handle all errors here. ex.printStackTrace(); }finally{ //Finally block to close resources. try{ if(stmt!=null) stmt.close(); }catch(Exception ex){ }// nothing we can do try{ if(conn!=null) conn.close(); }catch(Exception ex){ ex.printStackTrace(); } } System.out.println("Finished connectivity test."); } }

.NET の使用によるクラスターへの接続

.NET(C#)を使用してプログラムでクラスターに接続する場合、サーバー認証の使用は任意です。サーバー認証を使用する予定がある場合は、「SSL でクラスターに接続する (p. ?)」の手順どおりに操作を行って Amazon Redshift サーバー証明書をダウンロードし、.NET コードに合った形式で証明書を設定します。

API Version 2012-12-01136

Amazon Redshift 管理ガイドクラスターにプログラムで接続する

Page 141: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

Example : .NET を使ってクラスターに接続する

次の例では、クラスターに接続し、システムテーブルを返すサンプルクエリを実行します。サーバー認証は表示されません。この例は、データベースにデータがなくても使用できます。この例では、Npgsql(PostgreSQL 向けの .NET データプロバイダ)を使用します。

using System;using System.Data;using Npgsql; // http://npgsql.projects.pgfoundry.org/

namespace redshift.amazon.com.docsamples{ class ConnectToClusterExample { public static void Main(string[] args) {

DataSet ds = new DataSet(); DataTable dt = new DataTable();

//Server, e.g. "examplecluster.xyz.us-east-1.redshift.amazonaws.com"

String Server = "***provide server name part of connection string****";

//Port, e.g. "5439" String Port = "***provide port***";

//MasterUserName, e.g. "'masteruser'". Note use of single quotes.

String MasterUsername = "***provide master user name***";

//MasterUserPassword, e.g. "'mypassword'". Note use of single quotes. String MasterUserPassword = "***provide master user password***";

//DBName, e.g. "dev" String DBName = "***provide name of database***";

String query = "select * from information_schema.tables;";

try { // Create a PostgeSQL connection string. string connstring = String.Format( "Server={0};Database={1};" + "UID={2};PWD={3};Port={4};SSL=true;Sslmode=Require", Server, DBName, MasterUsername, MasterUserPassword, Port);

// Make a connection using the Npgsql provider. NpgsqlConnection conn = new NpgsqlConnection(connstring); conn.Open();

// Try a simple query. string sql = query; NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);

API Version 2012-12-01137

Amazon Redshift 管理ガイドクラスターにプログラムで接続する

Page 142: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

da.Fill(ds); dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { Console.WriteLine(row["table_catalog"] + ", " + row["table_name"]); }

conn.Close(); Console.ReadKey(); } catch (Exception ex) { Console.Error.WriteLine(ex.Message); Console.ReadKey(); }

} }}

Amazon EC2 以外から接続する – ファイアウォールタイムアウトの問題AmazonElastic ComputeCloud(AmazonEC2)インスタンス以外のコンピュータからAmazonRedshiftに接続している場合、一定期間アイドル状態が続くと、介在するネットワークコンポーネント(ファイアウォールなど)によって接続が停止されることがあります。このような動作は、VirtualPrivateNetwork(VPN)やローカルネットワークからログインした場合によく発生します。このようなタイムアウトを回避するために、ローカル設定を次のように変更することをお勧めします。

• クライアントシステムでTCP/IPタイムアウト値を大きく設定します。この変更は、クラスターへの接続に使用しているコンピュータで行います。クライアントやネットワークに対してタイムアウト期間を調整する必要があります。「TCP/IPタイムアウト設定を変更するには(p. 138)」を参照してください。

• 接続パラメータを追加で指定してクライアントにTCP/IPキープアライブの動作を設定します。「接続文字列に TCP/IP キープアライブ設定を指定するには (p. 139)」の手順を参照してください。

TCP/IP タイムアウト設定を変更するには

1. クラスターへの接続に使用するオペレーティングシステムに応じて、タイムアウトを設定します。

a. Linux – クライアントが Linux で動作している場合は、root ユーザーとして次のコマンドを実行します。

/sbin/sysctl -w net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5

b. Windows – クライアントがWindows で動作している場合は、レジストリ設定を次のように変更します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Paramet ers\KeepAliveTime 30000HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Paramet

API Version 2012-12-01138

Amazon Redshift 管理ガイドAmazon EC2以外から接続する–ファイアウォールタイム

アウトの問題

Page 143: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

ers\KeepAliveInterval 1000HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Tcp MaxDataRetransmissions 10

c. Mac – クライアントが Mac である場合は、root ユーザーとして次のコマンドを実行します。

sysctl -w net.inet.tcp.keepidle=20000sysctl -w net.inet.tcp.keepintvl=20000 sysctl -w net.inet.tcp.keepinit=20000sysctl -w net.inet.tcp.always_keepalive=1

2. クライアントがWindowsまたはMacで動作している場合は、システムを再起動して変更を有効にします。

3. 次の手順で説明するように、接続文字列に TCP/IP キープアライブの動作を設定します。

接続文字列に TCP/IP キープアライブ設定を指定するには

• クライアント用に指定する JDBC接続文字列で、下記のように tcpKeepAliveオプションを渡します。

jdbc:postgresql://CLUSTERNFO.redshift.amazonaws.com:PORT/DBNAME?tcp KeepAlive=true

各パラメータの意味は次のとおりです。

• CLUSTERINFOは、クラスター固有の接続情報です(例:examplecluster.copoarqsqlsn.us-east-1)。

• PORTは、クラスター作成時に指定したポートです(例: 5439)。• DBNAMEは、クラスター作成時に指定したデータベースの名前です(例: mydb)。

API Version 2012-12-01139

Amazon Redshift 管理ガイドAmazon EC2以外から接続する–ファイアウォールタイム

アウトの問題

Page 144: AmazonRedshifts3.amazonaws.com/awsdocs/redshift/latest/redshift-mgmt-ja-jp.pdf · AmazonRedshiftのCLIおよびAPIを使用したクラスターサブネットグループの管 ...

ドキュメント履歴

次の表は「Amazon Redshift 管理ガイド」の重要な変更点をまとめたものです。

最終更新: 2013 年 8 月 9 日

Amazon Redshift データベースのドキュメントに対する変更の一覧については、「Amazon RedshiftDeveloper Guide Document History」を参照してください。

リリース日説明変更点

2013 年 8 月 09 日IAM リソースレベルのアクセス許可について説明しています。AmazonRedshift IAMのアクセス権限については、「Amazon Redshift のリソースに対するアクセスの制御 (p. 93)」を参照してください。

新機能

2013 年 8 月 09 日復元の進捗メトリックスについて説明しています。詳細については、「スナップショットからのクラスターの復元 (p. 54)」を参照してください。

新機能

2013 年 7 月 17 日クラスタースナップショット共有とスナップショット作成の進捗メトリックスについて説明しています。詳細については、「スナップショットの共有 (p. 55)」を参照してください。

新機能

2013 年 7 月 08 日さまざまなドキュメント修正を公開しました。ドキュメントの修正

2013 年 4 月 22 日Amazon Redshift コンソールでの変更に合わせて「Amazon Redshift 管理ガイド」を更新しました。

新しいコンソール画面

2013 年 2 月 14 日これは「Amazon Redshift 管理ガイド」の初版リリースです。

新規ガイド

API Version 2012-12-01140

Amazon Redshift 管理ガイド