メニュー
Amazon Redshift
管理ガイド (API Version 2012-12-01)

IAM ロールを使用して COPY および UNLOAD 操作を許可する

COPY コマンドを使用してデータを Amazon Redshift にロード (またはインポート) および UNLOAD コマンドを使用してデータを Amazon Redshift からアンロード (またはエクスポート) できます。COPY または UNLOAD コマンドを使用する場合、Amazon Redshift クラスターを許可するセキュリティ認証情報を指定して Amazon S3 バケットなどの送信先に対するデータの読み取りと書き込みを行う必要があります。セキュリティ認証情報は、AWS アクセスキーまたは IAM ロールを指定する望ましい方法にすることができます。IAM ロールを指定した場合、その IAM ロールはデータをロードまたはデータをアンロードするクラスターに関連付けられる必要があります。Amazon Redshift を許可して Amazon Redshift に対してデータをコピーまたはデータをアンロードする IAM ロールの作成については、ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスすることを許可する を参照してください。

COPY または UNLOAD コマンドで IAM ロールを使用する手順は、次のとおりです。

  • Amazon Redshift クラスターで使用する IAM ロールを作成します。

  • IAM ロールをクラスターに関連付けます。

  • COPY または UNLOAD コマンドを呼び出す場合、IAM ロールの ARN を含めます。

このトピックのセクションでは、IAM ロールを Amazon Redshift クラスターに関連付ける方法について説明します。 IAM ロールの作成に関する詳細は、ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスすることを許可する を参照してください。

COPY コマンドの使用の詳細については、データのロードを参照してください。UNLOAD コマンドの使用の詳細については、データのアンロードを参照してください。

IAM ロールをクラスターに関連付ける

ユーザーの代わって Amazon Redshift が他の AWS のサービスにアクセスすることを許可する IAM ロールを作成した後、そのロールを使用してデータをロードまたはアンロードする前に、そのロールを Amazon Redshift クラスターに関連付ける必要があります。

IAM ロールをクラスターに関連付けるために必要なアクセス許可

IAM ロールをクラスターに関連付けるには、IAM ユーザーは、その IAM ロールの iam:PassRole アクセス許可が必要です。このアクセス許可により、ユーザーが IAM ロールを Amazon Redshift クラスターに関連付けることを管理者が制限できます。

次の例は、ユーザーがアクションを実行することを許可する IAM ユーザーにアタッチできる IAM ポリシーを示します。

  • そのユーザーアカウントによって所有されるすべての Amazon Redshift クラスターの詳細を取得します。

  • 3 つの IAM ロールのいずれかを 2 つの Amazon Redshift クラスターのいずれかに関連付けます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:DescribeClusters", "Resource": "*" }, { "Effect": "Allow", "Action": [ "redshift:ModifyClusterIamRoles", "redshift:CreateCluster" ], "Resource": [ "arn:aws:redshift:123456789012:us-east-1:cluster/my-redshift-cluster", "arn:aws:redshift:123456789012:us-east-1:cluster/my-second-redshift-cluster" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::123456789012:role/MyRedshiftRole", "arn:aws:iam::123456789012:role/SecondRedshiftRole", "arn:aws:iam::123456789012:role/ThirdRedshiftRole" ] } ] }

IAM ユーザーに適切なアクセス許可がある場合、そのユーザーは、COPY もしくは UNLOAD コマンド、または他の Amazon Redshift コマンドで使用する Amazon Redshift クラスターに IAM ロールを関連付けることができます。

IAM ポリシーの詳細については、IAM ユーザーガイドIAM ポリシーの概要を参照してください。

クラスターに関連付けられる IAM ロールの管理

クラスターを作成する場合、IAM ロールを Amazon Redshift クラスターに関連付けるか、既存のクラスターを変更して 1 つ以上の IAM ロールの関連付けを追加または削除できます。次の点に注意してください。

  • 最大 10 の IAM ロールを Amazon Redshift クラスターに関連付けることができます。

  • IAM ロールは複数の Amazon Redshift クラスターと関連付けることができます。

  • IAM ロールとクラスターの両方が同じ AWS アカウントによって所有されている場合にのみ、IAM ロールを Amazon Redshift クラスターに関連付けることができます。

IAM ロールの関連付けを管理するコンソールの使用

