重製提供者特定的界限

在取代 AWS 特定整合代碼時保留業務邏輯。

若要重製提供者特定的界限,請執行下列步驟:

  1. 將商業邏輯擷取至供應商中立模組。在比較測試期間,只對重新執行擷取的來源事件新增 AWS 事件剖析器。
  2. 為目標呼叫樣式建立 OCI 轉接器:要求 / 回應、CloudEvent、佇列訊息、串流記錄、物件事件、通知或整合要求。
  3. 使用介面取代直接 AWS SDK 呼叫,並在這些介面後實作 OCI 服務呼叫。執行相同的組態、加密密碼存取、記錄日誌、測量結果以及重試處理。
  4. 重新執行擷取的 Lambda 事件,並比較狀態代碼、標頭、回應主體、物件描述資料、順流寫入、副作用、錯誤訊息以及等冪行為。

尋找要與事件剖析、SDK 呼叫、IAM 假設、記錄、封裝和重試處理分隔的業務邏輯。

考量:避免與提供者整合同時重寫業務邏輯。變更兩者會使同等測試變得更加困難。

瞭解 OCI 提供的內容

識別哪些移轉步驟使用標準 OCI 組態,以及哪些需要自訂程式碼。

Oracle Cloud Infrastructure 提供功能執行、API 管理、事件、佇列、排程、身分識別、網路、可觀察性及部署的服務。不過,移轉仍可能需要工作負載特定的變更,包括:

  • 將 AWS 事件有效負載轉換成應用程式預期的輸入
  • 使用 OCI SDK 呼叫取代 AWS SDK 呼叫
  • 重新建立觸發程式、重試、排序以及失敗行為
  • 翻譯 IAM 權限和網路存取
  • 更新 CI/CD 管線與作業程序

導入之前,請先識別哪些步驟使用標準 OCI 組態,以及哪些步驟需要自訂程式碼。請先驗證是否有區分代表性工作負載,再預估越多的移轉。

封裝並部署 OCI 函數

將移轉的函數建置為容器映像檔,並將其部署到 OCI 函數

若要封裝和部署函數,請遵循下列步驟:

  1. 建立或更新函數專案和 func.yaml。從測量的來源行為 (而非預設值) 設定記憶體與逾時。
  2. 視需要將先前的 Lambda 層內容、原生相依性、程式實際執行相依性、憑證及系統套裝程式移至影像或共用基礎影像。
  3. 追蹤映像檔大小、相依性版本、原生程式庫相容性、啟動行為、初始化工作以及容器映像檔內的程式實際執行行為。
  4. 在連線生產觸發程式之前,先以代表性的成功和失敗有效負載 (Payload) 來建置、推送、部署及呼叫函數。

確定映像檔在不洩漏加密密碼的情況下組建、推送、部署、順利呼叫以及記錄預期的輸出。

考量:相依性封裝通常會在隱藏的 Lambda 假設出現的地方,特別是在圖層、原生程式庫、擴充功能和內嵌的 SDK 版本。

使用可重複的傳遞樣式

生產環境移轉應使用由版本控制的傳遞處理作業。

若要使用可重複傳遞樣式,請遵循下列步驟:

  1. 同時儲存功能代碼、組態、測試及基礎架構定義。
  2. 建置並測試啟動多版本功能的使用者自建物件。
  3. 掃描使用者自建物件與其相依性。
  4. 跨環境升級相同測試的使用者自建物件。
  5. 透過基礎架構即程式碼佈建或更新 OCI 資源。
  6. 在部署後執行煙霧和整合測試。
  7. 保留先前的生產構件與組態以進行倒回。

在切實可行的情況下使用現有的 CI/CD 平台。除非 OCI Functions 架構需要工具變更,否則不需要工具變更。

移轉觸發程式與整合

在 OCI 中重新建立所需的呼叫行為。

若要移轉觸發程式和整合,請依照下列步驟進行:

  1. 對於 HTTP 工作負載,比較認證,方法,路徑,標頭,查詢字串,主體綱要,狀態代碼,錯誤主體,有效負載大小,逾時,延遲以及呼叫器重試行為。
  2. 針對物件事件,比較事件綱要,物件描述資料,命名空間,儲存桶和前置碼篩選,建立 / 更新 / 刪除行為,重試行為,重試事件,偶發性,以及防止輸入和輸出路徑之間的迴圈。
  3. 對於佇列和串流,針對批次大小、排序、局部失敗、可見性或重試行為、DLQ 或失敗目的地、中毒訊息、回壓、重複項目、傳輸量和重新執行設計明確的處理。
  4. 對於排程、通知、日誌和整合流程,驗證呼叫類型、延遲、重試計數、失敗路由、扇出行為、篩選和可觀察性。

驗證每個觸發程式都具有記載的 OCI 目標樣式,並針對一般、失敗、重試及重複傳遞案例傳遞測試。

考量:請勿假設 AWS 事件來源對應具有直接 OCI 替代項目。保留必要的行為,而不是 AWS 控制名稱。

