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 リファレンスの「アクション」を参照してください。

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

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

請求に関する考慮事項

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

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

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

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

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

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

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

コンソールで Lambdaの インターフェイスエンドポイント を作成するには

  1. Amazon VPC コンソールの [エンドポイント ページ] を開きます。

  2. [] を選択します。

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

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

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

  6. インターフェイスエンドポイント のプライベート DNS を有効にするには、[DNS 名を有効にする] チェックボックスをオンにします。

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

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

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

詳細については、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 を呼び出すことができます。

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