使用 管理 Amazon GameLift 託管資源 AWS CloudFormation - Amazon GameLift

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

使用 管理 Amazon GameLift 託管資源 AWS CloudFormation

您可以使用 AWS CloudFormation 來管理您的 Amazon GameLift 資源。在 中 AWS CloudFormation,您可以建立範本,建立每個資源的模型,然後使用範本來建立資源。若要更新資源,您可以變更範本,並使用 AWS CloudFormation 實作更新。您可以將資源組織成邏輯群組,稱為堆疊和堆疊集。

使用 AWS CloudFormation 來維護 Amazon GameLift 託管資源,可讓您更有效率地管理 AWS 資源集。您可以使用版本控制來追蹤一段時間內的範本變更,並協調多個專案團隊成員所做的更新。您也可以重複使用範本。例如,跨多個區域部署遊戲時,您可以使用相同的範本,在每個區域建立相同的資源。您也可以使用這些範本,在另一個分割區中部署相同的資源集。

如需 的詳細資訊 AWS CloudFormation,請參閱 AWS CloudFormation 使用者指南 。若要檢視 Amazon GameLift 資源的範本資訊,請參閱 Amazon GameLift 資源類型參考

最佳實務

如需使用 的詳細指引 AWS CloudFormation,請參閱 AWS CloudFormation 使用者指南 中的AWS CloudFormation 最佳實務。此外,這些最佳實務與 Amazon 具有特殊關聯性 GameLift。

  • 透過 持續管理您的資源 AWS CloudFormation。如果您在資源之外變更 AWS CloudFormation 資源,將會與資源範本不同步。

  • 使用 AWS CloudFormation 堆疊和堆疊集來有效管理多個資源。

    • 使用堆疊來管理連線資源群組。例如,包含建置的堆疊、參考建置的機群,以及參考機群的別名。如果您更新範本以取代建置, 會 AWS CloudFormation 取代連線至建置的機群。 AWS CloudFormation 然後更新現有的別名,以指向新的機群。如需詳細資訊,請參閱 AWS CloudFormation 使用者指南 中的使用堆疊

    • 如果您要跨多個區域或 AWS 帳戶部署相同的 AWS CloudFormation 堆疊,請使用堆疊集。如需詳細資訊,請參閱 AWS CloudFormation 使用者指南 中的使用堆疊集

  • 如果您使用的是 Spot 執行個體,請包含隨需機群做為備份。我們建議您在每個區域中設定具有兩個機群的範本、一個具有 Spot 執行個體的機群,以及一個具有隨需執行個體的機群。

  • 當您管理多個位置的資源時,請將您的位置特定資源和全域資源分組為不同的堆疊。

  • 將全域資源放在靠近使用它的 服務。佇列和配對組態等資源往往會收到來自特定來源的大量請求。透過將資源放在這些請求的來源附近,您可以將請求的傳輸時間降至最低,並可以改善整體效能。

  • 將您的配對組態放置在與其使用之遊戲工作階段佇列的相同區域。

  • 為堆疊中的每個機群建立不同別名。

使用 AWS CloudFormation 堆疊

我們建議在設定 Amazon GameLift 資源的 AWS CloudFormation 堆疊時,使用下列結構。您的最佳堆疊結構取決於您要將遊戲部署在一個位置或多個位置。

單一位置的堆疊

若要在單一位置管理 Amazon GameLift 資源,我們建議採用兩層結構:

  • 支援堆疊 – 此堆疊包含 Amazon GameLift 資源依賴的資源。至少,此堆疊應該包含 S3 儲存貯體,其中儲存自訂遊戲伺服器或 Realtime 指令碼檔案。堆疊還應包含一個IAM角色,在建立 Amazon GameLift 建置或指令碼資源時,授予 Amazon 從 S3 儲存貯體擷取檔案的 GameLift 許可。此堆疊也可能包含遊戲中使用的其他 AWS 資源,例如 DynamoDB 資料表、Amazon Redshift 叢集和 Lambda 函數。

  • Amazon GameLift 堆疊 – 此堆疊包含您的所有 Amazon GameLift 資源,包括建置或指令碼、一組機群、別名和遊戲工作階段佇列。 會使用存放在 S3 儲存貯體位置的檔案 AWS CloudFormation 建立建置或指令碼資源,並將建置或指令碼部署至一或多個機群資源。每個機群都應該有一個對應別名。遊戲工作階段佇列會參考部分或全部機群別名。如果您使用 FlexMatch 進行比對,此堆疊也包含比對組態和規則集。

下圖說明在單一 AWS 區域中部署資源的兩層結構。

Amazon GameLift 資源和支援服務 AWS 的 2 AWS CloudFormation 個堆疊圖表。

多個區域的堆疊

