步驟 3:使用 DynamoDB 服務在生產環境中部署 - Amazon DynamoDB

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

步驟 3:使用 DynamoDB 服務在生產環境中部署

在上述各節中 Tic-Tac-Toe,您使用 DynamoDB local 在本機電腦上部署和測試應用程式。現在,您會在生產環境中部署應用程式,如下所示:

  • 使用 部署應用程式 AWS Elastic Beanstalk,這是一種 easy-to-use用於部署和擴展 Web 應用程式和服務的服務。如需詳細資訊,請參閱將燒瓶應用程式部署至 AWS Elastic Beanstalk

    Elastic Beanstalk 會啟動一或多個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,您透過 Elastic Beanstalk 設定這些執行個體,應用程式 Tic-Tac-Toe將在其中執行。

  • 使用 Amazon DynamoDB 服務,建立位於 AWS 上而非您電腦本機上的 Games 資料表。

此外,您也必須設定許可。您建立的任何 AWS 資源,例如 DynamoDB 中的Games資料表,預設都是私有的。只有AWS建立Games資料表的資源擁有者,才能存取此資料表。因此,您的 Tic-Tac-Toe應用程式預設無法更新Games資料表。

若要授予必要的許可,您可以建立 AWS Identity and Access Management (IAM) 角色,並授予此角色存取Games資料表的許可。您的 Amazon EC2執行個體會先擔任此角色。作為回應, AWS 會傳回暫時安全憑證,Amazon EC2執行個體可用來代表 Tic-Tac-Toe應用程式更新Games資料表。當您設定 Elastic Beanstalk 應用程式時,您可以指定 Amazon EC2執行個體或執行個體可以擔任IAM的角色。如需IAM角色的詳細資訊,請參閱 Amazon 使用者指南中的 IAM amazon 角色EC2 EC2

注意

為 Tic-Tac-Toe應用程式建立 Amazon EC2執行個體之前,您必須先決定要 Elastic Beanstalk 建立執行個體 AWS 的區域。在您建立 Elastic Beanstalk 應用程式後,您要在組態檔案中提供同一個區域名稱和端點。應用程式 Tic-Tac-Toe使用此檔案中的資訊來建立Games資料表,並在特定 AWS 區域中傳送後續請求。DynamoDB Games資料表和 Elastic Beanstalk 啟動的 Amazon EC2執行個體都必須位於相同的區域中。如需可用區域清單,請參閱 Amazon Web Services 一般參考 中的 Amazon DynamoDB

總而言之,您可以執行下列動作,在 Tic-Tac-Toe生產環境中部署應用程式:

  1. 使用 IAM服務建立IAM角色。您會將政策連接到此角色,授予 DynamoDB 動作的許可,使其可存取 Games 資料表。

  2. 綁 Tic-Tac-Toe定應用程式程式碼和組態檔案,並建立.zip檔案。您可以使用此.zip檔案將 Tic-Tac-Toe應用程式程式碼提供給 Elastic Beanstalk,以放在伺服器上。如需建立套件的詳細資訊,請參閱《AWS Elastic Beanstalk 開發人員指南》中的建立應用程式來源套件

    在組態檔案 (beanstalk.config) 中,您要提供 AWS 區域和端點的資訊。應用程式 Tic-Tac-Toe會使用此資訊來決定要與哪個 DynamoDB 區域通話。

  3. 設定 Elastic Beanstalk 環境。Elastic Beanstalk 會啟動 Amazon EC2執行個體,並在其上部署應用程式 Tic-Tac-Toe套件。Elastic Beanstalk 環境就緒後,您要新增 CONFIG_FILE 環境變數,來提供組態檔案名稱。

  4. 建立 DynamoDB 資料表。使用 Amazon DynamoDB 服務,您可以在 上建立Games資料表 AWS,而不是在電腦本機建立資料表。請記得,此資料表具有由字串類型之 GameId 分割區索引鍵組成的簡易主索引鍵。

  5. 在生產環境中測試遊戲。

3.1:建立 Amazon IAM的角色 EC2

