Lambda 関数、Amazon VPC、およびサーバーレスアーキテクチャを使用して静的アウトバウンド IP アドレスを生成する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lambda 関数、Amazon VPC、およびサーバーレスアーキテクチャを使用して静的アウトバウンド IP アドレスを生成する

作成者:トーマス・スコット (AWS)

環境:本稼働

テクノロジー:コンテナとマイクロサービス、ソフトウェア開発とテスト

AWS サービス: AWS Lambda

[概要]

このパターンでは、サーバーレスアーキテクチャを使用して、Amazon Web Services (AWS) クラウドで静的アウトバウンド IP アドレスを生成する方法を説明します。組織がセキュアファイル転送プロトコル (SFTP) を使用して別の事業体にファイルを送信したい場合、この方法を利用することができる。つまり、事業体は、ファイアウォールを通過するファイルを許可する IP アドレスにアクセスできる必要があります。 

このパターンのアプローチは、Elastic IP アドレスをアウトバウンド IP アドレスとして使用する AWS Lambda 関数を作成するのに役立ちます。このパターンの手順に従うことで、Lambda 関数と、静的 IP アドレスを持つインターネットゲートウェイ経由でアウトバウンドトラフィックをルーティングする仮想プライベートクラウド (VPC) を作成できます。静的 IP アドレスを使用するには、Lambda 関数を VPC とそのサブネットにアタッチします。 

前提条件と制限

前提条件

  • アクティブな AWS アカウント。 

  • AWS Identity and Access Management (IAM) アクセス権限で、Lambda 関数の作成とデプロイ、VPC とそのサブネットの作成が可能です。詳細については、AWS Lambda ドキュメントの「実行ロールとユーザー権限」を参照してください。

  • コードとしてのインフラストラクチャ (IaC) を使用してこのパターンのアプローチを実装する予定であれば、AWS Cloud9 のような統合開発環境 (IDE) が必要です。詳細については、AWS Cloud9 ドキュメントにある「AWS Cloud9 とは?」を参照してください。

アーキテクチャ

このパターンのサーバーレスアーキテクチャを次の図に示します。

この図表は、次のワークフローを示しています:

  1. アウトバウンドトラフィックは NAT gateway 1Public subnet 1 から離れます。

  2. アウトバウンドトラフィックは NAT gateway 2Public subnet 2 から離れます。

  3. Lambda 関数は Private subnet 1 または Private subnet 2 で実行できます。

  4. Private subnet 1Private subnet 2 はパブリックサブネットの NAT ゲートウェイにトラフィックをルーティングします。

  5. NAT ゲートウェイは、パブリックサブネットからインターネットゲートウェイにアウトバウンドトラフィックを送信します。

  6. アウトバウンドデータは、インターネットゲートウェイから外部サーバーに転送されます。

テクノロジースタック

  • Lambda

  • Amazon Virtual Private Cloud (Amazon VPC)

 

自動化とスケール

異なるアベイラビリティーゾーンにある 2 つのパブリックサブネットと 2 つのプライベートサブネットを使用することで、高可用性 (HA) を確保できます。1 つのアベイラビリティーゾーンが使用できなくなっても、パターンのソリューションは引き続き機能します。

ツール

  • AWS Lambda」 – AWS Lambda はサーバーのプロビジョニングや管理を行わずにコードの実行を支援できるコンピューティングサービスです。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。

  • Amazon VPC」— Amazon Virtual Private Cloud (Amazon VPC) では、AWS クラウドの論理的に隔離されたセクションをプロビジョニングすることで、ユーザーが定義した仮想ネットワーク内で AWS リソースを起動できます。仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークによく似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。

エピック

タスク説明必要なスキル
新しい VPC を作成します。

AWS マネジメントコンソールにサインインし、Amazon VPC コンソールを開いて、10.0.0.0/25 を IPv4 CIDR範囲とする Lambda VPC という名前のVPCを作成します。

VPC の作成に関する詳細は、Amazon VPC ドキュメントの「Amazon VPC の使用開始」を参照してください。 

AWS 管理者
タスク説明必要なスキル
最初のパブリックサブネットを作成します。
  1. Amazon VPC コンソールで [サブネット] を選択し、その後 [サブネットの作成] を選択します。 

  2. 名前タグ に「public-one」を入力します。

  3. VPCで、Lambda VPC を選択します。

  4. アベイラビリティーゾーンを選択して記録します。 

  5. [IPv4 CIDR ブロック] の場合は、10.0.0.0/28 を入力して、[サブネットの作成] を選択します。

