Lambda 関数に別のアカウントの Amazon VPC 内のリソースへのアクセスを許可する - AWS Lambda

Lambda 関数に別のアカウントの Amazon VPC 内のリソースへのアクセスを許可する

別のアカウントによって管理されている Amazon Virtual Private Cloud の Amazon VPC 内のリソースへのアクセスを、VPC をインターネットに公開することなく、AWS Lambda 関数に許可できます。このアクセスパターンにより、AWS を使用して他の組織とデータを共有できます。このアクセスパターンを使用すると、インターネット経由よりも高いレベルのセキュリティとパフォーマンスで、VPC 間でデータを共有できます。Amazon VPC ピアリング接続を使用してこれらのリソースにアクセスするように Lambda 関数を設定します。

警告

アカウントまたは VPC 間のアクセスを許可する場合は、プランがこれらのアカウントを管理する各組織のセキュリティ要件を満たしていることを確認します。このドキュメントの手順に従うことは、リソースのセキュリティ体制に影響します。

このチュートリアルでは、IPv4 を使用してピアリング接続で 2 つのアカウントを接続します。Amazon VPC にまだ接続されていない Lambda 関数を設定します。静的 IP を提供しないリソースに関数を接続するように DNS 解決を設定します。これらの手順を他のピアリングシナリオに適応させるには、「VPC ピアリングガイド」を参照してください。

前提条件

Lambda 関数に別のアカウントのリソースへのアクセスを許可するには、次のものが必要です。

  • リソースを使用して承認し、リソースから読み取るように設定されている Lambda 関数。

  • Amazon RDS クラスターなど、Amazon VPC 経由で利用可能な別のアカウントのリソース。

  • Lambda 関数のアカウントとリソースのアカウントの認証情報。リソースのアカウントを使用する権限がない場合は、権限を持つユーザーに連絡してそのアカウントを準備します。

  • Lambda 関数に関連付ける VPC (およびサポートされている Amazon VPC リソース) を作成および更新するアクセス許可。

  • Lambda 関数の実行ロールと VPC 設定を更新するアクセス許可。

  • Lambda 関数のアカウントに VPC ピアリング接続を作成するアクセス許可。

  • リソースのアカウントで VPC ピアリング接続を受け入れるアクセス許可。

  • リソースの VPC (および Amazon VPC リソースのサポート) の設定を更新するアクセス許可。

  • Lambda 関数を呼び出すアクセス許可。

関数のアカウントに Amazon VPC を作成する

Lambda 関数のアカウントに Amazon VPC、サブネット、ルートテーブル、セキュリティグループを作成します。

コンソールを使用して VPC、サブネット、その他の VPC リソースを作成するには
  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ダッシュボードで、[VPC を作成] を選択します。

  3. [IPv4 CIDR ブロック] には、プライベート CIDR ブロックを指定します。CIDR ブロックは、リソースの VPC で使用されるブロックと重複してはいけません。リソースの VPC がリソースに IP を割り当てるために使用するブロックや、リソース VPC のルートテーブルで既に定義されているブロックを選択しないでください。適切な CIDR ブロックの定義の詳細については、「VPC CIDR ブロック」を参照してください。

  4. [AZ のカスタマイズ] を選択します。

  5. リソースと同じ AZ を選択します。

  6. [パブリックサブネットの数] には、[0] を選択します。

  7. [VPC エンドポイント] には、[なし] を選択します。

  8. [Create VPC(VPC の作成)] を選択します。

関数の実行ロールに VPC アクセス許可を付与します。

AWSLambdaVPCAccessExecutionRole を関数の実行ロールにアタッチして、VPC に接続できるようにします。