建立 Amazon EC2 類型IAM的角色可讓執行應用程式的 Tic-Tac-Toe Amazon EC2執行個體擔任正確的角色,並提出存取Games資料表的應用程式請求。當您建立角色時,請選擇 Custom Policy (自訂政策) 選項,並將下列政策複製並貼上。

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "dynamodb:ListTables" ], "Effect":"Allow", "Resource":"*" }, { "Action":[ "dynamodb:*" ], "Effect":"Allow", "Resource":[ "arn:aws:dynamodb:us-west-2:922852403271:table/Games", "arn:aws:dynamodb:us-west-2:922852403271:table/Games/index/*" ] } ] }

如需進一步指示,請參閱 使用者指南中的為 AWS 服務 (AWS Management Console) 建立角色IAM

3.2:在 Amazon DynamoDB 中建立遊戲資料表

DynamoDB 中的 Games 資料表會存放遊戲資料。若沒有該資料表,應用程式會為您建立資料表。在此案例中,我們會讓應用程式建立 Games 資料表。

3.3:綁定和部署 tic-tac-toe應用程式程式碼

如果您遵循此範例的步驟,則表示您已下載 Tic-Tac-Toe應用程式。若沒有,請下載應用程式,並將所有檔案解壓縮到您本機電腦上的資料夾。如需指示,請參閱 步驟 1:在本機上部署及測試

當您解壓縮所有檔案後,您會有一個 code 資料夾。若要將此資料夾傳遞給 Elastic Beanstalk,您要將此資料夾的內容組合成 .zip 檔案。首先,請在該資料夾新增組態檔案。您的應用程式會使用區域和端點的資訊在指定區域中建立 DynamoDB 資料表,並使用指定端點發出後續的資料表操作請求。

  1. 切換至您下載 Tic-Tac-Toe應用程式的資料夾。

  2. 在應用程式的根資料夾中,使用下列內容建立名為 beanstalk.config 的文字檔案。

    [dynamodb] region=<AWS region> endpoint=<DynamoDB endpoint>

    例如,您可以使用下列內容。

    [dynamodb] region=us-west-2 endpoint=dynamodb.us-west-2.amazonaws.com

    如需可用區域清單,請參閱《Amazon Web Services 一般參考》中的 Amazon DynamoDB

    重要

    組態檔案中指定的區域是應用程式在 Tic-Tac-Toe DynamoDB 中建立Games資料表的位置。您必須在同一個區域中建立下一節討論的 Elastic Beanstalk 應用程式。

    注意

    當您建立 Elastic Beanstalk 應用程式時,您要請求啟動您可選擇類型的環境。若要測試 Tic-Tac-Toe範例應用程式,您可以選擇單一執行個體環境類型、略過下列項目,然後前往下一個步驟。

    但是,Load balancing, autoscaling (負載平衡、自動調整規模) 環境類型可提供具高可用性且具可擴展性的環境,您應在建立和部署其他應用程式時加以考慮。如果您選擇此環境類型,您還需要產生 UUID 並將其新增至組態檔案,如下所示。

    [dynamodb] region=us-west-2 endpoint=dynamodb.us-west-2.amazonaws.com [flask] secret_key= 284e784d-1a25-4a19-92bf-8eeb7a9example

    在用戶端與伺服器端的通訊中,當伺服器傳送回應時,基於安全性考量,伺服器會傳送簽署過的 Cookie,讓用戶端在下次請求時傳回伺服器。當只有一個伺服器時,伺服器可在啟動時於本機產生加密金鑰。當有多個伺服器時,他們都必須知道同一個加密金鑰,否則無法讀取對等伺服器設定的 Cookie。將 secret_key 新增到組態檔案,可以告知所有伺服器使用此加密金鑰。

  3. 壓縮應用程式根資料夾的內容 (其中包含 beanstalk.config 檔案),例如 TicTacToe.zip

  4. .zip 檔案檔案上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。在下一節中,您會將此 .zip 檔案提供給 Elastic Beanstalk,以上傳到伺服器。

    如需如何上傳檔案至 Amazon S3 儲存貯體的說明,請參閱《Amazon Simple Storage Service 使用者指南》中的建立儲存貯體新增物件至儲存貯體