次の手順を使用して、コンソールでクラスターに対する IAM ロールの関連付けを管理できます。

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

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

  3. リストで、IAM ロールの関連付けを管理するクラスターを選択します。

  4. [Manage IAM Roles] を選択します。

  5. IAM ロールをクラスターに関連付けるには、[Available roles] リストから IAM ロールを選択します。リストに表示されない場合は (IAM ロールがまだ作成されていない場合など)、手動で IAM ロールを入力することもできます。

  6. クラスターから IAM ロールの関連付けを解除する場合は、関連付けを解除する IAM ロールの X を選択します。

  7. クラスターの IAM ロールの関連付けを変更することが完了したら、[Apply Changes] を選択してクラスターに関連付けられる IAM ロールを更新します。

[Manage IAM Roles] パネルは、クラスターの IAM ロール関連付けのステータスを示します。クラスターに関連付けられているロールは、in-sync のステータスを示します。クラスターとの関連付けの途中であるロールは、 adding のステータスを示します。クラスターから関連付けを解除されるロールは、removing のステータスを示します。

IAM ロールの関連付けを管理する AWS CLI の使用

次のアプローチを使用して、AWS CLI でクラスターに対する IAM ロールの関連付けを管理できます。

AWS CLI を使用して IAM ロールをクラスターに関連付ける

クラスターの作成時に IAM ロールをクラスターに関連付けるには、create-cluster コマンドの --iam-role-arns パラメーターで IAM ロールの Amazon リソースネーム (ARN) を指定します。create-cluster コマンドを呼び出すときに追加する IAM ロールを最大 10 まで指定できます。

IAM ロールの Amazon Redshift クラスターへの関連付けおよび関連付けの解除は非同期処理です。describe-clusters コマンドを呼び出して、すべての IAM ロールのクラスター関連付けのステータスを取得できます。

次の例では、2 つの IAM ロールを my-redshift-cluster という名前の新しく作成されたクラスターに関連付けます。

Copy
aws redshift create-cluster \ --cluster-identifier "my-redshift-cluster" \ --node-type "dc1.large" \ --number-of-nodes 16 \ --iam-role-arns "arn:aws:iam::123456789012:role/RedshiftCopyUnload" \ "arn:aws:iam::123456789012:role/SecondRedshiftRole"

既存の Amazon Redshift クラスターに IAM ロールを関連付けるには、modify-cluster-iam-roles コマンドの --add-iam-roles パラメーターで IAM ロールの Amazon リソースネーム (ARN) を指定します。modify-cluster-iam-roles コマンドを呼び出すときに追加する IAM ロールを最大 10 まで指定できます。

次の例では、IAM ロールを my-redshift-clusterという名前の既存のクラスターに関連付けます。

Copy
aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --add-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
AWS CLI を使用してクラスターから IAM ロールの関連付けを解除する

クラスターから IAM ロールの関連付けを解除するには、modify-cluster-iam-roles コマンドの --remove-iam-roles パラメーターで IAM ロールの ARN を指定します。modify-cluster-iam-roles コマンドを呼び出すときに削除する IAM ロールを最大 10 まで指定できます。

次の例では、my-redshift-clusterという名前のクラスターから 123456789012 AWS アカウントの IAM ロールの関連付けを削除します。

Copy
aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --remove-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
AWS CLI を使用してクラスターの IAM ロールの関連付けをリスト化する

Amazon Redshift クラスターに関連付けられている IAM ロールおよび IAM ロールの関連付けのステータスをリスト化するには、describe-clusters コマンドを呼び出します。クラスターに関連付けられた各 IAM ロールの ARN は、次の出力例のように、IamRoles リストで返されます。

クラスターに関連付けられているロールは、in-sync のステータスを示します。クラスターとの関連付けの途中であるロールは、 adding のステータスを示します。クラスターから関連付けを解除されるロールは、removing のステータスを示します。

Copy
{ "Clusters": [ { "ClusterIdentifier": "my-redshift-cluster", "NodeType": "dc1.large", "NumberOfNodes": 16, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... }, { "ClusterIdentifier": "my-second-redshift-cluster", "NodeType": "dc1.large", "NumberOfNodes": 10, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/ThirdRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... } ] }

AWS CLI の使用の詳細については、AWS Command Line Interface User Guide を参照してください。