AWS CLI入门 - AWS Proton

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

AWS CLI入门

要开始通过 AWS CLI 使用 AWS Proton,请按照本教程进行操作。本教程说明了一个基于 AWS Fargate 的面向公众的负载均衡 AWS Proton 服务。本教程还预置了一个 CI/CD 管道,用于部署一个具有显示的图像的静态网站。

在开始之前,请确保您正确进行设置。有关详细信息,请参阅 先决条件

步骤 1:注册环境模板

在该步骤中,您作为管理员注册一个示例环境模板,其中包含 Amazon Elastic Container Service (Amazon ECS) 集群以及具有两个公有/私有子网的 Amazon Virtual Private Cloud (Amazon VPC)。

注册环境模板
  1. AWS Proton 示例 CloudFormation 模板存储库复制到您的 GitHub 账户或组织中。该存储库包含我们在本教程中使用的环境和服务模板。

    然后,在 AWS Proton 中注册复制的存储库。有关更多信息,请参阅创建存储库的链接

  2. 创建一个环境模板。

    环境模板资源跟踪环境模板版本。

    $ aws proton create-environment-template \ --name "fargate-env" \ --display-name "Public VPC Fargate" \ --description "VPC with public access and ECS cluster"
  3. 创建一个模板同步配置。

    AWS Proton 在您的存储库和环境模板之间建立同步关系。然后,它创建处于 DRAFT 状态的模板版本 1.0。

    $ aws proton create-template-sync-config \ --template-name "fargate-env" \ --template-type "ENVIRONMENT" \ --repository-name "your-forked-repo" \ --repository-provider "GITHUB" \ --branch "your-branch" \ --subdirectory "environment-templates/fargate-env"
  4. 等待成功注册环境模板版本。

    如果该命令返回并且退出状态为 0,则说明版本注册完成。这在脚本中是非常有用的,可以确保您在下一步中成功运行命令。

    $ aws proton wait environment-template-version-registered \ --template-name "fargate-env" \ --major-version "1" \ --minor-version "0"
  5. 发布环境模板版本以使其可用于创建环境。

    $ aws proton update-environment-template-version \ --template-name "fargate-env" \ --major-version "1" \ --minor-version "0" \ --status "PUBLISHED"

步骤 2:注册服务模板

在该步骤中,您作为管理员注册一个示例服务模板,其中包含在负载均衡器后面预置 Amazon ECS Fargate 服务所需的所有资源以及使用 AWS CodePipeline 的 CI/CD 管道。

注册服务模板
  1. 创建一个服务模板。

    服务模板资源跟踪服务模板版本。

    $ aws proton create-service-template \ --name "load-balanced-fargate-svc" \ --display-name "Load balanced Fargate service" \ --description "Fargate service with an application load balancer"
  2. 创建一个模板同步配置。

    AWS Proton 在您的存储库和服务模板之间建立同步关系。然后,它创建处于 DRAFT 状态的模板版本 1.0。

    $ aws proton create-template-sync-config \ --template-name "load-balanced-fargate-svc" \ --template-type "SERVICE" \ --repository-name "your-forked-repo" \ --repository-provider "GITHUB" \ --branch "your-branch" \ --subdirectory "service-templates/load-balanced-fargate-svc"
  3. 等待成功注册服务模板版本。

    如果该命令返回并且退出状态为 0,则说明版本注册完成。这在脚本中是非常有用的,可以确保您在下一步中成功运行命令。

    $ aws proton wait service-template-version-registered \ --template-name "load-balanced-fargate-svc" \ --major-version "1" \ --minor-version "0"
  4. 发布服务模板版本以使其可用于创建服务。

    $ aws proton update-service-template-version \ --template-name "load-balanced-fargate-svc" \ --major-version "1" \ --minor-version "0" \ --status "PUBLISHED"

步骤 3:部署环境

在该步骤中,您作为管理员通过环境模板实例化一个 AWS Proton 环境。

