

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

# 使用 Slack 资源创建 AWS 支持 应用程序 AWS CloudFormation
<a name="creating-resources-with-cloudformation"></a>

AWS 支持 Slack 中的应用程序与 AWS CloudFormation一项服务集成，该服务可帮助您对 AWS 资源进行建模和设置，从而减少创建和管理资源和基础架构所花费的时间。您可以创建一个描述所需的所有 AWS 资源（例如您的 AccountAlias 和 SlackChannelConfiguration）的模板，并为您 CloudFormation 预置和配置这些资源。

使用时 CloudFormation，您可以重复使用模板来一致且重复地设置 AWS 支持 应用程序资源。只需描述一次您的资源，然后在多个 AWS 账户 区域中一遍又一遍地配置相同的资源。

## AWS 支持 应用程序和 CloudFormation 模板
<a name="working-with-templates"></a>

要为 AWS 支持 应用程序和相关服务配置和配置资源，您必须了解[CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)。模板是 JSON 或 YAML 格式的文本文件。这些模板描述了您要在 CloudFormation 堆栈中配置的资源。如果你不熟悉 JSON 或 YAML，可以使用 D CloudFormation esigner 来帮助你开始使用 CloudFormation 模板。有关更多信息，请参阅[什么是 CloudFormation 设计器？](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer.html) 在《*AWS CloudFormation 用户指南》*中。

AWS 支持 应用程序支持创建您的 AccountAlias 和 SlackChannelConfiguration in CloudFormation。有关更多信息，包括和 SlackChannelConfiguration 资源的 JSON 和 YAML 模板示例，请参阅*AWS CloudFormation 用户指南*中的[AWS 支持 应用程序资源类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SupportApp.html)。 AccountAlias 

## 为您的组织创建 Slack 配置资源
<a name="using-cloudformation-templates-for-support-app"></a>

您可以使用 CloudFormation 模板来创建 AWS 支持 应用程序所需的资源。如果您是组织的管理账户，则可以使用模板在 AWS Organizations中为成员账户创建这些资源。

例如，您可以使用模板为组织中的所有账户创建相同的 Slack 工作空间配置，但随后使用不同的模板为特定部门 AWS 账户 或组织部门创建不同的 Slack 频道配置（）OUs。您也可以使用模板来创建 Slack 工作区配置，以便成员账户为其 AWS 账户配置所需的 Slack 通道。

