高可用性兩層堆疊 | 建立 - AMS 進階變更類型參考

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

高可用性兩層堆疊 | 建立

建立由 Auto Scaling 群組、RDS 資料庫執行個體和負載平衡器 (ELB) 組成的堆疊。選擇性地允許使用 CodeDeploy 進行應用程式部署,方法是同時建立名為 ApplicationName 指定值的 CodeDeploy 應用程式和部署群組。您可以設定所有資源參數。

完整分類:部署 | 標準堆疊 | 高可用性雙層堆疊 | 建立

變更類型詳細資訊

變更類型 ID

ct-06mjngx5flwto

目前版本

3.0

預期的執行持續時間

60 分鐘

AWS 核准

必要

客戶核准

非必要

執行模式

自動化

其他資訊

建立高可用性雙層堆疊

變更 type details for creating a high availability two-tier stack with configurable parameters.

運作方式:

  1. 導覽至建立 RFC 頁面:在 AMS 主控台的左側導覽窗格中,按一下 RFCs以開啟 RFCs清單頁面,然後按一下建立 RFC

  2. 在預設瀏覽變更類型檢視中選擇熱門的變更類型 (CT),或在依類別選擇檢視中選擇 CT。

    • 依變更類型瀏覽:您可以在快速建立區域中按一下熱門的 CT,以立即開啟執行 RFC 頁面。請注意,您無法透過快速建立選擇較舊的 CT 版本。

      若要排序 CTs,請使用卡片資料表檢視中的所有變更類型區域。在任一檢視中,選取 CT,然後按一下建立 RFC 以開啟執行 RFC 頁面。如果適用,建立較舊版本選項會顯示在建立 RFC 按鈕旁。

    • 依類別選擇:選取類別、子類別、項目和操作,如果適用,CT 詳細資訊方塊會開啟,其中包含使用較舊版本建立的選項。按一下建立 RFC 以開啟執行 RFC 頁面。

  3. 執行 RFC 頁面上,開啟 CT 名稱區域以查看 CT 詳細資訊方塊。需要主旨 (如果您在瀏覽變更類型檢視中選擇 CT,則會為您填入)。開啟其他組態區域以新增 RFC 的相關資訊。

    執行組態區域中,使用可用的下拉式清單或輸入必要參數的值。若要設定選用的執行參數,請開啟其他組態區域。

  4. 完成後,請按一下執行。如果沒有錯誤,RFC 成功建立的頁面會顯示已提交的 RFC 詳細資訊,以及初始的執行輸出

  5. 開啟執行參數區域以查看您提交的組態。重新整理頁面以更新 RFC 執行狀態。或者,取消 RFC 或使用頁面頂端的選項建立 RFC 的副本。

運作方式:

  1. 使用 範本建立方法 (您建立兩個 JSON 檔案,一個用於 RFC 參數,另一個用於執行參數),並使用兩個檔案做為輸入發出create-rfc命令。此處說明這兩種方法。

  2. 使用傳回的 RFC ID 提交 RFC: aws amscm submit-rfc --rfc-id ID命令。

    監控 RFC: aws amscm get-rfc --rfc-id ID命令。

若要檢查變更類型版本,請使用下列命令:

aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CT_ID
注意

您可以將任何CreateRfc參數與任何 RFC 搭配使用,無論它們是否為變更類型結構描述的一部分。例如,若要在 RFC 狀態變更時取得通知,請將此行新增至請求的 --notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}" RFC 參數部分 (而非執行參數)。如需所有 CreateRfc 參數的清單,請參閱 AMS 變更管理 API 參考