関数の実行ロールに VPC アクセス許可を付与するには
  1. Lambda コンソールの [関数] ページを開きます。

  2. 関数の名前を選択します。

  3. [設定] を選択します。

  4. [許可] を選択してください。

  5. [実行ロール] で、実行ロールを選択します。

  6. [アクセス許可ポリシー] セクションで、[アクセス許可の追加] を選択します。

  7. ドロップダウンリストで、[ポリシーをアタッチ] を選択します。

  8. 検索ボックスに「AWSLambdaVPCAccessExecutionRole」と入力します。

  9. ポリシー名の左側で、チェックボックスを選択します。

  10. [Add permissions (許可の追加)] を選択します。

関数を Amazon VPC にアタッチするには
  1. Lambda コンソールの [関数] ページを開きます。

  2. 関数の名前を選択します。

  3. [設定] タブを選択し、次に [VPC] を選択します。

  4. [編集] を選択します。

  5. [VPC] で、自分の VPC を選択します

  6. [サブネット] で、サブネットを選択します。

  7. [セキュリティグループ] で、VPC のデフォルトのセキュリティグループを選択します。

  8. [保存] を選択します。

VPC ピアリング接続リクエストの作成

関数の VPC (リクエスタ VPC) からリソースの VPC (アクセプタ VPC) への VPC ピアリング接続リクエストを作成します。

関数の VPC から VPC ピアリング接続をリクエストするには
  1. https://console.aws.amazon.com/vpc/ を開きます。

  2. ナビゲーションペインで、[Peering Connections] (ピアリング接続) をクリックします。

  3. [Create Peering Connection] (ピアリング接続の作成) をクリックします。

  4. [VPC ID (リクエスタ)] には、関数の VPC を選択します。

  5. [アカウント ID] には、リソースのアカウントの ID を入力します。

  6. [VPC ID (アクセプタ)] には、リソースの VPC を入力します。

リソースのアカウントを準備する

ピアリング接続を作成し、接続を使用するようにリソースの VPC を準備するには、前提条件に記載されているアクセス許可を保持するロールを使用してリソースのアカウントにログインします。ログインする手順は、アカウントのセキュリティ保護方法によって異なる場合があります。AWS アカウントにサインインする方法の詳細については、「AWS Sign-in User Guide」を参照してください。リソースのアカウントで、次の手順を実行します。

VPC ピアリング接続リクエストを受け入れるには
  1. https://console.aws.amazon.com/vpc/ を開きます。

  2. ナビゲーションペインで、[Peering Connections] (ピアリング接続) をクリックします。

  3. 保留中の VPC ピアリング接続を選択します (ステータスは承認待ちです)。

  4. [アクション] を選択します。

  5. ドロップダウンリストから、[リクエストを受け入れる] を選択します。

  6. 確認を求められたら、[リクエストの承諾] を選択します。

  7. [ルートテーブルを今すぐ変更] を選択して VPC のメインルートテーブルにルートを追加すると、ピアリング接続を介してトラフィックを送受信できるようになります。

リソースの VPC のルートテーブルを検査します。Amazon VPC によって生成されたルートは、リソースの VPC の設定方法に基づいて接続を確立しない場合があります。VPC の新しいルートと既存の設定の間に競合がないことを確認します。トラブルシューティングの詳細については、「Amazon Virtual Private Cloud VPC ピアリング接続ガイド」の「VPC ピアリング接続のトラブルシューティング」を参照してください。

リソースのセキュリティグループを更新するには
  1. https://console.aws.amazon.com/vpc/ を開きます。

  2. ナビゲーションペインで、[セキュリティグループ] を選択します。

  3. リソースのセキュリティグループを選択します。

  4. [アクション] を選択します。

  5. ドロップダウンリストから、[インバウンドルールの編集] を選択します。

  6. [ルールの追加] を選択します。

  7. [ソース] には、関数のアカウント ID とセキュリティグループ ID をフォワードスラッシュで区切って入力します (例: 111122223333/sg-1a2b3c4d)。

  8. [Edit outbound rules] (アウトバウンドルールの編集) を選択します。

  9. アウトバウンドトラフィックが制限されているかどうかを確認します。デフォルトの VPC 設定では、すべてのアウトバウンドトラフィックが許可されます。アウトバウンドトラフィックが制限されている場合は、次のステップに進みます。

  10. [ルールの追加] を選択します。

  11. [送信先] には、関数のアカウント ID とセキュリティグループ ID をフォワードスラッシュで区切って入力します (例: 111122223333/sg-1a2b3c4d)。

  12. [ルールの保存] を選択します。

