

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

# 对 Amazon Cognito 使用服务相关角色
<a name="using-service-linked-roles"></a>

Amazon Cognito 使用 AWS Identity and Access Management (IAM) [服务相关](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)角色。服务相关角色是一种独特的 IAM 角色，其信任策略 AWS 服务 允许担任该角色。服务相关角色由 Amazon Cognito 预定义，包括该服务代表您调用 AWS 其他服务所需的所有权限。

服务相关角色可让您更轻松地设置 Amazon Cognito，因为您不必手动添加必要的权限。Amazon Cognito 定义其服务相关角色的权限，除非另外定义，否则只有 Amazon Cognito 可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务关联角色。这将保护您的 Amazon Cognito 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其他服务的信息，请参阅[使用 IAM 的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务关联角色文档。

## Amazon Cognito 的服务相关角色权限
<a name="slr-permissions"></a>

Amazon Cognito 使用下列服务相关角色：
+ ** AWSServiceRoleForAmazonCognitoIdpEmailService**— 允许 Amazon Cognito 用户池服务使用你的 Amazon SES 身份发送电子邮件。
+ ** AWSServiceRoleForAmazonCognitoIdp**— 允许 Amazon Cognito 用户池为你的 Amazon Pinpoint 项目发布事件和配置终端节点。

**AWSServiceRoleForAmazonCognitoIdpEmailService**

`AWSServiceRoleForAmazonCognitoIdpEmailService` 服务相关角色信任以下服务代入该角色：
+ `email.cognito-idp.amazonaws.com`

角色权限策略允许 Amazon Cognito 对指定资源完成以下操作：

**允许的操作 AWSServiceRoleForAmazonCognitoIdpEmailService：**
+ 操作：`ses:SendEmail` 和 `ses:SendRawEmail`
+ 资源：`*`

此策略拒绝 Amazon Cognito 对指定资源完成以下操作的功能：

**拒绝的操作**
+ 操作：`ses:List*`
+ 资源：`*`

凭借这些权限，Amazon Cognito 只能使用 Amazon SES 中经过验证的电子邮件地址向用户发送电子邮件。当您的用户在客户端应用程序中针对用户池执行特定操作（如注册或重置密码）时，Amazon Cognito 将向用户发送电子邮件。

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务关联角色。有关更多信息，请参阅*《IAM 用户指南》*中的[服务关联角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

**AWSServiceRoleForAmazonCognitoIdp**

 AWSServiceRoleForAmazonCognitoIdp 服务相关角色信任以下服务来代入该角色：
+ `email.cognito-idp.amazonaws.com`

角色权限策略允许 Amazon Cognito 对指定资源完成以下操作：

**允许的操作 AWSService RoleForAmazonCognitoIdp**
+ 操作：`cognito-idp:Describe`
+ 资源：`*`

有了此权限，Amazon Cognito 可以为您调用 `Describe` Amazon Cognito API 操作。

**注意**  
当您将 Amazon Cognito 与采用 `createUserPoolClient` 和 `updateUserPoolClient` 的 Amazon Pinpoint 集成时，资源权限将作为内联策略添加到 SLR 中。内联策略将提供 `mobiletargeting:UpdateEndpoint` 和 `mobiletargeting:PutEvents` 权限。这些权限允许 Amazon Cognito 发布事件并为与 Cognito 集成的 Pinpoint 项目配置端点。

## 创建适用于 Amazon Cognito 的服务相关角色
<a name="create-slr"></a>

您无需手动创建服务关联角色。当您将用户池配置为使用您的 Amazon SES 配置来处理在 AWS 管理控制台 AWS CLI、或 Amazon Cognito API 中发送电子邮件时，Amazon Cognito 会为您创建服务相关角色。

如果您删除该服务关联角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。当您将用户池配置为使用 Amazon SES 配置去处理邮件送达时，Amazon Cognito 会为您创建与服务相关的角色。

在 Amazon Cognito 可以创建此角色之前，您用来设置用户池的 IAM 权限必须包含 `iam:CreateServiceLinkedRole` 操作。有关更新 IAM 中权限的更多信息，请参阅《IAM 用户指南》**中的[更改 IAM 用户的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。

## 编辑适用于 Amazon Cognito 的服务相关角色
<a name="edit-slr"></a>

 您无法在中编辑 AmazonCognitoIdp 或 AmazonCognitoIdpEmailService 与服务相关的角色。 AWS Identity and Access Management在创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。不过，您可以使用 IAM 编辑角色的说明。有关更多信息，请参阅 *IAM 用户指南*中的[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除适用于 Amazon Cognito 的服务相关角色
<a name="delete-slr"></a>

如果不再需要使用某个需要服务关联角色的功能或服务，我们建议您删除该角色。如果您删除角色，则只应保留 Amazon Cognito 主动监控或维护的实体。在删除角色 AmazonCognitoIdp 或 AmazonCognitoIdpEmailService 服务相关角色之前，必须对使用该角色的每个用户池执行以下操作之一：
+ 删除该用户池。
+ 更新用户池中的电子邮件设置以使用默认的电子邮件功能。默认设置不使用服务相关角色。

请记住使用该角色 AWS 区域 的用户池在每个用户池中执行操作。

**注意**  
如果在您尝试删除资源时，Amazon Cognito 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

**删除 Amazon Cognito 用户池**

1. 登录 AWS 管理控制台 并打开 Amazon Cognito 控制台，网址为。[https://console.aws.amazon.com/cognito](https://console.aws.amazon.com/cognito)

1. 选择**管理用户池**。

1. 在**您的用户池**页面上，选择要删除的用户池。

1. 选择**删除池**。

1. 在**删除用户池**窗口中，键入 **delete**，然后选择**删除池**。

**更新 Amazon Cognito 用户池以使用默认电子邮件功能**

1. 登录 AWS 管理控制台 并打开 Amazon Cognito 控制台，网址为。[https://console.aws.amazon.com/cognito](https://console.aws.amazon.com/cognito)

1. 选择**管理用户池**。

1. 在**您的用户池**页面上，选择要更新的用户池。

1. 在左侧导航菜单中，选择**消息自定义**。

1. 在**是否要通过 Amazon SES 配置发送电子邮件？**下，选择**否 -使用 Cognito（默认）**。

1. 当您完成设置您的电子邮件账户选项时，选择**保存更改**。

**使用 IAM 手动删除服务关联角色**

使用 IAM 控制台 AWS CLI、或 AWS API 删除 AmazonCognitoIdp 或 AmazonCognitoIdpEmailService 与服务相关的角色。有关更多信息，请参阅 *IAM 用户指南*中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Amazon Cognito 服务相关角色支持的区域
<a name="slr-regions"></a>

Amazon Cognito 在所有提供服务 AWS 区域 的地方都支持与服务相关的角色。有关更多信息，请参阅[AWS 区域 和端点](https://docs.aws.amazon.com/general/latest/gr/rande.html#cognito_identity_region)。