Lambda 用のインバウンドインターフェイス VPC エンドポイントの接続 - AWS Lambda

Lambda 用のインバウンドインターフェイス VPC エンドポイントの接続

Amazon Virtual Private Cloud (Amazon VPC) を使用して AWS リソースをホストする場合、VPC と Lambda の間の接続を確立できます。この接続を使用して、パブリックインターネットを交差せずに Lambda 関数を呼び出すことができます。

VPC と Lambda とのプライベート接続を確立するには、インターフェイス VPC エンドポイントを作成します。インターフェイスエンドポイントは、インターネットゲートウェイ、NAT デバイス、VPN 接続、AWS Direct Connect 接続のいずれも必要とせずに Lambda API にプライベートにアクセスできる AWS PrivateLink を利用しています。VPC のインスタンスは、パブリック IP アドレスがなくても Lambda API と通信できます。VPC と Lambda との間のトラフィックは、AWS ネットワークを離れません。

各インターフェイスエンドポイントは、サブネット内の 1 つ以上の Elastic Network Interface によって表されます。ネットワークインターフェイスは、Lambda へのトラフィックのエントリポイントとなるプライベート IP アドレスを提供します。

Lambda インターフェイスエンドポイントに関する考慮事項

Lambda のインターフェイスエンドポイントを設定する前に、Amazon VPC ユーザーガイドの「インターフェイスエンドポイントのプロパティと制限」を確認してください。

VPC から任意の Lambda API オペレーションを呼び出すことができます。例えば、VPC 内で Invoke API を呼び出すことで、Lambda 関数を呼び出すことができます。Lambda API の完全なリストについては、Lambda API リファレンスの「アクション」を参照してください。

use1-az3 は、Lambda VPC 関数のキャパシティが制限されたリージョンです。このアベイラビリティーゾーンのサブネットを Lambda 関数で使用しないでください。これは、停止した場合にゾーンレベルの冗長性が低下する可能性があるためです。

永続的な接続のための Keep-alive

Lambda は長期間アイドル状態の接続を削除するため、永続的な接続を維持するには、Keep-alive ディレクティブを使用します。関数を呼び出すときにアイドル状態の接続を再利用しようとすると、接続エラーが発生します。永続的な接続を維持するには、ランタイムに関連付けられている keep-alive ディレクティブを使用します。例については、AWS SDK for JavaScript 開発者ガイドの「Node.js で Keep-alive を使用して接続を再利用する」を参照してください。

請求に関する考慮事項

インターフェイスエンドポイントを介して Lambda 関数にアクセスするための追加料金はありません。Lambda の料金の詳細については、「AWS Lambda の料金」を参照してください。

Lambda のインターフェイスエンドポイントには、AWS PrivateLink の標準料金が適用されます。AWS アカウントは、各アベイラビリティーゾーンでインターフェイスエンドポイントがプロビジョニングされる時間ごと、およびインターフェイスエンドポイントを介して処理されたデータに対して請求されます。インターフェイスエンドポイント料金の詳細については、「AWS PrivateLink の料金」を参照してください。

VPC ピアリングに関する考慮事項

他の VPC は、インターフェイスエンドポイントを使用して VPC ピアリング接続 によって VPC に接続できます。VPC ピアリングは、2 つの VPC 間のネットワーク接続です。自分が所有者である 2 つの VPC 間や、他の AWS アカウント内の VPC との間で、VPC ピアリング接続を確立できます。VPC は 2 つの異なる AWS リージョンの間でも使用できます。

ピア接続された VPC 間のトラフィックは AWS ネットワーク上に留まり、パブリックインターネットを経由しません。VPC がピア接続されると、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、Amazon Relational Database Service (Amazon RDS) インスタンス、または双方の VPC の VPC 対応 Lambda 関数などのリソースは、いずれかの VPC で作成されたインターフェイスエンドポイントを介して Lambda API にアクセスできます。

Lambda のインターフェイスエンドポイントの作成

