メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

ユーザーの代わりに Amazon Aurora から他の AWS のサービスにアクセスすることを許可する

注記

他の AWS サービスとの統合は、Amazon Aurora バージョン 1.8 以降で使用できます。Aurora バージョンの詳細については、「Amazon Aurora データベースエンジンの更新」を参照してください。

ユーザーの代わりに Aurora DB クラスターから他のサービスにアクセスするには、DB クラスター内のデータベースユーザーから他の AWS サービスにアクセスすることを許可するための AWS Identity and Access Management (IAM) ロールを作成して設定する必要があります。ターゲット AWS サービスへの送信接続を許可するように、Aurora DB クラスターを設定する必要もあります。これにより、データベースユーザーは他の AWS サービスを使用して以下のアクションを実行できるようになります。

Amazon S3 リソースにアクセスするための IAM ロールの設定

Aurora DB クラスターから別の AWS サービスにアクセスすることを許可するには、以下のことを行います。

  1. AWS サービスにアクセス権限を付与する IAM ポリシーを作成します。詳細については、「Amazon Aurora から Amazon S3 のリソースにアクセスすることを許可する」または「Amazon Aurora から AWS Lambda のリソースにアクセスすることを許可する」を参照してください。

  2. IAM ロールを作成し、作成したポリシーをアタッチします。詳細については、「Amazon Aurora から AWS サービスにアクセスすることを許可する IAM ロールを作成する」を参照してください。

  3. その IAM ロールを Aurora DB クラスターに関連付けます。詳細については、「IAM ロールを DB クラスターに関連付ける」を参照してください。

Amazon Aurora から Amazon S3 のリソースにアクセスすることを許可する

以下のステップを使用して、ユーザーの代わりに Aurora から Amazon Simple Storage Service (Amazon S3) バケットにアクセスするために必要な最低のアクセス権限を提供する IAM ポリシーを作成できます。 Aurora から Amazon S3 バケットのすべてにアクセスすることを許可するには、以下のステップをスキップし、独自のポリシーを作成する代わりに定義済みの AmazonS3ReadOnlyAccess ポリシーを使用できます。

