

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建基础架构
<a name="gui-ex-create-ha-rfc"></a>

此过程使用高可用性双层堆栈 CT，然后使用 Create S3 存储 CT。

在开始之前收集以下数据可以加快部署速度。

必需的数据有堆栈：
+ **AutoScalingGroup**:
  + **UserData**：本教程中提供了此值。它包括为其设置资源 CodeDeploy 和启动 CodeDeploy 代理的命令。
  + **AMI-ID**：此值决定了您的 Auto Scaling 组 (ASG) 将启动的 EC2 实例的操作系统。在您的账户中选择一个以 “customer-” 开头且具有所需操作系统的 AMI。 IDs 在 AMS 控制台 VPCs -> VPCs 详情页面中查找 AMI。本演练适用于 ASGs 配置为使用亚马逊 Linux 或 RHEL AMI。
+ **数据库**：
  + 尽管示例中显示的值已经过测试，但这些参数**EngineVersion**、、和**LicenseModel**应根据您的情况进行设置。**DBEngine**本教程分别使用以下值：*MySQL*、*8.0.16*、*general-public-license*。
  + 部署应用程序包时需要**MasterUsername**这些参数**DBName**MasterUserPassword****、、和。本教程分别使用以下值：*wordpressDB*、*p4ssw0rd*、*admin*。请注意， DBName 只能包含字母数字字符。
  + 当您输入 RDS 数据库时，它将以明文形式显示，因此请尽快登录数据库并更改密码以确保您的安全。**MasterUsername**
  + 对于 **RDSSubnetID**，请使用两个私有子网。每次输入一个，然后按 “Enter”。 IDs 使用 AMS SKMS API 参考查找子网，请参阅 AWS Artifact 控制台中的**报告**选项卡。操作 (CLI: list-subnet-summaries) 或 AMS 控制台-> VPCs VPC 详细信息页面。
+ **LoadBalancer**:
  + **将此参数 Public 设置为 **true**，因为本教程使用公有 ELB 子网。**
  + **ELBSubnetID**：使用两个公有子网。每次输入一个，然后按 “Enter”。 IDs 使用 AMS SKMS API 参考查找子网，请参阅 AWS Artifact 控制台中的**报告**选项卡。操作 (CLI: list-subnet-summaries) 或 AMS 控制台-> VPCs VPC 详细信息页面。
+ **应用程序**：该**ApplicationName**值设置 CodeDeploy 应用程序名称和 CodeDeploy 部署组名称。你可以用它来部署你的应用程序。它在账户中必须是唯一的。要查看您的账户中的 CodeDeploy 姓名，请访问 CodeDeploy 控制台。该示例使用了，*WordPress*但是，如果您要使用该值，请确保该值尚未被使用。

1. 启动高可用性堆栈。

   1. 在 “**创建 RFC**” 页面上，从列表中选择类别 “**部署**”、“**标准堆栈**” 子类别、“**高可用性双层堆栈**” 和 “**创建**” 操作。

   1. 重要：选择 “**高级**”，然后如图所示设置值。

      您只需要为已加星标 (\$1) 的选项输入值，示例中显示了测试值；您可以将非必填的空选项留空。

   1. 对于 **RFC 描述部分：**

      ```
      Subject: WP-HA-2-Tier-RFC
      ```

   1. 在 “**资源信息**” 部分，为 “**数据库**” **AutoScalingGroup**、“**应用程序**” 和 “**标签**” 设置参数。**LoadBalancer**

      此外，“AppName” 标签密钥的目的是让您可以轻松地在 EC2 控制台中搜索 ASG 实例；您可以将此标签密钥称为 “名称” 或任何其他您想要的密钥名称。请注意，您最多可以添加 50 个标签。

      ```
      UserData:
          #!/bin/bash
          REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//')
          yum -y install ruby httpd
          chkconfig httpd on
          service httpd start 
          touch /var/www/html/status
          cd /tmp
          curl -O https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install
          chmod +x ./install
          ./install auto
          chkconfig codedeploy-agent on
          service codedeploy-agent start           
      AmiId:               AMI-ID
      Description:         WP-HA-2-Tier-Stack
      
      Database:
          LicenseModel:    general-public-license (USE RADIO BUTTON)
          EngineVersion:   8.0.16
          DBEngine:        MySQL
          RDSSubnetIds:    PRIVATE_AZ1 PRIVATE_AZ2 (ENTER ONE AT A TIME PRESSING "ENTER" AFTER EACH)
          MasterUserPassword:  p4ssw0rd
          MasterUsername:      admin
          DBName:              wordpressDB 
      
      LoadBalancer:
          Public:              true (USE RADIO BUTTON)
          ELBSubnetIds:        PUBLIC_AZ1 PUBLIC_AZ2
      
      Application:
          ApplicationName:     WordPress
      
      Tags:
          Name:                WP-Rhel-Stack
      ```

   1. 完成后单击 “**提交**”。

1. 登录到您创建的数据库并更改密码。

1. 启动 S3 存储桶堆栈。

   在开始之前收集以下数据可以加快部署速度。

   必需的数据 S3 存储桶：
   + **VPC-ID**：此值决定您的 S3 存储桶将位于何处。 IDs 使用有关 AMS SKMS API 参考查找 VPC，请参阅 AWS Artifact 控制台中的**报告**选项卡。操作 (CLI: list-vpc-summaries) 或 AMS 控制台 VPCs 页面中。
   + **BucketName**：此值设置 S3 存储桶名称，您可以使用它来上传您的应用程序包。它在账户所在区域内必须是唯一的，并且不能包含大写字母。不要求将您的账户 ID 作为其中的 BucketName 一部分，但可以更轻松地在以后识别存储桶。要查看账户中存在哪些 S3 存储桶名称，请访问您的账户的 Amazon S3 控制台。

   1. 在 “**创建 RFC**” 页面上，从 RFC CT 选择列表中选择**部署**类别、子类别 “**高级堆栈组件**”、“项目 **S3 存储**” 和 “**创建**” 操作。

   1. 保留默认的 “**基本**” 选项，并如图所示设置值。

      ```
      Subject:              S3-Bucket-WP-HA-RFC    
      Description:          S3BucketForWordPressBundles
      BucketName:           ACCOUNT_ID-BUCKET_NAME 
      AccessControl:        Private      
      VpcId:                VPC_ID
      Name:                 S3-Bucket-WP-HA-Stack
      TimeoutInMinutes:     60
      ```

   1. 完成后单击 “**提交**”。使用此更改类型部署的存储桶允许对整个账户进行完全 read/write 访问权限。