一般 Lambda 觸發程式樣式

下列對應是 OCI Functions 移轉的開始模式。

實行之前請先驗證必要的行為:

AWS 樣式 OCI Functions 開始樣式 要驗證的項目
至 Lambda 的 API 閘道 OCI API GatewayOCI Functions 路由、方法、認證、要求和回應格式、有效負載限制、逾時、狀態代碼以及同步錯誤行為
EventBridge 到 Lambda 適用於 OCI 服務事件的 OCI 事件OCI 函數;使用適用的 OCI 事件路由服務來滿足更廣泛的路由需求 事件涵蓋範圍、篩選、綱要、傳遞行為、重試及重新執行需求
SQS 至 Lambda Oracle Cloud Infrastructure QueueOCI Connector HubOCI Functions 批次大小、可見性逾時、一次性傳遞、排序、重複處理、中毒訊息及失敗復原
S3 活動到 Lambda 透過 OCI EventsOCI FunctionsOCI Object Storage 事件 事件綱要、篩選、重複傳遞、物件權限、重試行為以及順流副作用
Lambda 的排定事件 從 OCI 資源排程器到 OCI Functions 排程表示式、時區、輸入有效負載、逾時、重疊執行以及成功或失敗目的地

請勿假設 AWS 和 OCI 服務具有相同的行為。實行之前,請先驗證每個工作負載所需的行為。

保留觸發程式和失敗行為

記錄並測試每個已移轉觸發程式所需的行為。

若要保留觸發程式和失敗行為,請依照下述步驟進行:

  1. 針對每個移轉的觸發程式記錄並測試下列項目:
    • 傳遞是同步還是非同步
    • 重試擁有者、重試間隔以及嘗試次數上限
    • 交付保證和可能的重複事件
    • 訂購需求
    • 冪等行為
    • 批次與部分失敗行為
    • 可視性逾時或認可行為
    • 中毒訊息處理
    • 失敗或失效的目的地
    • 重播與復原程序
  2. 請勿假設類似的 AWS 和 OCI 服務具有相同的傳遞或失敗行為。
  3. 如果可以重複傳遞,請設計功能以安全地處理重複事件。

對於分離的 OCI 函數呼叫,成功和失敗記錄可以傳送至 OCI 佇列、 OCI 串流OCI 通知目的地。此行為專用於分離的呼叫,不應被描述為每個 AWS 死字母佇列模式的通用替代品。

設定 IAM、加密密碼及網路

將程式實際執行行為轉譯為最低權限的 OCI 存取權和核准的網路連線能力。

若要設定 OCI Identity and Access Management (IAM)、加密密碼和網路,請執行下列步驟:

  1. 將每個來源動作對應至 OCI 動作、資源和區間。避免使用廣泛的原則,除非工作負載真正需要這些原則,而且複查者必須核准。
  2. 使用動態群組和資源主體,對 OCI 資源進行程式實際執行存取。測試允許和拒絕的路徑,包括錯誤的區間、錯誤的儲存桶、錯誤的加密密碼,以及遺失的原則案例。
  3. 將加密密碼移至 OCI Vault 或核准的樣式。確認原始程式碼、映像檔、日誌、環境傾印、CI 輸出、堆疊追蹤或錯誤訊息中未顯示任何加密密碼值。
  4. 驗證路由規則、安全規則、服務閘道或 NAT 行為、專用端點、DNS、TLS 信任、外部允許清單及順流連線限制。

驗證允許的服務呼叫成功、拒絕的路徑安全失敗,且必要的網路路徑可在不公開未經授權的路徑的情況下連線。

考量:IAM 轉譯應從觀察的程式實際執行行為開始,而不是從 AWS 原則名稱或廣泛的受管理原則開始。

重建可觀察性與作業

確保生產擁有者能夠偵測、診斷失敗,以及從失敗中復原。

若要重新建立可觀察性與作業,請遵循下列步驟:

  1. 以關聯 ID、要求 ID、觸發程式 ID、物件或訊息 ID、狀態、持續時間、重試計數、處理中錯誤詳細資訊以及順流相依性結果發出日誌。
  2. 確認呼叫計數、持續時間、錯誤率、逾時計數、節流或容量徵兆、DLQ 或失敗計數、佇列時效或存量、取消連附的傳遞結果以及下游失敗的測量結果和警示。
  3. 建立狀況、延遲、錯誤、容量、觸發未交訂單及相依性狀態的儀表板或核准檢視。
  4. 使用呼叫測試、日誌查詢、警示回應、呈報聯絡人、倒回觸發程式、倒回步驟以及預期的復原時間來更新 Runbook。

在流量移動之前,驗證生產操作員可觀察移轉的函數並進行疑難排解。

考量:如果只有功能運作,移轉就不符合生產環境需求。操作員必須能夠偵測並復原失敗的觸發程式、加密密碼、網路路徑或順流相依性。