範本建立

  1. 將此變更類型的執行參數 JSON 結構描述輸出到目前資料夾中的檔案;此範例將其命名為 Create2tierStackParams.json.

    aws amscm get-change-type-version --change-type-id "ct-06mjngx5flwto" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > Create2tierStackParams.json
  2. 修改結構描述,視需要取代變數

    { "Description": "HA two tier stack", "Name": "Two-Tier-Stack", "TimeoutInMinutes": 360, "VpcId": "VPC-ID", "AutoScalingGroup": { "AmiId": "AMI-ID", "SubnetIds": [ "Subnet-ID", "Subnet-ID" ] }, "Database": { "DBName": "DB_Name", "DBEngine": "postgres", "EngineVersion": "9.6.3", "LicenseModel": "postgresql-license", "MasterUsername": "masterusername", "SubnetIds": [ "Subnet-ID", "Subnet-ID" ] }, "LoadBalancer": { "SubnetIds": [ "Subnet-ID", "Subnet-ID" ] } }
  3. 將 CreateRfc JSON 範本輸出到目前資料夾中的檔案;範例將其命名為 Create2tierStackRfc.json:

    aws amscm create-rfc --generate-cli-skeleton > Create2tierStackRfc.json
  4. 視需要修改 RFC 範本並儲存。重設排程 RFC 的開始和結束時間,或關閉 ASAP RFC。

    { "ChangeTypeVersion": 3.0", "ChangeTypeId": "ct-06mjngx5flwto", "Title": "HA-2-Tier-RFC", "RequestedStartTime": "2019-04-28T22:45:00Z", "RequestedEndTime": "2019-04-28T22:45:00Z" }
  5. 建立 RFC,指定 Create2tierStackRfc.json 檔案和 Create2tierStackParams.json 執行參數檔案:

    aws amscm create-rfc --cli-input-json file://Create2tierStackRfc.json --execution-parameters file://Create2tierStackParams.json

    您會在回應中收到新 RFC 的 ID,並且可以使用它來提交和監控 RFC。在您提交之前,RFC 會保持在編輯狀態,不會啟動。

注意

這是大量佈建資源,特別是當您新增 UserData 時。負載平衡器 Amazon 資源名稱 (ARN) 可透過 EC2 主控台的Load Balancer頁面找到,方法是使用 RFC 執行輸出中傳回的負載平衡器堆疊 ID 進行搜尋。

執行輸入參數

如需執行輸入參數的詳細資訊,請參閱 變更類型的結構描述 ct-06mjngx5flwto

範例:必要參數

{ "Description": "My stack", "TimeoutInMinutes": 60, "VpcId": "vpc-01234567890abcdef", "Name": "MyStack", "AutoScalingGroup": { "AmiId" : "ami-01234567890abcdef", "SubnetIds": ["subnet-01234567890abcdef", "subnet-01234567891abcdef"] }, "LoadBalancer": { "SubnetIds": ["subnet-01234567890abcdef", "subnet-01234567891abcdef"] }, "Database": { "DBName": "main", "DBEngine": "MySQL", "EngineVersion": "4.5.6", "LicenseModel": "general-public-license", "MasterUsername": "admin", "MasterUserPassword": "adminpass", "SubnetIds": ["subnet-01234567890abcdef", "subnet-01234567891abcdef"] } }

範例:所有參數

{ "Description": "My stack", "VpcId": "vpc-12345678", "TimeoutInMinutes": 60, "Name": "MyStack", "Tags": [ { "Key": "Foo", "Value": "Bar" } ], "AutoScalingGroup": { "AmiId": "ami-12341234", "Cooldown": 120, "DesiredCapacity": 1, "EBSOptimized": false, "HealthCheckGracePeriod": 600, "IAMInstanceProfile": "foo", "InstanceDetailedMonitoring": true, "InstanceRootVolumeIops": 0, "InstanceRootVolumeName": "/dev/xvda", "InstanceRootVolumeSize": 30, "InstanceRootVolumeType": "gp2", "InstanceType": "m3.medium", "MaxInstances": 1, "MinInstances": 1, "ScaleDownPolicyCooldown": 300, "ScaleDownPolicyEvaluationPeriods": 4, "ScaleDownPolicyPeriod": 60, "ScaleDownPolicyScalingAdjustment": -1, "ScaleDownPolicyStatistic": "Average", "ScaleDownPolicyThreshold": 35, "ScaleMetricName": "CPUUtilization", "ScaleUpPolicyCooldown": 60, "ScaleUpPolicyEvaluationPeriods": 2, "ScaleUpPolicyPeriod": 60, "ScaleUpPolicyScalingAdjustment": 2, "ScaleUpPolicyStatistic": "Average", "ScaleUpPolicyThreshold": 75, "SubnetIds": ["subnet-a0b1c2d3", "subnet-e4f5g6h7"], "UserData": ["#!/bin/bash","echo hello"] }, "LoadBalancer": { "SubnetIds": ["subnet-a0b1c2d3", "subnet-a0b2c9d8"], "HealthCheckInterval": 10, "HealthCheckTarget": "HTTP:80/index.html", "HealthCheckTimeout": 10, "Public": false, "AccessCIDRRange": "1.2.3.4/0" }, "Database": { "AllocatedStorage": 100, "BackupRetentionPeriod": 7, "Backups": true, "DBEngine": "postgres", "DBName": "my_db", "EngineVersion": "9.5.2", "InstanceType": "db.m3.medium", "IOPS": 0, "LicenseModel": "postgresql-license", "MasterUsername": "myadminuser", "MasterUserPassword": "!#$%&')*+,-.0:;=>?AZ[\\^_`a{|~", "MultiAZ": false, "Port": 5432, "PreferredBackupWindow": "22:00-23:00", "PreferredMaintenanceWindow": "wed:03:32-wed:04:02", "StorageEncrypted": false, "StorageType": "gp2", "SubnetIds": ["subnet-a0b1c2d3", "subnet-a0b2c9d8"] }, "Application": { "ApplicationName": "MyApplication", "DeploymentConfigName": "CodeDeployDefault.OneAtATime" }, "EnforceIMDSv2": "optional" }