在多個區域中部署遊戲時,請記住資源如何跨區域互動。有些資源,例如 Amazon GameLift 機群,只能參考相同區域中的其他資源。其他資源,例如 Amazon GameLift 佇列,與區域無關。若要管理多個區域中的 Amazon GameLift 資源,我們建議採用下列結構。

  • 區域支援堆疊 – 這些堆疊包含 Amazon GameLift 資源依賴的資源。此堆疊必須包括 S3 儲存貯體,其中儲存自訂遊戲伺服器或 Realtime 指令碼檔案。它也可能包含遊戲的其他 AWS 資源,例如 DynamoDB 資料表、Amazon Redshift 叢集和 Lambda 函數。這些資源中有許多是區域特定的,因此您必須在每個區域中建立這些資源。Amazon GameLift 也需要允許存取這些支援資源IAM的角色。由於IAM角色與區域無關,因此您只需要一個角色資源,放置在任何區域中,並在所有其他支援堆疊中參考。

  • 區域 Amazon GameLift 堆疊 – 此堆疊包含您遊戲部署的每個區域中必須存在的 Amazon GameLift 資源,包括建置或指令碼、一組機群和別名。 AWS CloudFormation 會建立具有 S3 儲存貯體位置檔案的建置或指令碼資源,並將建置或指令碼部署至一或多個機群資源。每個機群都應該有一個對應別名。遊戲工作階段佇列會參考部分或全部機群別名。您可以維護一個範本,來描述這種類型的堆疊,並使用它在每個區域建立相同的資源集。

  • 全域 Amazon GameLift 堆疊 – 此堆疊包含您的遊戲工作階段佇列和配對資源。這些資源可以位於任何區域,且通常放置在相同區域中。佇列可以參考位於任何區域中的機群或別名。若要在不同的區域中放置其他佇列,請建立額外的全域堆疊。

下圖說明在數個 AWS 區域中部署資源的多堆疊結構。第一個圖表顯示單一遊戲工作階段佇列的結構。第二個圖表顯示具有多個佇列的結構。

包含特定區域和全域資源 AWS CloudFormation 的資源堆疊圖表。
圖表顯示區域 AWS CloudFormation 堆疊如何共用全域資源,例如佇列。

更新組建

Amazon GameLift 建置是不可變的,建置與機群之間的關係也是如此。因此,當您更新託管資源,以使用一組新的遊戲建置檔案時,必須發生下列情況:

  • 使用一組新檔案來建立新建置 (取代)。

  • 建立一組新的機群來部署新的遊戲建置 (取代)。

  • 重新導向別名以指向新的機群 (更新而不中斷)。

如需詳細資訊,請參閱 AWS CloudFormation 使用者指南 中的更新堆疊資源的行為

自動部署建置更新

更新包含相關建置、機群和別名資源的堆疊時,預設 AWS CloudFormation 行為是依序自動執行這些步驟。您可以先將新的建置檔案上傳到新的 S3 位置,以觸發此更新。然後,您修改 AWS CloudFormation 建置範本以指向新的 S3 位置。當您使用新的 S3 位置更新堆疊時,這會觸發以下 AWS CloudFormation 順序:

  1. 從 S3 擷取新檔案、驗證檔案,並建立新的 Amazon GameLift 建置。

  2. 更新機群範本中的建置參考,這會觸發新的機群建立。

  3. 在新的機群作用中之後,更新別名中的機群參考,這會觸發別名更新,以新機群做為目標。

  4. 刪除舊機群。

  5. 刪除舊建置。

如果您的遊戲工作階段佇列使用機群別名,玩家流量會在別名更新後立即自動切換至新機群。隨著遊戲工作階段結束,舊機群會逐漸耗盡玩家。自動調整規模可處理在玩家流量變動時,新增和移除每組機群中執行個體的任務。或者,您可以指定初始所需的執行個體計數,以快速提升交換,並在稍後啟用自動調整規模。

您也可以 AWS CloudFormation 保留資源,而不是將其刪除。如需詳細資訊,請參閱 參考 RetainResources中的 。 AWS CloudFormation API

手動部署建置更新

如果想要更好地控制新機群何時上線,供玩家使用,您有一些選項可以選擇。您可以選擇使用 Amazon GameLift 主控台或 手動管理別名CLI。或者,您可以將第二組建置和機群定義新增至範本,而不是更新您的建置範本以取代建置和機群。當您更新範本時, 會 AWS CloudFormation 建立第二個建置資源和對應的機群。由於未取代現有的資源,因此不會刪除它們,而且別名仍會指向原始機群。

使用這種方法的主要優點是它為您提供了靈活性。您可以為新版建置建立個別資源、測試新資源,以及控制新機群何時上線,供玩家使用。潛在的缺點是,短時間內它需要在每個區域有兩倍多的資源。

下圖說明此程序。

圖表顯示如何使用 AWS CloudFormation 堆疊來更新遊戲伺服器建置。

復原的運作方式

執行資源更新時,若有任何步驟未順利完成,則 AWS CloudFormation 會自動啟動轉返。此程序會依序反轉每個步驟,同時刪除新建立的資源。

如果您需要手動觸發轉返,請將建置範本的 S3 位置索引鍵變回原始位置,並更新您的堆疊。建立新的 Amazon GameLift 建置和機群,並在機群啟用後,別名會切換到新的機群。如果您是個別管理別名,則需要切換它們以指向新機群。

如需如何處理失敗或卡住的復原的詳細資訊,請參閱 AWS CloudFormation 使用者指南 中的繼續復原更新