Amazon S3 リソースへのアクセスを許可する IAM ポリシーを作成するには

  1. IAM コンソールを開きます。

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

  3. [Create Policy] を選択します。

  4. [Policy Generator] で、[Select] を選択します。

  5. [Edit Permissions] で、以下の値を設定します。

    • [Effect] – Allow

    • [AWS Service] – Amazon S3

    • [Actions] – ListBucket

      ListBucket は、バケットオペレーションのアクセス権限であり、ワイルドカード (*) またはバケットに付与する必要があります。Amazon S3 におけるバケットオペレーションのアクセス権限の詳細については、「ポリシーでのアクセス許可の指定」を参照してください。

    • [Amazon Resource Name (ARN)] として、アクセスを許可する先の Amazon S3 バケットの ARN を設定します。たとえば、Aurora から example-bucket という名前の Amazon S3 バケットにアクセスすることを許可するには、ARN 値として arn:aws:s3:::example-bucket を設定します。

  6. [Add Statement] を選択します。

  7. [Edit Permissions] で、以下の値を設定します。

    • [Effect] – Allow

    • [AWS Service] – Amazon S3

    • [Actions] – GetObject および GetObjectVersion

      GetObjectGetObjectVersion は、オブジェクトオペレーションのアクセス権限であり、バケット自体にではなくバケット内のオブジェクトに付与する必要があります。Amazon S3 におけるオブジェクトオペレーションのアクセス権限の詳細については、「ポリシーでのアクセス許可の指定」を参照してください。

    • [Amazon Resource Name (ARN)] として、アクセスを許可する先の Amazon S3 バケットの ARN を設定します。たとえば、Aurora から example-bucket という名前の Amazon S3 バケットにあるすべてのファイルにアクセスすることを許可する場合は、ARN 値として arn:aws:s3:::example-bucket/* を設定します。

    注記

    Aurora から Amazon S3 バケット内の特定のファイルやフォルダーにのみアクセスすることを許可するには、[Amazon Resource Name (ARN)] により具体的な ARN 値を設定することができます。Amazon S3 のアクセスポリシーの定義方法については、「Amazon S3 リソースへのアクセス許可の管理」を参照してください。

  8. [Add Statement] を選択します。

    注記

    このステップと前の 3 つのステップによりアクセスポリシーに追加されたステートメントのペアは、LOAD DATA FROM S3 コマンドと LOAD XML FROM S3 コマンドが Amazon S3 バケットから読み取ることができるようにするために必要な最小アクセス権限を表します。

    このステップと前の 3 つのステップを繰り返して、ステートメントの対応するペアを、Aurora がアクセスできるようにする各 Amazon S3 バケットのポリシーに追加できます。オプションで、Amazon S3 内のすべてのバケットとオブジェクトへのアクセスを許可できます。

  9. [Next Step] を選択します。

  10. [Policy Name] に、IAM ポリシーの名前 (AllowAuroraToExampleBucket など) を設定します。IAM ロールを作成して Aurora DB クラスターに関連付ける際に、この名前を使用します。オプションで [Description] 値を追加することもできます。

  11. [Create Policy] を選択します。

Amazon Aurora から AWS Lambda のリソースにアクセスすることを許可する

以下のステップを使用して、ユーザーの代わりに Aurora から AWS Lambda 関数を呼び出すために必要な最低の権限を提供する IAM ポリシーを作成できます。Aurora から AWS Lambda のすべての関数を呼び出すことを許可するには、以下のステップをスキップして、独自のポリシーを作成する代わりに定義済みの AWSLambdaRole ポリシーを使用できます。

AWS Lambda 関数への呼び出しを許可する IAM ポリシーを作成するには

  1. IAM コンソールを開きます。

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

  3. [Create Policy] を選択します。

  4. [Policy Generator] オプションで、[Select] を選択します。

  5. [Edit Permissions] で、以下の値を設定します。

    • [Effect] – Allow

    • [AWS Service] – AWS Lambda

    • [Actions] – InvokeFunction

      以上のアクセス権限は、Amazon Aurora から AWS Lambda 関数を呼び出すために必要な最低の権限です。

  6. [Amazon Resource Name (ARN)] として、アクセスを許可する先の Lambda 関数の ARN を設定します。たとえば、Aurora から example_function という名前の Lambda 関数にアクセスすることを許可するには、ARN 値として arn:aws:lambda:::function:example_function を設定します。

    AWS Lambda のアクセスポリシーを定義する方法の詳細については、AWS Lambda に対する認証とアクセスコントロール」を参照してください。

  7. [Add Statement] を選択します。

    このステップと前のステップを繰り返して複数の ARN をポリシーに追加し、Aurora から複数の Lambda 関数を呼び出すこともできます。

  8. [Next Step] を選択します。

  9. [Policy Name] に、IAM ポリシーの名前 (AllowAuroraToExampleFunction など) を設定します。IAM ロールを作成して Aurora DB クラスターに関連付ける際に、この名前を使用します。オプションで [Description] 値を追加することもできます。

  10. [Create Policy] を選択します。

Amazon Aurora から AWS サービスにアクセスすることを許可する IAM ロールを作成する

ユーザーに代わって Amazon RDS クラスターが他の AWS サービスと通信することを許可する IAM ロールを作成するには、以下のステップを実行します。

Amazon RDS から AWS サービスにアクセスすることを許可する IAM ロールを作成するには

  1. IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. [Create New Role] を選択します。

  4. [Role Name] で、自分のロールの名前 (RDSLoadFromS3 など) を入力します。[Next Step] を選択します。

  5. [AWS Service Roles] を選択し、[Amazon RDS] までスクロールします。[Select] を選択します。

  6. [Next Step] を選択します。

  7. 情報を確認してから、[Create Role] を選択します。

  8. IAM ロールのリストで、新しく作成したロールを選択します。[Permissions] タブを選択し、次に [Attach Policy] を選択します。

  9. Amazon Aurora から Amazon S3 のリソースにアクセスすることを許可する または Amazon Aurora から AWS Lambda のリソースにアクセスすることを許可する で前に定義したポリシーを選択します。

  10. [Attach Policy] を選択します。

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

Amazon Aurora DB クラスター内のデータベースユーザーから他の AWS サービスにアクセスすることを許可するには、Amazon Aurora から AWS サービスにアクセスすることを許可する IAM ロールを作成する で作成したロールをその DB クラスターに関連付けます。

IAM ロールを DB クラスターに関連付けるには、2 つのことを行います。

  • RDS コンソール、AWS CLI の add-role-to-db-cluster コマンド、RDS API の AddRoleToDBCluster アクションを使用して、DB クラスターの関連付けられたロールのリストにロールを追加します。

    Aurora DB クラスターごとに最大 5 つの IAM ロールを追加できます。

  • 関連する AWS サービスのクラスターレベルのパラメーターを、関連付けられた IAM ロールの ARN に設定します。

    DB クラスターから Amazon S3 バケットにアクセスする IAM ロールのクラスターレベルのパラメーター名は、aws_default_s3_role です。DB クラスターから Lambda 関数を呼び出す IAM ロールのクラスターレベルのパラメーター名は、aws_default_lambda_role です。

コンソールを使用して IAM ロールを Aurora DB クラスターに関連付けるには

  1. https://console.aws.amazon.com/rds/ で RDS コンソールを開きます。

  2. [Clusters] を選択します。

  3. IAM ロールを関連付ける Aurora DB クラスターを選択し、[Manage IAM Roles] を選択します。

     DB クラスターの IAM ロールを管理する
  4. [Manage IAM Roles] で、DB クラスターに関連付けるロールを [Available roles] から選択します。

     IAM ロールを DB クラスターに関連付ける
  5. (オプション) IAM ロールを DB クラスターに関連付けることを止めて、関連するアクセス権限を削除するには、ロールの [Delete] を選択します。

  6. [Done] を選択します。

  7. RDS コンソールで、ナビゲーションペインの [Parameter Groups] を選択します。

  8. カスタム DB パラメータグループをすでに使用している場合は、DB クラスターの新しいパラメータグループを作成する代わりに、そのグループを選択して使用できます。DB クラスターのデフォルトのパラメータグループを使用している場合は、以下のステップに従って、DB クラスターの新しいパラメータグループを作成する必要があります。

    1. [Create Parameter Group] を選択します。

       DB クラスターのパラメータグループを作成する

      [Parameter Group Family] で、[aurora5.6] を選択します。

    2. [Type] で、[DB cluster parameter group] を選択します。

    3. [Group Name] に、DB クラスターの新しいパラメータグループの名前を入力します。

    4. [Description] に、DB クラスターの新しいパラメータグループの説明を入力します。

    5. [Create] を選択します。

  9. DB クラスターのパラメータグループを選択し、[Edit Parameters] を選択します。

  10. aws_default_s3_role パラメーターと aws_default_lambda_role パラメーターに、関連する IAM ロールの ARN 値を設定します。たとえば、aws_default_s3_role パラメーターだけにarn:aws:iam::123456789012:role/AllowAuroraS3Role を設定できます。

  11. [Save Changes] を選択します。

  12. [Instances] を選択し、Aurora DB クラスターのプライマリインスタンスを選択します。

  13. [Instance Actions] を選択し、次に [Modify] を選択します。

  14. [DB Cluster Parameter Group] に、新しく作成した DB クラスターのパラメータグループを設定します。[Apply Immediately] を選択します。 [Continue] を選択します。

  15. 変更内容を確認して、[Modify DB Instance] をクリックします。

  16. DB クラスターのプライマリインスタンスは、インスタンスのリストで選択されたままになります。[Instance Actions] を選択し、次に [Reboot] を選択します。

    インスタンスが再起動すると、IAM ロールが DB クラスターに関連付けられます。

    クラスターのパラメータグループの詳細については、「DB クラスターパラメータと DB インスタンスパラメータ」を参照してください。

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

  1. 以下に示すように、AWS CLI から [add-role-to-db-cluster] コマンドを呼び出して、IAM ロールの ARN を DB クラスターに追加します。

    Copy
    PROMPT> aws rds add-role-to-db-cluster --db-cluster-identifier my-cluster --role-arn arn:aws:iam::123456789012:role/AllowAuroraS3Role PROMPT> aws rds add-role-to-db-cluster --db-cluster-identifier my-cluster --role-arn arn:aws:iam::123456789012:role/AllowAuroraLambdaRole
  2. DB クラスターのデフォルトのパラメータグループを使用している場合は、DB クラスターの新しいパラメータグループを作成する必要があります。カスタム DB パラメータグループをすでに使用している場合は、DB クラスターの新しいパラメータグループを作成する代わりに、そのグループを使用できます。

    DB クラスターの新しいパラメータグループを作成するには、以下に示すように、AWS CLI から [create-db-cluster-parameter-group] コマンドを呼び出します。

    Copy
    PROMPT> aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name AllowAWSAccess \ --db-parameter-group-family aurora5.6 --description "Allow access to Amazon S3 and AWS Lambda"
  3. 以下に示すように、クラスターレベルのパラメータとその関連する IAM ロールの ARN 値を DB クラスターのパラメータグループに設定します。

    Copy
    PROMPT> aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name AllowAWSAccess \ --parameters "name=aws_default_s3_role,value=arn:aws:iam::123456789012:role/AllowAuroraS3Role,method=pending-reboot" \ --parameters "name=aws_default_lambda_role,value=arn:aws:iam::123456789012:role/AllowAuroraLambdaRole,method=pending-reboot"
  4. 以下に示すように、DB クラスターの新しいパラメータグループを使うように DB クラスターを変更し、クラスターを再起動します。

    Copy
    PROMPT> aws rds modify-db-cluster --db-cluster-identifier my-cluster --db-cluster-parameter-group-name AllowAWSAccess PROMPT> aws rds reboot-db-instance --db-instance-identifier my-cluster-primary

    インスタンスが再起動すると、IAM ロールが DB クラスターに関連付けられます。

    クラスターのパラメータグループの詳細については、「DB クラスターパラメータと DB インスタンスパラメータ」を参照してください。

AWS リージョンへの IAM ロールの制限

特定の AWS リージョンにのみアクセスできるように IAM ロールを制限できます。デフォルトでは、IAM ロールは 1 つのリージョンに限定されません。IAM ロールを特定の AWS リージョンに制限するかどうかはオプションです。

IAM ロールの使用をリージョンごとに制限するには、次の手順に従います。

IAM ロールの許可されたリージョンを特定する

  1. IAM コンソール (https://console.aws.amazon.com) を開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. 特定のリージョンで変更するロールを選択します。

  4. [Trust Relationships] タブを選択し、[Edit Trust Relationship] を選択します。ユーザーに代わって Amazon Aurora から他の AWS サービスにアクセスすることを許可する新しい IAM ロールは、次のような信頼関係を持ちます。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  5. ロールの使用を許可する特定のリージョンのリストで、PrincipalService リストを変更します。Service リストの各リージョンは、次の形式である必要があります。rds.region.amazonaws.com

    例えば、次の編集された信頼関係では、us-east-1us-west-2 リージョンでのみ IAM ロールの使用が許可されます。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.us-east-1.amazonaws.com", "rds.us-west-2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. [Update Trust Policy] を選択します。

Amazon Aurora から他の AWS Services へのネットワーク通信の有効化

AWS Lambda 関数を呼び出すか、Amazon S3 からファイルをロードするには、Aurora DB クラスターのネットワーク設定で、それらのサービスのエンドポイントへの送信接続を許可する必要があります。サービスのエンドポイントに接続できない場合、Aurora は以下のエラーメッセージを返します。

Copy
ERROR 1871 (HY000): S3 API returned error: Network Connection
Copy
ERROR 1873 (HY000): Lambda API returned error: Network Connection. Unable to connect to endpoint

AWS Lambda 関数の呼び出し中、または Amazon S3 からファイルのロード中にこれらのメッセージが表示された場合は、Aurora DB クラスターがパブリックかプライベートかを確認します。Aurora DB クラスターがプライベートの場合は、接続を有効にするように設定する必要があります。

Aurora DB クラスターがパブリックの場合は、パブリックアクセス可能とマークされている必要があります。この場合、AWS マネジメントコンソール で DB クラスターの詳細を見ると、[Publicly Accessible] が [Yes] となっています。DB クラスターは Amazon VPC パブリックサブネットにも存在する必要があります。パブリックアクセス可能な DB インスタンスの詳細については、「VPC 内の Amazon RDS DB インスタンスの使用」を参照してください。パブリック Amazon VPC サブネットの詳細については、「VPC とサブネット」を参照してください。

Aurora DB クラスターがパブリックアクセス可能ではなく、VPC パブリックサブネットにある場合は、プライベートです。DB クラスターがプライベートで、AWS Lambda 関数を呼び出すか、Amazon S3 ファイルにアクセスする場合は、ネットワークアドレス変換 (NAT) を使用してインターネットアドレスに接続できるようにクラスターを設定します。Amazon S3 の代わりに、DB クラスターのルートテーブルに、Amazon S3 の VPC エンドポイントが関連付けられるように、VPC を設定することもできます。VPC での NAT の設定の詳細については、「NAT ゲートウェイ」を参照してください。VPC エンドポイントの設定の詳細については、「VPC エンドポイント」を参照してください。

関連トピック