AWS 管理者
2 番目のパブリックサブネットを作成します。
  1. Amazon VPC コンソールで [サブネット] を選択し、その後 [サブネットの作成] を選択します。 

  2. 名前タグ に「public-two」を入力します。

  3. VPCで、Lambda VPC を選択します。

  4. アベイラビリティーゾーンを選択して記録します。重要:public-one サブネットを含むアベイラビリティーゾーンは使用できません。 

  5. [IPv4 CIDR ブロック] の場合は、10.0.0.16/28 を入力して、[サブネットの作成] を選択します。

AWS 管理者
タスク説明必要なスキル
最初のプライベートサブネットを作成します。
  1. Amazon VPC コンソールで [サブネット] を選択し、その後 [サブネットの作成] を選択します。 

  2. 名前タグ に「private-one」を入力します。

  3. VPCで、Lambda VPC を選択します。

  4. 前に作成した public-one サブネットを含むアベイラビリティーゾーンを選択します。 

  5. [IPv4 CIDR ブロック] の場合は、10.0.0.32/28 を入力して、[サブネットの作成] を選択します。

AWS 管理者
2 番目のプライベートサブネットを作成する
  1. Amazon VPC コンソールで [サブネット] を選択し、その後 [サブネットの作成] を選択します。 

  2. 名前タグ に「private-two」を入力します。

  3. VPCで、Lambda VPC を選択します。

  4. 前に作成した public-two サブネットを含む同じアベイラビリティーゾーンを選択します。 

  5. [IPv4 CIDR ブロック] の場合は、10.0.0.64/28 を入力して、[サブネットの作成] を選択します。

AWS 管理者
タスク説明必要なスキル
最初の Elastic IP アドレスを作成します。
  1. Amazon VPC コンソールで [Elastic IP] を選択し、[新しいアドレスを割り当てる] を選択します。

  2. [割り当て] を選択し、新しく作成した Elastic IP アドレスの [割り当て ID] を記録します。

注:この Elastic IP アドレスは、最初の NAT ゲートウェイに使用されます。 

AWS 管理者
2 番目の Elastic IP アドレスを作成します。
  1. Amazon VPC コンソールで [Elastic IP] を選択し、[新しいアドレスを割り当てる] を選択します。

  2. [割り当て] を選択し、この 2 番目の Elastic IP アドレスの [割り当て ID] を記録します。

注:この Elastic IP アドレスは 2 番目の NAT ゲートウェイに使用されます。

AWS 管理者
タスク説明必要なスキル
インターネットゲートウェイを作成します。
  1. Amazon VPC コンソールで [インターネットゲートウェイ] を選択し、[インターネットゲートウェイの作成] を選択します。

  2. 名前として Lambda internet gateway を入力し、[インターネットゲートウェイの作成] を選択します。インターネットゲートウェイ ID を記録しておくことを確認してください。 

AWS 管理者
インターネットゲートウェイを VPC にアタッチします。

作成したインターネットゲートウェイを選択して、[アクション]、[VPC にアタッチ] を選択します。

AWS 管理者
タスク説明必要なスキル
最初の NAT ゲートウェイを作成します。
  1. Amazon VPC コンソールで [NAT ゲートウェイ] を選択し、[NAT ゲートウェイの作成] を選択します。

  2. NAT ゲートウェイ名として nat-one を入力します。

  3. NAT ゲートウェイを作成するサブネットとして public-one を選択します。

  4. [接続タイプ] には [パブリック] を選択します。

  5. [Elastic IP 割り当て ID] には、前に作成した最初の Elastic IP アドレスを選択し、NAT ゲートウェイに関連付けます。

  6. [NAT ゲートウェイを作成] を選択します。

AWS 管理者
2 番目の NAT ゲートウェイを作成します。
  1. Amazon VPC コンソールで [NAT ゲートウェイ] を選択し、[NAT ゲートウェイの作成] を選択します。

  2. NAT ゲートウェイ名として nat-two を入力します。

  3. NAT ゲートウェイを作成するサブネットとして public-two を選択します。

  4. [接続タイプ] には [パブリック] を選択します。

  5. [Elastic IP 割り当て ID] には、前に作成した 2 つ目の Elastic IP アドレスを選択し、NAT ゲートウェイに関連付けます。

  6. [NAT ゲートウェイを作成] を選択します。

