设置 AWS EC2 实例

如果您还没有 AWS 账户,可以按照 https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-awsaccount/ 上的说明创建一个。您还必须创建一个 AWS IAM 用户组。有关说明可在 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_create.html 上找到。您需要一个 AWS IAM 用户,并按照 AWS 的官方文档在 AWS 账户中创建一个 IAM 用户,网址是 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html

我们还需要以下 AWS 资源来完成 EC2 设置:

  • AWS EC2 密钥对

  • IAM 实例配置文件

为什么需要 EC2 实例?它将作为我们的远程服务器。您可以将其视为在云中运行的主机。我们将使用该服务器托管我们的 Docker 容器,以运行和服务我们的应用程序:

image 2023 10 24 16 44 00 947
Figure 1. Figure 10.1 – EC2 instance

正如您从图中看到的,它将几乎充当您本地开发环境的复制品。正如我们在 第 3 章使用 Docker 容器设置开发环境 中所讨论的,这是使用容器的一大好处。

请按照以下步骤创建 EC2 实例:

  1. 登录 AWS 控制台并在 服务 搜索栏中搜索 EC2 以转到 EC2 仪表板。

  2. 在 EC2 仪表板中,单击 启动实例 按钮:

    image 2023 10 24 16 45 37 494
    Figure 2. Figure 10.2 – The Launch instance button

    您将看到 启动实例 向导。

  3. Name 字段中,输入 tddphp-instance1。这个名字标签将非常重要。我们将在本章后面的 CodeDeploy 应用程序中使用此标签:

    image 2023 10 24 16 46 56 007
    Figure 3. Figure 10.3 – Instance name tag
  4. 接下来,在 应用程序和操作系统映像 (Amazon 系统映像) 区域中,选择 Amazon Linux 2 AMI

    image 2023 10 24 16 48 18 552
    Figure 4. Figure 10.4 – Amazon Linux 2 AMI
  5. 接下来,您可以选择 EC2 实例类型。在本例中,您可以选择 t2.micro 实例,因为该类型符合免费层的要求。您也可以选择更强大的实例配置—​这完全取决于您:

    image 2023 10 24 16 49 04 186
    Figure 5. Figure 10.5 – t2.micro instance type
  6. 您将需要一个密钥对才能通过 SSH 连接到该计算机实例。如果您还没有设置,只需单击 “创建新密钥对” 链接即可;将出现一个弹出窗口,供您创建新的密钥对:

    image 2023 10 24 16 49 51 493
    Figure 6. Figure 10.6 – Creating a new key pair
  7. 创建配对密钥后,可以将其分配到 EC2 实例向导中的配对密钥字段。

  8. 接下来,在网络设置部分,允许所有 HTTP 和 HTTPs 流量。这样我们就可以通过浏览器轻松访问网络应用程序:

    image 2023 10 24 16 50 46 636
    Figure 7. Figure 10.7 – Network settings; allow HTTP and HTTPS
  9. 接下来,在 "高级详细信息" 部分,如果还没有 IAM 实例配置文件,可以点击 "创建新的 IAM 配置文件" 链接轻松创建一个:

    image 2023 10 24 16 51 36 563
    Figure 8. Figure 10.8 – Creating a new IAM profile link
  10. 您将被重定向到 IAM 向导。输入要使用的任何 IAM 角色名称;然后,在 "受信任实体类型" 部分选择 "自定义信任策略" 选项:

    image 2023 10 24 16 52 32 964
    Figure 9. Figure 10.9 – Custom trust policy text area
  11. 在文本区域中,使用以下策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "ec2.amazonaws.com",
                        "codedeploy.ap-southeast-2.amazonaws.com"
                    ]
                 },
            "Action": "sts:AssumeRole"
            }
        ]
    }

    由于我在澳大利亚,所以通常使用悉尼 ap-southeast-2 区域。您可以将其替换为您喜欢的任何区域。

  12. 单击 "下一步" 按钮继续。

  13. 在 "添加权限" 部分,搜索以下策略,并勾选策略名称前的复选框:

    • AmazonEC2FullAccess

    • AmazonS3FullAccess

    • AWSCodeDeployFullAccess

  14. 选择这些策略后,单击 “下一步”。

    在创建角色之前,请确保这些策略显示在 IAM 向导审核屏幕中:

    image 2023 10 24 17 08 25 145
    Figure 10. Figure 10.10 – Access policies
  15. 接下来,单击创建角色按钮,然后返回 EC2 实例向导。您现在可以从 "高级详细信息" 部分选择刚刚创建的 IAM 角色:

    image 2023 10 24 17 09 17 352
    Figure 11. Figure 10.11 – Newly created IAM instance profile
  16. 就是这样 – 滚动到页面的最底部,然后单击 “启动实例” 按钮。AWS 需要几分钟时间才能启动您的新 EC2 实例。几分钟后,回到仪表板;您现在应该看到您的 EC2 实例正在运行:

    image 2023 10 24 17 10 08 840
    Figure 12. Figure 10.12 – Amazon Linux 2 instance running

现在我们有了一个正在运行的 Amazon Linux 2 实例;我们将使用该实例来运行我们的容器。在继续进行 CodeDeploy 设置之前,我们需要创建一个 S3 bucket。我们的 Bitbucket 管道和 CodeDeploy 应用程序都将使用这个存储桶:

  1. AWS 控制台中,搜索 S3 并单击 S3 服务项:

    image 2023 10 24 17 11 26 250
    Figure 13. Figure 10.13 – S3 service

    您将被重定向到 Amazon S3 面板。

  2. 点击 "创建水桶" 按钮:

    image 2023 10 24 17 12 17 669
    Figure 14. Figure 10.14 – The Create bucket button
  3. 为桶使用任何您想要的唯一名称,并选择与您的 EC2 实例所使用的相同区域。对我来说,是 ap-southeast-2

    image 2023 10 24 17 13 27 674
    Figure 15. Figure 10.15 – Creating an S3 bucket
  4. 您可以保留所有默认设置不变,然后单击 “创建存储桶” 按钮。

就是这样。我们现在可以继续创建 CodeDeploy 应用程序。CodeDeploy 应用程序将使用我们刚刚创建的 EC2 实例和 S3 存储桶。