部署环境
  1. 为您注册的环境模板获取一个示例规范文件。

    您可以从模板示例存储库中下载 environment-templates/fargate-env/spec/spec.yaml 文件。或者,您可以在本地获取整个存储库,并从 environment-templates/fargate-env 目录中运行 create-environment 命令。

  2. 创建一个环境。

    AWS Proton 从您的环境规范中读取输入值,将它们与您的环境模板合并在一起,并使用您的 AWS Proton 服务角色在您的 AWS 账户中预置环境资源。

    $ aws proton create-environment \ --name "fargate-env-prod" \ --template-name "fargate-env" \ --template-major-version 1 \ --proton-service-role-arn "arn:aws:iam::123456789012:role/AWSProtonServiceRole" \ --spec "file://spec/spec.yaml"
  3. 等待成功部署环境。

    $ aws proton wait environment-deployed --name "fargate-env-prod"

步骤 4:部署服务 [应用程序开发人员]

在前面的步骤中,管理员注册并发布了一个服务模板,并部署了一个环境。作为应用程序开发人员,您现在可以创建一个 AWS Proton 服务,并将其部署到 AWS Proton 环境中。

部署服务
  1. 为管理员注册的服务模板获取一个示例规范文件。

    您可以从模板示例存储库中下载 service-templates/load-balanced-fargate-svc/spec/spec.yaml 文件。或者,您可以在本地获取整个存储库,并从 service-templates/load-balanced-fargate-svc 目录中运行 create-service 命令。

  2. AWS Proton 示例服务存储库复制到您的 GitHub 账户或组织中。该存储库包含我们在本教程中使用的应用程序源代码。

  3. 创建服务。

    AWS Proton 从您的服务规范中读取输入值,将其与您的服务模板合并在一起,并在您的 AWS 账户中为规范指定的环境预置服务资源。AWS CodePipeline 管道从您在命令中指定的存储库中部署应用程序代码。

    $ aws proton create-service \ --name "static-website" \ --repository-connection-arn \ "arn:aws:codestar-connections:us-east-1:123456789012:connection/your-codestar-connection-id" \ --repository-id "your-GitHub-account/aws-proton-sample-services" \ --branch-name "main" \ --template-major-version 1 \ --template-name "load-balanced-fargate-svc" \ --spec "file://spec/spec.yaml"
  4. 等待成功部署服务。

    $ aws proton wait service-created --name "static-website"
  5. 检索输出并查看您的新网站。

    运行以下命令:

    $ aws proton list-service-instance-outputs \ --service-name "static-website" \ --service-instance-name load-balanced-fargate-svc-prod

    该命令的输出应类似于以下内容:

    { "outputs": [ { "key": "ServiceURL", "valueString": "http://your-service-endpoint.us-east-1.elb.amazonaws.com" } ] }

    ServiceURL 实例输出的值是新服务网站的终端节点。使用浏览器导航到该终端节点。您应该会在静态页面上看到以下图形:

    Web 浏览器显示入门 CLI 过程生成的静态图片站点

步骤 5:清理(可选)

在该步骤中,在您了解了本教程中创建的 AWS 资源后,您可以删除这些资源以节省与它们相关的成本。

删除教程资源
  1. 要删除服务,请运行以下命令:

    $ aws proton delete-service --name "static-website"
  2. 要删除环境,请运行以下命令:

    $ aws proton delete-environment --name "fargate-env-prod"
  3. 要删除服务模板,请运行以下命令:

    $ aws proton delete-template-sync-config \ --template-name "load-balanced-fargate-svc" \ --template-type "SERVICE" $ aws proton delete-service-template --name "load-balanced-fargate-svc"
  4. 要删除环境模板,请运行以下命令:

    $ aws proton delete-template-sync-config \ --template-name "fargate-env" \ --template-type "ENVIRONMENT" $ aws proton delete-environment-template --name "fargate-env"