Amazon VPC コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、Lambda のインターフェイスエンドポイントを作成できます。詳細については、Amazon VPC ユーザーガイドインターフェイスエンドポイントの作成を参照してください。

Lambda のインターフェイスエンドポイントを作成するには (コンソール)
  1. Amazon VPC コンソールの [Endpoints (エンドポイント)] ページを開きます。

  2. [Create endpoint] (エンドポイントの作成) を選択します。

  3. [サービスカテゴリ] で、[AWS サービス] が選択されていることを確認します。

  4. [サービス名] で [com.amazonaws.region.lambda を選択します。[タイプ] が [インターフェイス] であることを確認します。

  5. VPC とサブネットを選択します。

  6. インターフェイスエンドポイントのプライベート DNS を有効にするには、[Enable DNS Name] (DNS 名を有効にする) でチェックボックスをオンにします。AWS のサービスの VPC エンドポイントに対してプライベート DNS ホスト名を有効にすることをお勧めします。これにより、AWS SDK を介して行われたリクエストなど、パブリックサービスエンドポイントを使用するリクエストが VPC エンドポイントに解決されるようになります。

  7. [セキュリティグループ] で、1 つ以上のセキュリティグループを選択します。

  8. [エンドポイントの作成] を選択します。

プライベート DNS オプションを使用するには、VPC の enableDnsHostnames および enableDnsSupportattributes を設定する必要があります。詳細については、Amazon VPC ユーザーガイドの「VPC の DNS サポートを表示および更新する」を参照してください。エンドポイントのプライベート DNS を有効にすると、リージョンのデフォルト DNS 名 (lambda.us-east-1.amazonaws.com など) を使用して、Lambda への API リクエストを実行できます。サービスエンドポイントの詳細については、「AWS 全般のリファレンス」の「サービスエンドポイントとクォータ」を参照してください。

詳細については、「Amazon VPC ユーザーガイド」の「インターフェイスエンドポイントを介したサービスへのアクセス」を参照してください。

AWS CloudFormation を使用してエンドポイントを作成および設定する方法については、AWS CloudFormation ユーザーガイドの「AWS::EC2::VPCEndpoint」リソースを参照してください。

Lambda のインターフェイスエンドポイントを作成するには (AWS CLI)

create-vpc-endpoint コマンドを使用し、VPC ID、VPC エンドポイントタイプ (インターフェイス)、サービス名、エンドポイントを使用するサブネット、およびエンドポイントネットワークインターフェイスに関連付けるセキュリティグループを指定します。次に例を示します。

aws ec2 create-vpc-endpoint --vpc-id vpc-ec43eb89 --vpc-endpoint-type Interface --service-name \ com.amazonaws.us-east-1.lambda --subnet-id subnet-abababab --security-group-id sg-1a2b3c4d

Lambda のインターフェイスエンドポイントポリシーを作成する

インターフェイスエンドポイントを使用できるユーザーと、ユーザーがアクセスできる Lambda 関数を制御するために、エンドポイントにエンドポイントポリシーをアタッチできます。このポリシーでは、以下の情報を指定します。

  • アクションを実行できるプリンシパル。

  • プリンシパルが実行できるアクション。

  • プリンシパルがアクションを実行できるリソース。

詳細については、Amazon VPC ユーザーガイドの「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。

例: Lambda アクションのインターフェイスエンドポイントポリシー

Lambda のエンドポイントポリシーの例を次に示します。エンドポイントにアタッチされると、このポリシーにより、ユーザー MyUser は 関数 my-function を呼び出すことができます。

注記

リソースには、修飾関数 ARN と非修飾関数 ARN の両方を含める必要があります。

{ "Statement":[ { "Principal": { "AWS": "arn:aws:iam::111122223333:user/MyUser" }, "Effect":"Allow", "Action":[ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-2:123456789012:function:my-function", "arn:aws:lambda:us-east-2:123456789012:function:my-function:*" ] } ] }