使用 Lambda 函數、Amazon VPC 和無伺服器架構產生靜態輸出 IP 地址 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Lambda 函數、Amazon VPC 和無伺服器架構產生靜態輸出 IP 地址

創建者湯瑪斯·斯科特 (AWS)

環境:生產

技術:容器和微服務; DevelopmentAndTesting

AWS 服務:AWS Lambda

Summary

此模式說明如何使用無伺服器架構在 Amazon Web Services (AWS) 雲端中產生靜態輸出 IP 地址。如果您的組織想要使用安全檔案傳輸通訊協定 (SFTP) 將檔案傳送至個別的業務實體,就可以從這個方法中受益。這表示企業實體必須能夠存取允許檔案透過其防火牆的 IP 位址。 

該模式的方法可協助您建立使用彈性 IP 地址作為輸出 IP 地址的 AWS Lambda 函數。透過遵循此模式中的步驟,您可以建立 Lambda 函數和虛擬私有雲 (VPC),透過具有靜態 IP 位址的網際網路閘道路由輸出流量。若要使用靜態 IP 位址,請將 Lambda 函數附加至 VPC 及其子網路。 

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶 

  • AWS Identity and Access Management (IAM) 許可,可建立和部署 Lambda 函數,以及建立 VPC 及其子網路。如需詳細資訊,請參閱 AWS Lambda 文件中的執行角色和使用者許可。

  • 如果您計劃使用基礎設施即程式碼 (IaC) 來實作此模式的方法,則需要整合式開發環境 (IDE),例如 AWS Cloud9。如需這方面的詳細資訊,請參閱什麼是 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 1並將流量Private subnet 2路由到公用子網路中的 NAT 閘道。

  5. NAT 閘道會從公用子網路將輸出流量傳送至網際網路閘道。

  6. 輸出資料會從網際網路閘道傳輸到外部伺服器。

技術堆疊

  • Lambda

  • Amazon Virtual Private Cloud (Amazon VPC)

 

自動化和規模

您可以在不同的可用區域中使用兩個公用子網路和兩個私有子網路,以確保高可用性 (HA)。即使有一個可用區域無法使用,該模式的解決方案仍會繼續運作。

工具

  • AWS Lambda — AWS Lambda 是一種運算服務,可支援執行程式碼,而無需佈建或管理伺服器。Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。只需為使用的運算時間支付費用,一旦未執行程式碼,就會停止計費。

  • 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 管理員
建立第二個公用子網路。
  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 管理員
建立第二個私有子網路。
  1. 在 Amazon VPC 主控台上,選擇「子網路」,然後選擇「建立子網路」。 

  2. 針對名稱標籤,輸入 private-two

  3. 對於 VPC,請選擇 Lambda VPC

  4. 選擇包含您先前建立之public-two子網路的相同可用區域。 

  5. 對於 IPv4 CIDR 區塊,請輸入,10.0.0.64/28然後選擇 [建立子網路]。

AWS 管理員
任務描述所需技能
建立第一個彈性 IP 位址。
  1. 在 Amazon VPC 主控台上,選擇彈性 IP,然後選擇配置新地址

  2. 選擇 [置] 並記錄新建立的彈性 IP 位址的配置 ID

備註:此彈性 IP 位址用於您的第一個 NAT 閘道。 

AWS 管理員
建立第二個彈性 IP 位址。
  1. 在 Amazon VPC 主控台上,選擇彈性 IP,然後選擇配置新地址

  2. 選擇置並記錄第二個彈性 IP 位址的配置識別碼

備註:此彈性 IP 位址用於您的第二個 NAT 閘道。

AWS 管理員
任務描述所需技能
建立網際網路閘道
  1. 在 Amazon VPC 主控台上,選擇 [網際網路閘道],然後選擇 [建立網際網路閘道]。

  2. 輸入名Lambda internet gateway稱,然後選擇 [建立網際網路閘道]。請確定您已記錄網際網路閘道 ID。 

AWS 管理員
將網際網路閘道連接至 VPC。

選取您剛建立的網際網路閘道,然後選擇 Actions, Attach to VPC (動作、連接到 VPC)

AWS 管理員
任務描述所需技能
建立第一個 NAT 閘道。
  1. 在 Amazon VPC 主控台上,選擇「NAT 閘道」,然後選擇「建立 NAT 閘道」。

  2. 輸入nat-one為 NAT 閘道名稱。

  3. 選擇public-one作為要在其中建立 NAT 閘道的子網路。

  4. 針對 [連線類型] 選擇 [用]。

  5. 針對彈性 IP 配置識別碼,請選擇您先前建立的第一個彈性 IP 位址,並將其與 NAT 閘道建立關聯。

  6. 選擇建立 NAT 閘道

AWS 管理員
建立第二個 NAT 閘道。
  1. 在 Amazon VPC 主控台上,選擇「NAT 閘道」,然後選擇「建立 NAT 閘道」。

  2. 輸入nat-two為 NAT 閘道名稱。

  3. 選擇public-two作為要在其中建立 NAT 閘道的子網路。

  4. 針對 [連線類型] 選擇 [用]。

  5. 針對彈性 IP 配置識別碼,請選擇您先前建立的第二個彈性 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. 選擇 Save Changes (儲存變更)。

AWS 管理員
建立公用兩個子網路的路由表。
  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. 選擇 Save Changes (儲存變更)。

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. 選擇 Save Changes (儲存變更)。

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. 選擇 Save Changes (儲存變更)。

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 位址是否符合其中一個彈性 IP 位址。

AWS 管理員

相關資源