本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 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生產環境中部署應用程式:
-
使用 IAM服務建立IAM角色。您會將政策連接到此角色,授予 DynamoDB 動作的許可,使其可存取
Games
資料表。 -
綁 Tic-Tac-Toe定應用程式程式碼和組態檔案,並建立
.zip
檔案。您可以使用此.zip
檔案將 Tic-Tac-Toe應用程式程式碼提供給 Elastic Beanstalk,以放在伺服器上。如需建立套件的詳細資訊,請參閱《AWS Elastic Beanstalk 開發人員指南》中的建立應用程式來源套件。在組態檔案 (
beanstalk.config
) 中,您要提供 AWS 區域和端點的資訊。應用程式 Tic-Tac-Toe會使用此資訊來決定要與哪個 DynamoDB 區域通話。 -
設定 Elastic Beanstalk 環境。Elastic Beanstalk 會啟動 Amazon EC2執行個體,並在其上部署應用程式 Tic-Tac-Toe套件。Elastic Beanstalk 環境就緒後,您要新增
CONFIG_FILE
環境變數,來提供組態檔案名稱。 -
建立 DynamoDB 資料表。使用 Amazon DynamoDB 服務,您可以在 上建立
Games
資料表 AWS,而不是在電腦本機建立資料表。請記得,此資料表具有由字串類型之GameId
分割區索引鍵組成的簡易主索引鍵。 -
在生產環境中測試遊戲。
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 資料表,並使用指定端點發出後續的資料表操作請求。
-
切換至您下載 Tic-Tac-Toe應用程式的資料夾。
-
在應用程式的根資料夾中,使用下列內容建立名為
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
新增到組態檔案,可以告知所有伺服器使用此加密金鑰。 -
壓縮應用程式根資料夾的內容 (其中包含
beanstalk.config
檔案),例如TicTacToe.zip
。 -
將
.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。
-
輸入下列自訂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,請參閱 開發人員指南中的立即建立啟動URL。 AWS Elastic Beanstalk 對於 URL,請注意下列事項:
-
您必須提供 AWS 區域名稱 (與您在組態檔案中提供的名稱相同)、Amazon S3 儲存貯體名稱和物件名稱。
-
在測試中, 會URL請求SingleInstance環境類型,以及
t1.micro
作為執行個體類型。 -
應用程式名稱必須是唯一的。因此,在上述 中URL,我們建議您將名稱放在 之前
applicationName
。
執行此操作會開啟 Elastic Beanstalk 主控台。在某些案例中,您可能需要登入。
-
-
在 Elastic Beanstalk 主控台中,選擇 Review and Launch (檢閱和啟動),然後選擇 Launch (啟動)。
-
請注意 URL以供未來參考。這會URL開啟您的 Tic-Tac-Toe應用程式首頁。
-
設定 Tic-Tac-Toe應用程式,使其知道組態檔案的位置。
Elastic Beanstalk 建立應用程式後,請選擇 Configuration (組態)。
-
選擇 Software Configuration (軟體組態) 旁邊的齒輪圖示,如下列螢幕擷取畫面所示。
-
在 Environment Properties (環境屬性) 區段的結尾,輸入
CONFIG_FILE
及其值beanstalk.config
,然後選擇 Save (儲存)。完成環境更新需要幾分鐘的時間。
更新完成後,您便可以玩遊戲。
-
-
在瀏覽器中,輸入URL您在上一個步驟中複製的 ,如下列範例所示。
http://
<pen-name>
.elasticbeanstalk.com執行此作業會開啟應用程式首頁。
-
以 testuser1 身分登入,然後選擇CREATE開始新的 tic-tac-toe遊戲。
-
在 Choose an Opponent (選擇對手) 方塊中輸入
testuser2
。 -
開啟另一個瀏覽器視窗。
確認您已清除您瀏覽器視窗中的所有 Cookie,以免使用同一個使用者登入。
-
輸入相同的 URL以開啟應用程式首頁,如下列範例所示。
http://
<env-name>
.elasticbeanstalk.com -
以 testuser2 登入。
-
針對待定邀請清單中 testuser1 發送的邀請,選擇 accept (接受)。
-
現在遊戲頁面便會出現。
testuser1 和 testuser2 都可玩遊戲。每移動一步,應用程式就會將該移動儲存在
Games
資料表中的對應項目裡。