您可以选择是否使用 CloudFormation 模板。如果不使用 CloudFormation 模板，则可以改为完成以下手动步骤：
+ 在中创建 AWS 支持 应用程序资源 AWS Support Center Console。
+ 调用 [https://docs.aws.amazon.com/supportapp/latest/APIReference/API_RegisterSlackWorkspaceForOrganization.html](https://docs.aws.amazon.com/supportapp/latest/APIReference/API_RegisterSlackWorkspaceForOrganization.html) API 操作为您的账户注册 Slack 工作区。 CloudFormation 堆栈会为您调用此 API 操作。
+ 为每个成员账户创建具有所需权限的 IAM 角色。
+ 调用 [https://docs.aws.amazon.com/supportapp/latest/APIReference/API_CreateSlackChannelConfiguration.html](https://docs.aws.amazon.com/supportapp/latest/APIReference/API_CreateSlackChannelConfiguration.html)API 操作为每个成员账户配置一个 Slack 频道。

有关详细的手动步骤，请参阅[授权多个账户](authorize-slack-workspace.md#authorize-multiple-accounts)。

按照以下步骤将 CloudFormation 模板上传到您的组织。您可以使用 [AWS 支持 App 资源类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SupportApp.html)页面中的示例模板。

模板告诉你 CloudFormation 要创建以下资源：
+ [Slack 通道配置](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-supportapp-slackchannelconfiguration.html)。
+ [Slack 工作区配置](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-supportapp-slackworkspaceconfiguration.html)。
+ 名为 `AWSSupportSlackAppCFNRole` 的 [IAM 角色](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)。AWSSupportAppFullAccess AWS 托管策略已附加。

**Contents**
+ [更新你的 Slack CloudFormation 模板](#update-the-templates-for-slack)
+ [为管理账户创建堆栈](#create-your-stack-for-slack)
+ [为组织创建堆栈集](#create-your-stackset-for-your-organization)

### 更新你的 Slack CloudFormation 模板
<a name="update-the-templates-for-slack"></a>

首先，请使用以下模板来创建堆栈。您必须将模板替换为 Slack 工作区和通道的有效值。

**注意**  
我们不建议使用该模板为您的组织创建 [AccountAlias](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-supportapp-accountalias.html) 资源。该AccountAlias资源在 AWS 支持 应用程序 AWS 账户 中唯一标识。您的成员账户可以在支持中心控制台中输入账户名称。有关更多信息，请参阅 [授权 Slack 工作区](authorize-slack-workspace.md)。

**更新你的 Slack CloudFormation 模板**

1. 如果您是组织的管理账户，则必须先为自己的账户手动授权 Slack 工作空间，然后您的成员账户 CloudFormation 才能使用创建资源。如果尚未授权，请参阅 [授权 Slack 工作区](authorize-slack-workspace.md)。

1. 从 [AWS 支持 App 资源类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SupportApp.html)页面中复制所需资源的 JSON 或 YAML 模板。

1. 在文本编辑器中，将模板粘贴到新文件中。

1. 在模板中，指定所需的参数。至少需要替换以下字段的值：
   + 带有 Slack 工作区 ID 的 `TeamId`
   + 带有 Slack 通道 ID 的 `ChannelId`
   +  带有用于标识 Slack 通道配置名称的 `ChannelName`
**提示**  
要找到工作空间和频道 IDs，请在浏览器中打开您的 Slack 频道。在 URL 中，您的工作区 ID 是第一个标识符，通道 ID 是第二个标识符。例如，在 https://app.slack.com/client/T012ABCDEFG/C01234A5BCD 中，T012ABCDEFG 是工作区 ID，C01234A5BCD 是通道 ID。

1. 将文件另存为 JSON 或 YAML 文件。

### 为管理账户创建堆栈
<a name="create-your-stack-for-slack"></a>

接下来，您必须在组织中为管理账户创建堆栈。此步骤会为您调用 [https://docs.aws.amazon.com/supportapp/latest/APIReference/API_RegisterSlackWorkspaceForOrganization.html](https://docs.aws.amazon.com/supportapp/latest/APIReference/API_RegisterSlackWorkspaceForOrganization.html) API 操作并使用 Slack 授权工作区。

**注意**  
我们建议您上传在上一步中为管理账户更新的 Slack 工作区配置模板。除非您还要将管理帐户配置为使用该 AWS 支持 应用程序，否则您无需上传 Slack 频道配置模板。

**为管理账户创建堆栈**

1. 以贵组织的管理帐户 AWS 管理控制台 身份登录。

1. 在 [https://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。

1. 如果您还没有，请在**区域选择器**中选择以下选项之一 AWS 区域：
   + 欧洲地区（法兰克福）
   + 欧洲地区（爱尔兰）
   + 欧洲地区（伦敦）
   + 美国东部（弗吉尼亚州北部）
   + 美国东部（俄亥俄州）
   + 美国西部（俄勒冈州）
   + 亚太地区（新加坡）
   + 亚太地区（东京）
   + 加拿大（中部）

1. 按照步骤创建堆栈。有关更多信息，请参阅[在 CloudFormation 控制台上创建堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。

    CloudFormation 成功创建堆栈后，您可以使用相同的模板为您的组织创建堆栈集。

### 为组织创建堆栈集
<a name="create-your-stackset-for-your-organization"></a>

接下来，对 Slack 工作区配置使用相同的模板，以创建具有 `service-managed` 权限的堆栈集。您可以使用堆栈集为整个组织创建堆栈 OUs ，也可以指定所需的堆栈。有关更多信息，请参阅[创建堆栈集](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。

此过程还会为您调用 [https://docs.aws.amazon.com/supportapp/latest/APIReference/API_RegisterSlackWorkspaceForOrganization.html](https://docs.aws.amazon.com/supportapp/latest/APIReference/API_RegisterSlackWorkspaceForOrganization.html) API 操作。此 API 操作会为成员账户使用 Slack 授权工作区。

**为组织创建堆栈集**

1. 以贵组织的管理帐户 AWS 管理控制台 身份登录。

1. 在 [https://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。

1. 如果还没有，请在**区域选择器**中选择与 AWS 区域 上一个步骤相同的区域。

1. 在导航窗格中，请选择 **StackSets**。

1. 选择**创建 StackSet**。

1. 在 **Choose a template**（选择模板）页面上，保留以下选项的默认选项：
   + 在 **Permissions**（权限）下，保留 **Service-managed permissions**（服务托管权限）。
   + 对于 **Prerequisite - Prepare template**（先决条件 – 准备模板），请保留 **Template is ready**（模板已就绪）。

1. 在 **Specify template**（指定模板）下，选择 **Upload a template file**（上传模板文件），然后选择 **Choose file**（选择文件）。

1. 选择文件，然后选择 **Next**（下一步）。

1. **在 “指定 StackSet 详细信息**” 页面上，输入堆栈名称（例如）**support-app-slack-workspace**，输入描述，然后选择 “**下一步**”。

1. 在 “**配置 StackSet 选项**” 页面上，保留默认选项，然后选择 “**下一步**”。

1. 在 **Set deployment options**（设置部署选项）页面上，对于 **Add stacks to stack set**（将堆栈添加到堆栈集），保留默认的 **Deploy new stacks**（部署新堆栈）选项。

1. 对于**部署目标**，请选择是要为整个组织创建堆栈还是为特定组织创建堆栈 OUs。如果选择 OU，请输入 OU ID。

1. **在 “指定区域**” 中，仅输入以下内容*之一* AWS 区域：
   + 欧洲地区（法兰克福）
   + 欧洲地区（爱尔兰）
   + 欧洲地区（伦敦）
   + 美国东部（弗吉尼亚州北部）
   + 美国东部（俄亥俄州）
   + 美国西部（俄勒冈州）
   + 亚太地区（新加坡）
   + 亚太地区（东京）
   + 加拿大（中部）
**备注：**  
为了简化您的工作流程，我们建议您使用在步骤 3 中选择的相同 AWS 区域 方法。
选择多个堆栈 AWS 区域 可能会导致与创建堆栈发生冲突。

1. 在 **“部署选项”** 中，在 “**容错率-可选**” 中，输入在 CloudFormation 停止操作之前堆栈可能出现故障的帐户数。我们建议您输入要添加的账户数并减去一。例如，如果您指定的 OU 有 10 个成员账户，则输入 9。这意味着，即使操作 CloudFormation 失败了 9 次，也至少有一个账户会成功。

1. 选择**下一步**。

1. 在 **Review**（审核）页面上，检查您的选择，然后选择 **Submit**（提交）。您可以在 **Stack instances**（堆栈实例）选项卡上检查堆栈状态。

1. （可选）重复此步骤以上传 Slack 通道配置的模板。该示例模板还创建 IAM 角色并附加 AWS 托管策略。该角色具有访问其他服务所需的权限。有关更多信息，请参阅 [管理对 AWS 支持 应用程序的访问权限](support-app-permissions.md)。

   如果您不创建堆栈集来创建 Slack 通道配置，则您的成员账户可以手动配置 Slack 通道。有关更多信息，请参阅 [配置 Slack 频道](add-your-slack-channel.md)。

 CloudFormation 创建堆栈后，每个成员帐户都可以登录 Support Center 控制台并找到他们配置的 Slack 工作空间和频道。然后，他们可以使用该 AWS 支持 应用程序 AWS 账户. 请参阅[在 Slack 通道中创建支持案例](create-case-in-slack.md)。

**提示**  
如果您需要上传新模板，我们建议您使用之前指定的相同 AWS 区域 。

## 了解更多关于 CloudFormation
<a name="learn-more-cloudformation"></a>

要了解更多信息 CloudFormation，请参阅以下资源：
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)
+ [AWS CloudFormation 用户指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [CloudFormation API 引用](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html)
+ [AWS CloudFormation 命令行界面用户指南](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html)

## 使用 Terraform 创建 AWS 支持 应用程序资源
<a name="terraform-support-app"></a>

你也可以使用 [Terraform](https://www.terraform.io/) 为你创建 AWS 支持 应用程序资源。 AWS 账户 Terraform 是一 infrastructure-as-code款可用于云应用程序的工具。您可以使用 Terraform 创建 AWS 支持 应用程序资源，而不必将 CloudFormation 堆栈部署到账户。

安装 Terraform 后，您可以指定所需的 AWS 支持 应用程序资源。Terraform 会调用 [https://docs.aws.amazon.com/supportapp/latest/APIReference/API_RegisterSlackWorkspaceForOrganization.html](https://docs.aws.amazon.com/supportapp/latest/APIReference/API_RegisterSlackWorkspaceForOrganization.html) API 操作为您注册 Slack 工作区，并创建资源。然后，您可以登录支持中心控制台并找到您配置的 Slack 工作区和通道。

**注意**  
如果您是组织的管理账户，则必须手动为您的账户授权 Slack 工作区，然后您的成员账户才能使用 Terraform 来创建资源。如果尚未授权，请参阅 [授权 Slack 工作区](authorize-slack-workspace.md)。
与 CloudFormation 堆栈集不同，您不能使用 Terraform 为组织中的组织单位创建 AWS 支持 应用程序资源。
您还可以在 AWS CloudTrail中找到来自 Terraform 的更新的事件历史记录。这些事件的 `eventSource` 将是 `cloudcontrolapi.amazonaws.com` 和 `supportapp.amazonaws.com`。有关更多信息，请参阅 [在 Slack API 调用中使用登录 AWS 支持 应用程序 AWS CloudTrail](logging-using-cloudtrail-support-app.md)。

### 了解详情
<a name="learn-more-terra-form"></a>

要了解有关 Terraform 的更多信息，请参阅以下主题：
+  [Terraform installation](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)（Terraform 安装）
+ [Terraform 教程：构建基础架构 AWS](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/aws-build)
+ `[awscc\$1support\$1app\$1account\$1alias](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/supportapp_account_alias)`
+ `[awscc\$1supportapp\$1slack\$1workspace\$1configuration](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/supportapp_slack_workspace_configuration)`
+ `[awscc\$1supportapp\$1slack\$1channel\$1configuration](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/supportapp_slack_channel_configuration)`