AWS 管理者
タスク説明必要なスキル
パブリックワンサブネット用のルートテーブルを作成します。
  1. Amazon VPC コンソールで [ルートテーブル] を選択し、[ルートテーブルの作成] を選択します。

  2. ルートテーブル名として「public-one-subnet」を入力し、[ルートテーブルの作成] を選択します。

  3. [public-one-subnet ルートテーブル]、[ルートの編集]、[ルートの追加] の順に選択します。

  4. [送信先] ボックスで 0.0.0.0 を指定し、[ターゲット] リストでインターネットゲートウェイ ID を選択します。

  5. [サブネットの関連付け] タブで [サブネットの関連付けを編集] を選択し、10.0.0.0/28 CIDR 範囲の public-one サブネットを選択して、[関連付けを保存] を選択します。

  6. [変更の保存] をクリックします。

AWS 管理者
パブリック2 サブネットのルートテーブルを作成します。
  1. Amazon VPC コンソールで [ルートテーブル] を選択し、[ルートテーブルの作成] を選択します。

  2. ルートテーブル名として「public-two-subnet」を入力し、[ルートテーブルの作成] を選択します。

  3. [public-two-subnet ルートテーブル]、[ルートの編集]、[ルートの追加] の順に選択します。

  4. [送信先] ボックスで 0.0.0.0 を指定し、[ターゲット] リストでインターネットゲートウェイ ID を選択します。

  5. [サブネットの関連付け] タブで [サブネットの関連付けを編集] を選択し、10.0.0.16/28 CIDR 範囲の public-two サブネットを選択して、[関連付けを保存] を選択します。

  6. [変更の保存] をクリックします。

AWS 管理者
プライベートワンサブネットのルートテーブルを作成します。
  1. Amazon VPC コンソールで [ルートテーブル] を選択し、[ルートテーブルの作成] を選択します。

  2. ルートテーブル名として「private-one-subnet」を入力し、[ルートテーブルの作成] を選択します。

  3. [private-one-subnet ルートテーブル]、[ルートの編集]、[ルートの追加] の順に選択します。

  4. [送信先] ボックスで 0.0.0.0 を指定し、[ターゲット] リストの public-one サブネット内の NAT ゲートウェイを選択します。

  5. [サブネットの関連付け] タブで [サブネットの関連付けを編集] を選択し、10.0.0.32/28 CIDR 範囲の private-one サブネットを選択して、[関連付けを保存] を選択します。

  6. [変更の保存] をクリックします。

AWS 管理者
プライベートツーサブネットのルートテーブルを作成します。
  1. Amazon VPC コンソールで [ルートテーブル] を選択し、[ルートテーブルの作成] を選択します。

  2. ルートテーブル名として「private-two-subnet」を入力し、[ルートテーブルの作成] を選択します。

  3. [private-two-subnet ルートテーブル]、[ルートの編集]、[ルートの追加] の順に選択します。

  4. [送信先] ボックスで 0.0.0.0 を指定し、[ターゲット] リストの public-two サブネット内の NAT ゲートウェイを選択します。

  5. [サブネットの関連付け] タブで [サブネットの関連付けを編集] を選択し、10.0.0.64/28 CIDR 範囲の private-two サブネットを選択して、[関連付けを保存] を選択します。

  6. [変更の保存] をクリックします。

AWS 管理者
タスク説明必要なスキル
新しい Lambda 関数の作成
  1. AWS Lambda コンソールを開き、[関数の作成] を選択します。

  2. [基本情報]の [関数名] に Lambda test を入力し、[ランタイム] で目的の言語を選択します。

  3. [関数を作成] を選択します。

AWS 管理者
Lambda 関数 を VPC に追加します。
  1. AWS Lambda コンソールで、[関数] を選択し、前に作成した関数を選択します。 

  2. [Configuration] (設定)、VPC の順に選択します。

  3. [編集] を選択し、Lambda VPC と両方のプライベートサブネットを選択します。

  4. テスト用に [既定のセキュリティグループ] を選択し、[保存] を選択します。

AWS 管理者
外部サービスを呼び出すコードを記述します。
  1. 選択したプログラミング言語で、IP アドレスを返す外部サービスを呼び出すコードを記述します。

  2. 返された IP アドレスが Elastic IP アドレスのいずれかと一致することを確認します。

AWS 管理者

関連リソース