3.4:設定 AWS Elastic Beanstalk 環境

在此步驟中,您會建立 Elastic Beanstalk 應用程式,其為包含環境的元件集合。在此範例中,您可以啟動一個 Amazon EC2執行個體來部署和執行應用程式 Tic-Tac-Toe。

  1. 輸入下列自訂URL來設定 Elastic Beanstalk 主控台以設定環境。

    https://console.aws.amazon.com/elasticbeanstalk/?region=<AWS-Region>#/newApplication ?applicationName=TicTacToeyour-name &solutionStackName=Python &sourceBundleUrl=https://s3.amazonaws.com/<bucket-name>/TicTacToe.zip &environmentType=SingleInstance &instanceType=t1.micro

    如需自訂 的詳細資訊URLs,請參閱 開發人員指南中的立即建立啟動URLAWS Elastic Beanstalk 對於 URL,請注意下列事項:

    • 您必須提供 AWS 區域名稱 (與您在組態檔案中提供的名稱相同)、Amazon S3 儲存貯體名稱和物件名稱。

    • 在測試中, 會URL請求SingleInstance環境類型,以及 t1.micro作為執行個體類型。

    • 應用程式名稱必須是唯一的。因此,在上述 中URL,我們建議您將名稱放在 之前applicationName

    執行此操作會開啟 Elastic Beanstalk 主控台。在某些案例中,您可能需要登入。

  2. 在 Elastic Beanstalk 主控台中,選擇 Review and Launch (檢閱和啟動),然後選擇 Launch (啟動)。

  3. 請注意 URL以供未來參考。這會URL開啟您的 Tic-Tac-Toe應用程式首頁。

    顯示首頁上具有環境正在建立訊息的應用程式螢幕擷取畫面。
  4. 設定 Tic-Tac-Toe應用程式,使其知道組態檔案的位置。

    Elastic Beanstalk 建立應用程式後,請選擇 Configuration (組態)。

    1. 選擇 Software Configuration (軟體組態) 旁邊的齒輪圖示,如下列螢幕擷取畫面所示。

      Tic-tac-toe 應用程式螢幕擷取畫面,顯示軟體組態旁的齒輪圖示。
    2. Environment Properties (環境屬性) 區段的結尾,輸入 CONFIG_FILE 及其值 beanstalk.config,然後選擇 Save (儲存)。

      完成環境更新需要幾分鐘的時間。

      顯示環境屬性區段的應用程式螢幕擷取畫面。

    更新完成後,您便可以玩遊戲。

  5. 在瀏覽器中,輸入URL您在上一個步驟中複製的 ,如下列範例所示。

    http://<pen-name>.elasticbeanstalk.com

    執行此作業會開啟應用程式首頁。

    顯示建立按鈕、邀請、進行中遊戲和最近歷程記錄的應用程式首頁螢幕擷取畫面。
  6. 以 testuser1 身分登入,然後選擇CREATE開始新的 tic-tac-toe遊戲。

  7. Choose an Opponent (選擇對手) 方塊中輸入 testuser2

    顯示選擇對手方塊的應用程式螢幕擷取畫面。
  8. 開啟另一個瀏覽器視窗。

    確認您已清除您瀏覽器視窗中的所有 Cookie,以免使用同一個使用者登入。

  9. 輸入相同的 URL以開啟應用程式首頁,如下列範例所示。

    http://<env-name>.elasticbeanstalk.com
  10. 以 testuser2 登入。

  11. 針對待定邀請清單中 testuser1 發送的邀請,選擇 accept (接受)。

    邀請清單有 testuser1 邀請的應用程式螢幕擷取畫面。
  12. 現在遊戲頁面便會出現。

    應用程式螢幕擷取畫面顯示空 tic-tac-toe網格。

    testuser1 和 testuser2 都可玩遊戲。每移動一步,應用程式就會將該移動儲存在 Games 資料表中的對應項目裡。