Amazon Web Services ブログ

AWS PrivateLink を使用してプライベート AWS ネットワーク経由で AWS Lambda にアクセスする

AWS Lambda は、サーバーをプロビジョニングまたは管理する必要なしでコードを実行できるサービスです。コードをアップロードするだけで、Lambda がすべての作業を実行してコードを実行およびスケーリングして、高可用性を実現します。現在、AWS のお客様の多くは、このサーバーレスコンピューティングプラットフォームを使用して、アプリケーションの開発と運用中に生産性を大幅に向上させています。

本日、AWS Lambda が AWS PrivateLink をサポートすることをお知らせいたします。これにより、トラフィックをパブリックインターネットに公開することなく、Virtual Private Cloud (VPC) やオンプレミスのデータセンター内から安全に Lambda 関数を呼び出すことができるようになります。

これまでは、Lambda 関数を呼び出すために、VPC には インターネットゲートウェイネットワークアドレス変換 (NAT) ゲートウェイ、パブリック IP アドレスが必要でした。今回の更新により、PrivateLink は AWS プライベートネットワーク経由でコールをルーティングするため、インターネットアクセスが不要になりました。さらに、AWS Direct Connect または AWS VPN 接続を使用して VPC に接続することで、オンプレミスのデータセンターから Lambda API を直接呼び出すことができるようになります。

一部のお客様は、内部の IT ガバナンス要件のためにインターネットにアクセスできない VPC から Lambda 関数を管理および呼び出すことを望んでいました。今回の更新により、こうしたお客様も Lambda を使用できるようになります。また、VPC から Lambda にアクセスするために NAT ゲートウェイを管理しているお客様は、NAT ゲートウェイの代わりに VPC エンドポイントを使用できるため、NAT ゲートウェイのコストを削減できます。Lambda 関数を呼び出すために VPC へのインターネットアクセスを許可する必要がなくなり、ネットワークアーキテクチャがよりシンプルで管理しやすくなるため、セキュリティがさらに強化されます。以前は、VPC が有効な Lambda 関数が別の Lambda 関数を呼び出す場合、このような呼び出しは NAT GW を経由する必要がありましたが、今後は代わりに VPC エンドポイントを使用できるようになります。

AWS PrivateLink の使用を開始する方法

AWS PrivateLink は、「インターフェイス VPC エンドポイント」と呼ばれる Elastic Network Interface を使用して、AWS のサービスをターゲットとするトラフィックのエントリポイントとして機能します。インターフェイスエンドポイントは、すべてのネットワークトラフィックを AWS 内部ネットワークに制限し、サービスへの安全なアクセスを提供します。インターフェイス VPC エンドポイントは、プライベート IP アドレスを持ち、水平方向にスケーリングされる冗長で可用性の高い VPC コンポーネントです。

AWS マネジメントコンソールの使用開始

使用を開始するには、AWS マネジメントコンソールAWS CLI、または AWS CloudFormation を使用します。この最初の例では、マネジメントコンソールを示します。

まず VPC マネジメントコンソールにアクセスし、[Endpoints] をクリックします。

[Create Endpoint] ボタンをクリックします。

検索バーに「lambda」と入力すると、サービス名が表示されます。サービス名を選択し、インターフェイスエンドポイントを作成する VPC を選択します。

その後、エンドポイントを作成する可能性があるサブネットを指定するよう求められます。

必要であれば、[Enable DNS name] オプションを有効にすると、 Amazon Route53 プライベートホストゾーンを持つエンドポイントに独自の DNS 名を設定できます。このオプションを有効にすると、パブリックサブネット内の Lambda 関数に対するリクエストは、インターネットゲートウェイ経由で Lambda を呼び出すことができず、通信はプライベートサブネットの VPC エンドポイントを経由する必要があります。

次に、プロトコル、ポート、および送信元/送信先の IP アドレス制御に「セキュリティグループ」を指定します。

次に、VPC エンドポイントにアクセスできるユーザーを制御するポリシーを設定します。デフォルトでは「完全アクセス」が選択されていますが、最初に必要な最小限のプリンシパルにのみアクセスを許可することをお勧めします。後で変更することもできます。

以下に、カスタマイズして「ポリシー」を作成できるサンプルを示します。 このサンプルでは、IAM ユーザー「MyUser」だけが「my-function」の Lambda 関数を呼び出すことができます。

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

さて、それでは最後のステップを取り上げます。[Create endpoint] ボタンをクリックします。以下のような成功ダイアログが表示されます。

これで、エンドポイント DNS 名を使用して Lambda 関数を呼び出すことができます。また、VPC ピアリングAWS Transit Gatewayを介して、元の VPC に接続された別の VPC から Lambda 関数を呼び出すこともできます。あるいは、別の AWS アカウントから呼び出すこともできます。

AWS コマンドラインインターフェイス (CLI) で使用を開始する

AWS CLI 環境をすでに使用している場合は、AWS CLI を使用する方がより正確で簡単です。 

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

今すぐご利用いただけます

AWS Lambda による AWS PrivateLink サポートは、アフリカ (ケープタウン) と欧州 (ミラノ) を除くすべての AWS リージョンで利用可能になりました。これらのリージョンのサポートはロードマップにあり、近日中に予定されています。AWS PrivateLink の標準料金が、Lambda インターフェイスエンドポイントに適用されます。インターフェイスエンドポイントが各アベイラビリティーゾーンでプロビジョニングされるたびに、およびインターフェイスエンドポイントを介して処理されたデータに対して課金されます。AWS Lambda には追加料金は必要ありません。詳細については、AWS PrivateLink の 料金ページ、およびドキュメントを参照してください。

– Kame;