CloudFormation 擷取範例:3 層 Web 應用程式 - AMS 進階應用程式開發人員指南

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

CloudFormation 擷取範例:3 層 Web 應用程式

擷取標準 3-Tier Web 應用程式的 CloudFormation 範本。

AWS 雲端 architecture diagram showing VPC with two availability zones, load balancer, and multi-AZ RDS setup.

這包括 Application Load Balancer、Application Load Balancer 目標群組、Auto Scaling 群組、Auto Scaling 群組啟動範本、具有 MySQL 資料庫的 Amazon Relational Database Service (RDS for SQL Server)、 AWS SSM 參數存放區和 AWS Secrets Manager。請預留 30-60 分鐘的時間來演練此範例。

先決條件

  • 使用 Secrets Manager 建立包含使用者名稱和密碼與對應值的 AWS 秘密。您可以參考此包含秘密名稱 的範例 JSON 範本 (zip 檔案)ams-shared/myapp/dev/dbsecrets,並將其取代為您的秘密名稱。如需搭配 AMS 使用 AWS Secrets Manager 的詳細資訊,請參閱 搭配 AMS 資源使用 AWS Secrets Manager

  • 在 AWS SSM 參數存放區 (PS) 中設定必要的參數。在此範例中,私有和公有子網路Subnet-IdVPCId和 會存放在 SSM PS 中的路徑,例如 /app/DemoApp/PublicSubnet1aPrivateSubnet1aPublicSubnet1cPrivateSubnet1cVPCCidr。根據您的需求更新路徑、參數名稱和值。

  • 建立具有 AWS Secrets Manager 和 SSM 參數存放區路徑讀取許可的 IAM Amazon EC2 執行個體角色 (這些範例中建立和使用的 IAM 角色為 customer-ec2_secrets_manager_instance_profile)。如果您建立執行個體描述檔角色等 IAM 標準政策,角色名稱必須以 開頭customer-。若要建立新的 IAM 角色, (您可以將其命名為 或其他customer-ec2_secrets_manager_instance_profile項目) 會使用 AMS 變更類型管理 | 應用程式 | IAM 執行個體描述檔 | 建立 (ct-0ixp4ch2tiu04) CT,並連接所需的政策。您可以在 IAM 主控台中檢閱 AMS IAM 標準政策 customer_secrets_manager_policy和 AWS customer_systemsmanager_parameterstore_policy,以正常使用或做為參考。

擷取標準 3-Tier Web 應用程式的 CloudFormation 範本

  1. 將連接的範例 CloudFormation JSON 範本以 zip 檔案 3-tier-cfn-ingest.zip 形式上傳至 S3 儲存貯體,並產生簽署的 S3 URL 以在 CFN 擷取 RFC 中使用。如需詳細資訊,請參閱預先簽章。當您透過 AMS 主控台提交 RFC 時,CFN 範本也可以複製/貼上至 CFN 擷取 RFC。

  2. 透過 AMS 主控台或 AMS CLI 建立 CloudFormation 擷取 RFC (部署 | 擷取 | 從 CloudFormation 範本堆疊 | 建立 (ct-36cn2avfrrj9v))。CloudFormation 擷取自動化程序會驗證 CloudFormation 範本,以確保範本具有有效的 AMS 支援資源,並遵守安全標準。

    • 使用主控台 - 針對變更類型,選取部署 -> 擷取 -> 從 CloudFormation 範本堆疊 -> 建立,然後新增下列參數做為範例 (請注意,MultiAZDatabase 的預設值為 false):

      CloudFormationTemplateS3Endpoint: "https://s3-ap-southeast-2.amazonaws.com/amzn-s3-demo-bucket/3-tier-cfn-ingest.json?AWSAccessKeyId=#{S3_ACCESS_KEY_ID}&Expires=#{EXPIRE_DATE}&Signature=#{SIGNATURE}" VpcId: "VPC_ID" TimeoutInMinutes: 120 IAMEC2InstanceProfile: "customer_ec2_secrets_manager_instance_profile" MultiAZDatabase: "true" WebServerCapacity: "2"
    • 使用 AWS CLI - 如需使用 RFCs 的詳細資訊 AWS CLI,請參閱建立 RFCs。例如,執行下列命令:

      aws --profile=saml amscm create-rfc --change-type-id ct-36cn2avfrrj9v --change-type-version "2.0" --title "TEST_CFN_INGEST" --execution-parameters "{\"CloudFormationTemplateS3Endpoint\":\"https://s3-ap-southeast-2.amazonaws.com/my-bucket/3-tier-cfn-ingest.json?AWSAccessKeyId=#{S3_ACCESS_KEY_ID}&Expires=#{EXPIRE_DATE}&Signature=#{SIGNATURE}\",\"TimeoutInMinutes\":120,\"Description\":\"TEST\",\”VpcId”\”:\”VPC_ID\”,\"Name\":\"MY_TEST\",\"Tags\":[{\"Key\":\"env\",\"Value\":\"test\"}],\"Parameters\":[{\"Name\":\"IAMEC2InstanceProfile\",\"Value\":\"customer_ec2_secrets_manager_instance_profile\"},{\"Name\":\"MultiAZDatabase\",\"Value\":\"true\"},{\"Name\":\"VpcId\",\"Value\":\"VPC_ID\"},{\"Name\":\"WebServerCapacity\",\"Value\":\"2\"}]}" --endpoint-url https://amscm.us-east-1.amazonaws.com/operational/ --no-verify-ssl

    在 AWS CloudFormation RFC 執行輸出中尋找 Application Load Balancer URL 以存取網站。如需存取 資源的資訊,請參閱存取執行個體