ピアリング接続の DNS 解決を有効にするには
  1. https://console.aws.amazon.com/vpc/ を開きます。

  2. ナビゲーションペインで、[Peering Connections] (ピアリング接続) をクリックします。

  3. ピアリング接続を選択します。

  4. [アクション] を選択します。

  5. [DNS 設定の編集] を選択します。

  6. [アクセプタ DNS 解決] で、[リクエスタ VPC がアクセプタ VPC ホストの DNS をプライベート IP に解決できるようにする] を選択します。

  7. [Save changes] (変更の保存) をクリックします。

関数のアカウントで VPC 設定を更新する

関数のアカウントにログインし、VPC 設定を更新します。

VPC ピアリング接続のルートを追加するには
  1. https://console.aws.amazon.com/vpc/ を開きます。

  2. ナビゲーションペインで、[Route tables] (ルートテーブル) を選択します。

  3. 関数に関連付けたサブネットのルートテーブルの名前の横にあるチェックボックスをオンにします。

  4. [アクション] を選択します。

  5. [Export routes] (ルートのエクスポート) を選択します。

  6. [Add Rule] (ルートの追加) を選択します。

  7. [送信先] には、リソースの VPC の CIDR ブロックを入力します。

  8. [ターゲット] には、VPC ピアリング接続を選択します。

  9. [Save changes] (変更の保存) をクリックします。

ルートテーブルの更新中に発生する可能性のある考慮事項の詳細については、「VPC ピアリング接続のルートテーブルを更新する」を参照してください。

Lambda 関数のセキュリティグループを更新するには
  1. https://console.aws.amazon.com/vpc/ を開きます。

  2. ナビゲーションペインで、[セキュリティグループ] を選択します。

  3. [アクション] を選択します。

  4. インバウンドのルールを編集 を選択します。

  5. ルールを追加 を選択してください。

  6. [ソース] には、リソースのアカウント ID とセキュリティグループ ID をフォワードスラッシュで区切って入力します (例: 111122223333/sg-1a2b3c4d)。

  7. [ルールの保存] を選択します。

ピアリング接続の DNS 解決を有効にするには
  1. https://console.aws.amazon.com/vpc/ を開きます。

  2. ナビゲーションペインで、[Peering Connections] (ピアリング接続) をクリックします。

  3. ピアリング接続を選択します。

  4. [アクション] を選択します。

  5. [DNS 設定の編集] を選択します。

  6. [リクエスタ DNS 解決] で、[アクセプタ VPC がリクエスタ VPC ホストの DNS をプライベート IP に解決できるようにする] を選択します。

  7. [Save changes] (変更の保存) をクリックします。

関数をテストする

テストイベントを作成し、関数の出力を検査するには
  1. [コードソース] ペインで、[テスト] を選択します。

  2. [新しいイベントを作成] を選択します。

  3. [イベント JSON] パネルで、デフォルト値を Lambda 関数に適した入力に置き換えます。

  4. [呼び出し] を選択します。

  5. [実行結果] タブで、[レスポンス] に想定した出力が含まれていることを確認します。

さらに、関数のログをチェックして、ログが想定どおりに機能していることを確認できます。

CloudWatch Logs で関数の呼び出しレコードを表示するには
  1. [Monitor] (モニタリング) タブを選択します。

  2. [CloudWatch Logs を表示] を選択します。

  3. [ログストリーム] タブで、関数呼び出しに対応するログストリームを選択します。

  4. ログが想定どおりに機能していることを確認します。