

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

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

# 部署到 AWS 账户 和 VPCs
<a name="deploy-environments"></a>

使用[CodeCatalyst 工作流程](workflow.md)，您可以将应用程序和其他资源部署到 AWS 云 VPCs 中的目标和 AWS 账户 Amazon。要启用这些部署，必须设置 CodeCatalyst 环境。

不要将 CodeCatalyst *环境*与[开发环境](https://docs.aws.amazon.com/codecatalyst/latest/userguide/devenvironment.html)混淆，它定义了 CodeCatalyst [工作流程](workflow.md)所连接的目标 AWS 账户 和可选的 Amazon VPC。环境还定义了工作流程访问目标账户中的 AWS 服务和资源所需的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

您可以设置多个环境并为它们指定名称，例如开发、测试、暂存和生产。在这些环境中部署时，有关部署的信息会显示在环境中的 CodeCatalyst **部署活动**和**部署目标**选项卡上。

## 如何开始使用环境？
<a name="deploy-environments-get-started"></a>

添加和使用 CodeCatalyst 环境的高级步骤如下：

1. 在您的 CodeCatalyst 空间中，**关联一个或多个 AWS 账户**。在此过程中，添加工作流访问 AWS 账户中的资源所需的 IAM 角色。有关更多信息，请参阅 [允许在已连接的情况下访问 AWS 资源 AWS 账户](ipa-connect-account.md)。

1. 在您的 CodeCatalyst 项目中，**创建一个包含步骤 1 中的 AWS 账户 s 和 IAM 角色之一的环境**。有关更多信息，请参阅 [创建环境](deploy-environments-creating-environment.md)。

1. 在您的 CodeCatalyst 项目中，在工作流程中**，添加指向您在步骤 2 中创建的环境的[操作](workflows-actions.md)**。有关更多信息，请参阅 [添加操作到工作流](workflows-add-action.md)。

   现在，您已配置一个环境。此操作现在可将资源部署到环境中指定的 AWS 账户 中。

**注意**  
您也可以将 Amazon VPC 添加到环境中。有关更多信息，请参阅《*CodeCatalyst 管理指南》*中的[为空间添加 VPC 连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)和[将 VPC 与环境关联](deploy-environments-associate-vpc.md)。

## 单个工作流中是否能有多个环境？
<a name="deploy-environments-multiple"></a>

可以。如果工作流包含多个操作，则可以为每个操作分配一个环境。例如，您的工作流可能包含两个部署操作，为一个部署操作分配了 `my-staging-enviroment` 环境，为另一个部署操作分配了 `my-production-environment` 环境。

## 哪些工作流操作支持环境？
<a name="deploy-environments-supported"></a>

任何将资源部署到 AWS 云端或出于其他原因（例如监控和报告）与 AWS 服务通信的工作流程操作都支持环境。

## 哪些操作支持在中显示其部署信息 CodeCatalyst？
<a name="deploy-environments-supported-targets"></a>

在支持环境的工作流程操作中，只有少数支持将其部署信息显示在 CodeCatalyst 控制台的 “**部署活动**” 和 “**部署目标**” 页面上。

以下工作流操作支持显示其部署信息：
+ **部署 CloudFormation 堆栈**-有关更多信息，请参阅 [部署 CloudFormation 堆栈](deploy-action-cfn.md)
+ **部署到 Amazon ECS** – 有关更多信息，请参阅[使用工作流部署到 Amazon ECS](deploy-action-ecs.md)
+ **部署到 Kubernetes 集群** – 有关更多信息，请参阅[使用工作流部署到 Amazon EKS](deploy-action-eks.md)
+ **AWS CDK 部署**-有关更多信息，请参阅 [使用工作流程部署 AWS CDK 应用程序](cdk-dep-action.md)

## 支持的区域：
<a name="deploy-environments-supported-regions"></a>

**环境**页面可以显示任何 AWS 区域中的资源。

## 环境是强制性的吗？
<a name="deploy-environments-optional-or-mandatory"></a>

如果分配给环境的工作流程操作将资源部署到 AWS 云中，或者出于其他原因（例如监控和报告）与 AWS 服务通信，则该环境是必需的。

例如，如果您的构建操作可以构建应用程序，但不需要与您的 AWS 账户 或 Amazon VPC 通信，则无需为该操作分配环境。但是，如果构建操作将日志发送到您的 Amazon CloudWatch 服务 AWS 账户，则必须为该操作分配环境。

**Topics**
+ [如何开始使用环境？](#deploy-environments-get-started)
+ [单个工作流中是否能有多个环境？](#deploy-environments-multiple)
+ [哪些工作流操作支持环境？](#deploy-environments-supported)
+ [哪些操作支持在中显示其部署信息 CodeCatalyst？](#deploy-environments-supported-targets)
+ [支持的区域：](#deploy-environments-supported-regions)
+ [环境是强制性的吗？](#deploy-environments-optional-or-mandatory)
+ [创建环境](deploy-environments-creating-environment.md)
+ [将环境与操作关联](deploy-environments-add-app-to-environment.md)
+ [将 VPC 与环境关联](deploy-environments-associate-vpc.md)
+ [将 AWS 账户 与环境关联](deploy-environments-associate-account.md)
+ [更改操作的 IAM 角色](deploy-environments-switch-role.md)

# 创建环境
<a name="deploy-environments-creating-environment"></a>

按照以下说明操作来创建稍后能够与工作流操作关联的环境。

**开始前的准备工作**

您需要以下项：
+ 一个 CodeCatalyst 空间。有关更多信息，请参阅 [设置并登录 CodeCatalyst设置并登录 CodeCatalyst](setting-up-topnode.md)。
+ 一个 CodeCatalyst 项目。有关更多信息，请参阅 [使用蓝图创建项目](projects-create.md#projects-create-console-template)。
+ 包含您的工作流程操作需要访问的 IAM 角色的 AWS 账户连接 AWS。有关创建账户连接的信息，请参阅[允许在已连接的情况下访问 AWS 资源 AWS 账户](ipa-connect-account.md)。对于每个环境，最多使用一个账户连接。
**注意**  
您可以在没有账户连接的情况下创建环境；但您稍后需添加该连接。
+ 以下 CodeCatalyst 角色之一：
  + **空间管理员**
  + **项目管理员**
  + **贡献者**
**注意**  
如果您具有**贡献者**角色，则可以创建一个环境，但无法将该环境与 AWS 账户 连接关联。你需要请具有**空间管理员或**项目管理员****角色的人员将环境与 AWS 账户 连接关联。

   有关权限和角色的更多信息，请参阅[向用户授予项目权限](projects-members.md)。

**创建环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**环境**。

1. 在**环境名称**中，输入一个名称，例如 **Production** 或 **Staging**。

1. 在**环境类型**中，选择下列选项之一：
   + **非生产** – 在将应用程序投入生产之前，可在其中测试应用程序以确保其按预期运行的环境。
   + **生产** – 一个公开可用的“实时”环境，用于托管您最终的应用程序。

     如果您选择**生产**，则 UI 中与环境关联的所有操作旁边都会显示一个**生产**徽章。该徽章可帮助您快速查看哪些操作正在部署到生产中。除了徽章的外观外，生产环境和非生产环境之间没有区别。

1. （可选）在**描述**中，输入描述，例如 **Production environment for the hello-world app**。

1. 在**AWS 账户 连接中-可选**，选择要与此环境关联的 AWS 账户连接。分配了此环境的工作流操作将能够连接到关联的 AWS 账户。有关在中创建 AWS 账户 连接的更多信息 CodeCatalyst，请参阅[允许在已连接的情况下访问 AWS 资源 AWS 账户](ipa-connect-account.md)。

   如果您要使用的 AWS 账户 连接未列出，则可能是因为您的项目中不允许使用该连接。有关更多信息，请参阅《A *mazon CodeCatalyst 管理员*指南》中的[配置受项目限制的账户连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-accounts-restriction.html)。

1. 在**默认 IAM 角色**中，选择要与此环境关联的 IAM 角色。分配给此环境的工作流程操作将继承此 IAM 角色，并能够使用该角色连接到您的中的服务和资源 AWS 账户。

   如果您需要将环境分配给多个操作，并且这些操作需要的 IAM 角色与此处指定的默认角色不同，则可以使用**切换角色**选项在每个操作的**配置**选项卡上指定不同的角色。有关更多信息，请参阅 [更改操作的 IAM 角色](deploy-environments-switch-role.md)。

   如果您要用作默认角色的 IAM 角色未列出，则可能是因为您尚未将其添加到 AWS 账户 连接中。要向账户连接添加 IAM 角色，请参阅[将 IAM 角色添加到账户连接](ipa-connect-account-addroles.md)。

1. （可选）在 **VPC 连接**中，选择要与此环境关联的 VPC 连接。有关创建 VPC 连接的更多信息，请参阅《[亚马逊* CodeCatalyst 管理员指南》中的管理亚马逊*虚拟私有云](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.html)。

   如果您要使用的 VPC 连接未列出，则可能是因为它包含了您的项目中不允许的 AWS 账户 连接。有关更多信息，请参阅《A *mazon CodeCatalyst 管理员*指南》中的[配置受项目限制的账户连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-accounts-restriction.html)。

1. 选择 “**创建环境**”。 CodeCatalyst 创建一个空环境。

**后续步骤**
+ 现在您已创建一个环境，可以将该环境与工作流操作关联。有关更多信息，请参阅 [将环境与操作关联](deploy-environments-add-app-to-environment.md)。

# 将环境与操作关联
<a name="deploy-environments-add-app-to-environment"></a>

当您将环境与[支持的工作流程操作](deploy-environments.md#deploy-environments-supported)关联时，该环境的 AWS 账户默认 IAM 角色和可选的 Amazon VPC 将分配给该操作。之后，此操作可以使用 IAM 角色连接和部署到 AWS 账户 ，还可以连接到可选 Amazon VPC。

按照以下说明操作来将环境与操作关联。

## 步骤 1：将环境与工作流操作关联
<a name="deploy-environments-add-app-to-environment-assoc"></a>

使用以下过程将环境与工作流操作关联。

------
#### [ Visual ]

**使用可视化编辑器将环境与工作流操作关联**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择**可视化**。

1. 在工作流图中，选择环境支持的操作。有关更多信息，请参阅 [哪些操作支持在中显示其部署信息 CodeCatalyst？](deploy-environments.md#deploy-environments-supported-targets)。

1. 选择**配置**选项卡，然后在**环境**字段中指定信息，如下所示。

   **环境**

   指定要用于操作的 CodeCatalyst 环境。该操作连接到在所选环境中指定的 AWS 账户 和可选的 Amazon VPC。该操作使用环境中指定的默认 IAM 角色连接到 AWS 账户，并使用在 A [mazon VPC 连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)中指定的 IAM 角色连接到亚马逊 VPC。
**注意**  
如果默认 IAM 角色不具有操作所需的权限，则可以将操作配置为使用其他角色。有关更多信息，请参阅[更改操作的 IAM 角色](deploy-environments-switch-role.md)。

   有关环境的更多信息，请参阅[部署到 AWS 账户 和 VPCs](deploy-environments.md)和[创建环境](deploy-environments-creating-environment.md)。

1. （可选）更改与操作关联的 IAM 角色。如果角色包含操作的一组错误权限，则可能需要更改角色。

    要更改角色，请执行以下操作：

   1. 在 W **hat's in*my-environment*？** 框，然后选择垂直省略号图标 (![\[Ellipsis.\]](http://docs.aws.amazon.com/zh_cn/codecatalyst/latest/userguide/images/flows/elipsis.png))。

   1. 选择下列选项之一：
      +  **切换角色**。选择此选项能且只能更改此操作使用的 IAM 角色。其他操作继续使用其关联环境中指定的默认 IAM 角色。有关更多信息，请参阅 [更改操作的 IAM 角色](deploy-environments-switch-role.md)。
      +  **编辑环境**。选择此选项可更改环境中列出的默认 IAM 角色。选择此选项后，您的操作以及与同一环境关联的任何其他操作都将开始使用新的默认 IAM 角色。
**重要**  
更新默认 IAM 角色时要谨慎。如果角色具备的权限不足，无法执行所有共享环境的操作，则更改角色可能会导致操作失败。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------
#### [ YAML ]

**使用 YAML 编辑器将环境与工作流操作关联**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择 **YAML**。

1. 在要与环境关联的工作流操作中，添加与以下内容类似的代码：

   ```
   action-name:
     Environment:
       Name: environment-name
   ```

   有关更多信息，请参阅[操作类型](workflows-actions.md#workflows-actions-types)主题。本主题包含每个操作的文档链接，包括其 YAML 参考。

1. （可选）如果您希望操作使用与环境中列出的默认 IAM 角色不同的角色，请添加包含您要使用的角色的 `Connections:` 部分。有关更多信息，请参阅 [更改操作的 IAM 角色](deploy-environments-switch-role.md)。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------

## 步骤 2：填充部署活动页面
<a name="deploy-environments-add-app-to-environment-run"></a>

将环境与工作流操作关联后，可以在 CodeCatalyst 控制台的 “**环境**” 部分的 “**部署” 活动**和 “**部署目标**” 页面中填充部署信息。按照以下说明操作来填充这些页面。

**注意**  
只有少数操作支持在 CodeCatalyst控制台中显示其部署信息。有关更多信息，请参阅 [哪些操作支持在中显示其部署信息 CodeCatalyst？](deploy-environments.md#deploy-environments-supported-targets)。

**将部署信息添加到 CodeCatalyst**

1. 如果您在[步骤 1：将环境与工作流操作关联](#deploy-environments-add-app-to-environment-assoc)中提交更改时工作流运行未自动启动，请执行以下操作来手动启动运行：

   1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

   1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

   1. 选择**运行**。

   工作流程运行会启动新的部署，这会导致 CodeCatalyst 向添加部署信息 CodeCatalyst。

1. 确认部署活动已添加到 CodeCatalyst 控制台：

   1. 在导航窗格中，选择 **CI/CD**，然后选择**环境**。

   1. 选择您的环境（例如 `Production`）。

   1. 选择**部署活动**选项卡，并确认部署的**状态**为**成功**。这表示工作流运行已成功部署您的应用程序资源。

   1. 选择**部署目标**选项卡，并确认已显示您的应用程序资源。

# 将 VPC 与环境关联
<a name="deploy-environments-associate-vpc"></a>

在使用具有 VPC 连接的环境配置操作时，该操作将在连接到 VPC 的情况下运行，遵守网络规则并访问关联的 VPC 所指定的资源。一个或多个环境可使用同一 VPC 连接。

按照以下说明操作来将 VPC 连接与环境关联。

**将 VPC 连接与环境关联**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**环境**。

1. 选择您的环境（例如 `Production`）。

1. 选择**环境属性**选项卡。

1. 选择**管理 VPC 连接**，再选择所需的 VPC 连接，然后选择**确认**。这会将选定的 VPC 连接与此环境关联。
**注意**  
如果您要使用的 VPC 连接未列出，则可能是因为该 AWS 账户 连接包含您的项目中不允许的连接。有关更多信息，请参阅《A *mazon CodeCatalyst 管理员*指南》中的[配置受项目限制的账户连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-accounts-restriction.html)。

有关更多信息，请参阅《*CodeCatalyst 管理员指南》*中的 “[管理 Amazon 虚拟私有云](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.html)”。

# 将 AWS 账户 与环境关联
<a name="deploy-environments-associate-account"></a>

按照以下说明将 AWS 账户 与环境相关联。当您将 AWS 账户 与环境关联时，分配给该环境的工作流操作将能够连接到该环境 AWS 账户。

有关账户连接的更多信息，请参阅[允许在已连接的情况下访问 AWS 资源 AWS 账户](ipa-connect-account.md)。

**开始前的准备工作**

您需要以下项：
+ 包含您的工作流程操作需要访问的 IAM 角色的 AWS 账户连接 AWS。有关创建账户连接的信息，请参阅[允许在已连接的情况下访问 AWS 资源 AWS 账户](ipa-connect-account.md)。对于每个环境，最多使用一个账户连接。
+ 以下 CodeCatalyst 角色之一：**空间管理员**或**项目管理员**。有关更多信息，请参阅 [向用户授予项目权限](projects-members.md)。

**将 AWS 账户 与环境关联**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**环境**。

1. 选择您的环境（例如 `Production`）。

1. 选择**编辑环境**。

1. 在**环境属性**下的 **AWS 账户 连接 – 可选**下拉列表中，选择所需的 AWS 账户。

   如果您要使用的 AWS 账户 连接未列出，则可能是因为您的项目中不允许使用该连接。有关更多信息，请参阅《A *mazon CodeCatalyst 管理员*指南》中的[配置受项目限制的账户连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-accounts-restriction.html)。

1. 在**默认 IAM 角色**中，选择要与此环境关联的 IAM 角色。分配给此环境的工作流程操作将继承此 IAM 角色，并能够使用该角色连接到您的中的服务和资源 AWS 账户。

   如果您要用作默认角色的 IAM 角色未列出，则可能是因为您尚未将其添加到 AWS 账户 连接中。要向账户连接添加 IAM 角色，请参阅[将 IAM 角色添加到账户连接](ipa-connect-account-addroles.md)。

# 更改操作的 IAM 角色
<a name="deploy-environments-switch-role"></a>

默认情况下，在将[环境](deploy-environments.md)与工作流[操作](workflows-actions.md)关联时，该操作将继承环境中指定的默认 IAM 角色。您可以更改此行为，让操作使用其他角色。如果默认 IAM 角色缺少操作在 AWS 云中运行所需的权限，则可能需要让操作使用其他角色。

要向操作分配其他 IAM 角色，您可以使用可视化编辑器中的**切换角色**选项或 YAML 编辑器中的 `Connections:` 属性。新角色将覆盖环境中指定的默认 IAM 角色，可让您将默认 IAM 角色保持原样。如果有其他操作使用默认 IAM 角色，则可能需要将它保持原样。

按照以下说明操作，将操作配置为使用与其环境中指定的 IAM 角色不同的 IAM 角色。

------
#### [ Visual ]

**向操作分配其他 IAM 角色（可视化编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择代表要更新其 IAM 角色的操作的框。

1. 选择**配置**选项卡。

1. 在 W **hat's in*my-environment*？** 框中，选择垂直省略号图标 (![\[Ellipsis.\]](http://docs.aws.amazon.com/zh_cn/codecatalyst/latest/userguide/images/flows/elipsis.png))。

1. 选择**切换角色**。

1. 在**切换角色**对话框的 **IAM 角色**下拉列表中，选择您希望该操作使用的 IAM 角色。此角色将覆盖环境中指定的默认 IAM 角色。如果要使用的角色不在列表中，请确保已将它添加到空间。有关更多信息，请参阅 [将 IAM 角色添加到账户连接](ipa-connect-account-addroles.md)。

   所选角色现在出现在 W **hat's in*my-environment*？** 框以及 “**在工作流程中定义”** 徽章。此角色还显示在工作流定义文件的 `Connections:` 部分中。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------
#### [ YAML ]

**向操作分配其他 IAM 角色（YAML 编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择 **YAML**。

1. 在要在其中使用其他 IAM 角色的工作流操作中，添加一个类似于以下内容的 `Connections:` 部分：

   ```
   action-name:
     Environment:
       Name: environment-name
       Connections: 
         - Name: account-connection-name
           Role: iam-role-name
   ```

   在前面的代码中，*account-connection-name*替换为包含 IAM 角色的[账户连接](ipa-connect-account.md)的名称，并*iam-role-name*替换为您希望操作使用的 IAM 角色的名称。此角色将覆盖环境中指定的默认 IAM 角色。确保您已将此角色添加到空间。有关更多信息，请参阅 [将 IAM 角色添加到账户连接](ipa-connect-account-addroles.md)。

   有关更多信息，请参阅[操作类型](workflows-actions.md#workflows-actions-types)主题。本主题包含每个操作的文档链接，包括其 YAML 参考。

------