

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

# 管理 ElastiCache 资源访问权限概述
<a name="IAM.Overview"></a>

每个AWS资源都归一个AWS账户所有，创建或访问资源的权限受权限策略的约束。账户管理员可以向 IAM 身份（即：用户、组和角色）附加权限策略。此外，Amazon ElastiCache 还支持为资源附加权限策略。

**注意**  
*账户管理员*（或管理员用户）是具有管理员权限的用户。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 最佳实操](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

要提供访问权限，请为您的用户、组或角色添加权限：
+ 中的用户和群组AWS IAM Identity Center：

  创建权限集合。按照《AWS IAM Identity Center用户指南》**中[创建权限集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)的说明进行操作。
+ 通过身份提供商在 IAM 中托管的用户：

  创建适用于身份联合验证的角色。按照《IAM 用户指南》**中[针对第三方身份提供商创建角色（联合身份验证）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)的说明进行操作。
+ IAM 用户：
  + 创建您的用户可以担任的角色。按照《IAM 用户指南》**中[为 IAM 用户创建角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)的说明进行操作。
  + （不推荐使用）将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》**中[向用户添加权限（控制台）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)中的说明进行操作。

**Topics**
+ [Amazon ElastiCache 资源和运营](#IAM.Overview.ResourcesAndOperations)
+ [了解资源所有权](#access-control-resource-ownership)
+ [管理对 资源的访问](#IAM.Overview.ManagingAccess)
+ [AWS Amazon 的托管政策 ElastiCache](IAM.IdentityBasedPolicies.PredefinedPolicies.md)
+ [使用适用于亚马逊的基于身份的政策（IAM 策略） ElastiCache](IAM.IdentityBasedPolicies.md)
+ [资源级权限](IAM.ResourceLevelPermissions.md)
+ [使用条件键](IAM.ConditionKeys.md)
+ [将服务相关角色用于 Amazon ElastiCache](using-service-linked-roles.md)
+ [ElastiCache API 权限：操作、资源和条件参考](IAM.APIReference.md)

## Amazon ElastiCache 资源和运营
<a name="IAM.Overview.ResourcesAndOperations"></a>

要查看 ElastiCache 资源类型及其列表 ARNs，请参阅《*服务授权参考*》 ElastiCache中的 [Amazon 定义的资源](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticache.html#amazonelasticache-resources-for-iam-policies)。要了解您可以使用哪些操作来指定每种资源的 ARN，请参阅 [Amazon 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticache.html#amazonelasticache-actions-as-permissions)。 ElastiCache

## 了解资源所有权
<a name="access-control-resource-ownership"></a>

*资源所有者*是创建资源的AWS账户。也就是说，资源所有者是对创建资源的请求进行身份验证的委托人实体的AWS账户。*委托人实体*可以是根账户、IAM 用户或 IAM 角色。以下示例说明了它的工作原理：
+ 假设您使用账户的根账户凭证创建缓存集群。AWS在这种情况下，您的AWS账户就是资源的所有者。在中 ElastiCache，资源是群集。
+ 假设您在AWS账户中创建了一个 IAM 用户，并向该用户授予创建集群的权限。在这种情况下，用户可以创建集群。但是，该用户所属的您的AWS账户拥有群集资源。
+ 假设您在AWS账户中创建了一个拥有创建集群权限的 IAM 角色。在这种情况下，任何可以代入该角色的人都可以创建集群。该角色所属的您的AWS账户拥有缓存群集资源。

## 管理对 资源的访问
<a name="IAM.Overview.ManagingAccess"></a>

*权限策略*规定谁可以访问哪些内容。下一节介绍创建权限策略时的可用选项。

**注意**  
本节讨论在 Amazon 环境中使用 IAM ElastiCache。这里不提供有关 IAM 服务的详细信息。有关完整的 IAM 文档，请参阅《IAM 用户指南》中的[什么是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。有关 IAM 策略语法和说明的信息，请参阅《IAM 用户指南》中的 [AWS IAM 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

附加到 IAM 身份的策略称为*基于身份*的策略（IAM 策略）。附加到资源的策略称为*基于资源的策略*。

**Topics**
+ [基于身份的策略（IAM 策略）](#IAM.Overview.ManagingAccess.IdentityBasedPolicies)
+ [指定策略元素：操作、效果、资源和主体](#IAM.Overview.PolicyElements)
+ [在策略中指定条件](#IAM.Overview.Conditions)

### 基于身份的策略（IAM 策略）
<a name="IAM.Overview.ManagingAccess.IdentityBasedPolicies"></a>

您可以向 IAM 身份附加策略。例如，您可以执行以下操作：
+ **向您账户中的用户或组附加权限策略** – 账户管理员可以使用与特定用户关联的权限策略来授予权限。在这种情况下，该用户拥有创建 ElastiCache 资源（例如群集、参数组或安全组）的权限。
+ **向角色附加权限策略（授予跨账户权限）** – 您可以向 IAM 角色附加基于身份的权限策略，以授予跨账户的权限。例如，账户 A 中的管理员可以创建一个角色来向另一个AWS账户（例如账户 B）或AWS服务授予跨账户权限，如下所示：

  1. 账户 A 管理员可以创建一个 IAM 角色，然后向该角色附加授予其访问账户 A 中资源的权限策略。

  1. 账户 A 管理员可以把信任策略附加至用来标识账户 B 的角色，账户 B 由此可以作为主体代入该角色。

  1. 然后，账户 B 管理员可以将代入该角色的权限委托给账户 B 中的任何用户。这样，账户 B 中的用户就可以创建或访问账户 A 中的资源。在某些情况下，您可能需要向AWS服务授予代入该角色的权限。为支持此方法，信任策略中的委托人也可以是AWS服务委托人。

  有关使用 IAM 委托权限的更多信息，请参阅《IAM 用户指南》**中的[访问权限管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。

以下是允许用户对您的AWS账户执行`DescribeCacheClusters`操作的策略示例。 ElastiCache 还支持使用 API 操作的资源 ARNs 来识别特定资源。（此方法也称为资源级权限。） 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeCacheClusters",
            "Effect": "Allow",
            "Action": [
                "elasticache:DescribeCacheClusters"
            ],
            "Resource": "arn:aws:iam::*:role/*"
        }
    ]
}
```

------

有关将基于身份的策略与配合使用的更多信息 ElastiCache，请参阅。[使用适用于亚马逊的基于身份的政策（IAM 策略） ElastiCache](IAM.IdentityBasedPolicies.md)有关用户、组、角色和权限的更多信息，请参阅 *IAM 用户指南*中的[身份（用户、组和角色）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)。

### 指定策略元素：操作、效果、资源和主体
<a name="IAM.Overview.PolicyElements"></a>

对于每个 Amazon ElastiCache 资源（参见[Amazon ElastiCache 资源和运营](#IAM.Overview.ResourcesAndOperations)），该服务都定义了一组 API 操作（参见[操作](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_Operations.html)）。要授予这些 API 操作的权限，请 ElastiCache 定义一组可在策略中指定的操作。例如，对于 ElastiCache群集资源，定义了以下操作：`CreateCacheCluster``DeleteCacheCluster`、和`DescribeCacheCluster`。执行一个 API 操作可能需要多个操作的权限。

以下是最基本的策略元素：
+ **资源**：在策略中，您可以使用 Amazon Resource Name（ARN）标识策略应用到的资源。有关更多信息，请参阅 [Amazon ElastiCache 资源和运营](#IAM.Overview.ResourcesAndOperations)。
+ **操作** – 您可以使用操作关键字标识要允许或拒绝的资源操作。例如，根据指定的权限`Effect`，该`elasticache:CreateCacheCluster`权限允许或拒绝用户执行 Amazon ElastiCache `CreateCacheCluster` 操作的权限。
+ **效果**：您可以指定当用户请求特定操作（可以是允许或拒绝）时的效果。如果没有显式授予（允许）对资源的访问权限，则隐式拒绝访问。您也可显式拒绝对资源的访问。例如，您可以执行此操作，以确保用户无法访问资源，即使有其他策略授予了访问权限也是如此。
+ **主体** – 在基于身份的策略（IAM 策略）中，附加了策略的用户是隐式主体。对于基于资源的策略，您可以指定要接收权限的用户、账户、服务或其他实体（仅适用于基于资源的策略）。

有关 IAM 策略语法和描述的更多信息，请参阅《IAM 用户指南》**中的 [AWS IAM 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

有关显示所有 Amazon ElastiCache API 操作的表格，请参阅[ElastiCache API 权限：操作、资源和条件参考](IAM.APIReference.md)。

### 在策略中指定条件
<a name="IAM.Overview.Conditions"></a>

当您授予权限时，可使用 IAM 策略语言来指定规定策略何时生效的条件。例如，您可能希望策略仅在特定日期后应用。有关使用策略语言指定条件的更多信息，请参阅《IAM 用户指南》**中的[条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition)。

要表示条件，您可以使用预定义的条件键。要使用 ElastiCache特定条件键，请参阅[使用条件键](IAM.ConditionKeys.md)。您可以根据需要使用AWS范围内的条件键。有关AWS范围密钥的完整列表，请参阅 *IAM 用户指南*中的[条件可用密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。



# AWS Amazon 的托管政策 ElastiCache
<a name="IAM.IdentityBasedPolicies.PredefinedPolicies"></a>





AWS托管策略是由创建和管理的独立策略AWS。AWS托管策略旨在为许多常见用例提供权限，以便您可以开始为用户、组和角色分配权限。

请记住，AWS托管策略可能不会为您的特定用例授予最低权限权限，因为它们可供所有AWS客户使用。我们建议通过定义特定于使用案例的[客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)来进一步减少权限。

您无法更改AWS托管策略中定义的权限。如果AWS更新AWS托管策略中定义的权限，则更新会影响该策略所关联的所有委托人身份（用户、组和角色）。AWS最有可能在启动新的 API 或现有服务可以使用新AWS 服务的 API 操作时更新AWS托管策略。

有关更多信息，请参阅《IAM 用户指南》**中的 [AWS托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。













## AWS托管策略： ElastiCacheServiceRolePolicy
<a name="security-iam-awsmanpol-ElastiCacheServiceRolePolicy"></a>

您无法附加 ElastiCacheServiceRolePolicy 到您的 IAM 实体。此策略附加到允许代表您执行操作 ElastiCache 的服务相关角色。

此政策 ElastiCache 允许在必要时代表您管理AWS资源，以管理您的缓存：
+ `ec2`— 管理要连接到缓存节点的 EC2 网络资源，包括 VPC 终端节点（用于无服务器缓存）、弹性网络接口 (ENIs)（用于基于节点的集群）和安全组。
+ `cloudwatch`— 将指标数据从服务发送到。 CloudWatch
+ `outposts`— 允许在AWS Outposts 上创建缓存节点。

您可以在 [ElastiCacheServiceRolePolicy](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/ElastiCacheServiceRolePolicy)IAM 控制台和*AWS托管策略参考指南[ElastiCacheServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ElastiCacheServiceRolePolicy.html)中找到该策略*。

## AWS托管策略： AmazonElastiCacheFullAccess
<a name="security-iam-awsmanpol-AmazonElastiCacheFullAccess"></a>

您可以将 `AmazonElastiCacheFullAccess` 策略附加到 IAM 身份。

此策略允许委托人 ElastiCache 使用AWS管理控制台进行完全访问：
+ `elasticache`— 访问全部 APIs。
+ `iam`：创建服务操作所需的服务相关角色。
+ `ec2`— 描述创建缓存所需的依赖 EC2 资源（VPC、子网、安全组），并允许创建 VPC 终端节点（用于无服务器缓存）。
+ `kms`— 允许使用客户管理 CMKs 的。 encryption-at-rest
+ `cloudwatch`— 允许访问指标以在控制台中显示 ElastiCache 指标。
+ `application-autoscaling`：允许访问权限，以便描述缓存的自动缩放策略。
+ `logs`：用于填充日志流，以便在控制台中使用日志传输功能。
+ `firehose` – 用于填充传输送流，以便在控制台中使用日志传输功能。
+ `s3`：用于填充 S3 存储桶，以便在控制台中使用快照还原功能。
+ `outposts`— 用于填充 Outpo AWS sts 以便在控制台中创建缓存。
+ `sns`：用于填充 SNS 主题，以便在控制台中使用通知功能。

您可以在 [AmazonElastiCacheFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonElastiCacheFullAccess)IAM 控制台和*AWS托管策略参考指南[AmazonElastiCacheFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElastiCacheFullAccess.html)中找到该策略*。

## AWS托管策略： AmazonElastiCacheReadOnlyAccess
<a name="security-iam-awsmanpol-AmazonElastiCacheReadOnlyAccess"></a>

您可以将 `AmazonElastiCacheReadOnlyAccess` 策略附加到 IAM 身份。

此策略允许委托人 ElastiCache 使用AWS管理控制台进行只读访问：
+ `elasticache`— 访问权限为只读`Describe` APIs。

您可以在 [AmazonElastiCacheReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonElastiCacheReadOnlyAccess)IAM 控制台和*AWS托管策略参考指南[AmazonElastiCacheReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElastiCacheReadOnlyAccess.html)中找到该策略*。

## ElastiCache AWS托管策略的更新
<a name="security-iam-awsmanpol-updates"></a>

查看 ElastiCache 自该服务开始跟踪这些更改以来AWS托管策略更新的详细信息。要获得有关此页面变更的自动提醒，请订阅 “ ElastiCache 文档历史记录” 页面上的 RSS feed。




| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
|  [AmazonElastiCacheFullAccess](#security-iam-awsmanpol-AmazonElastiCacheFullAccess)：对现有策略的更新  |  ElastiCache 为 MemCached操作添加了允许垂直缩放的新权限`elasticache:ModifyCacheCluster`。  | 2025 年 3 月 27 日 | 
|  [AmazonElastiCacheFullAccess](#security-iam-awsmanpol-AmazonElastiCacheFullAccess)：对现有策略的更新  |  ElastiCache 添加了新的权限以允许管理无服务器缓存，并允许通过控制台使用所有服务功能。  | 2023 年 11 月 27 日 | 
|  [ElastiCacheServiceRolePolicy](#security-iam-awsmanpol-ElastiCacheServiceRolePolicy)：对现有策略的更新  |  ElastiCache 添加了新的权限以允许管理无服务器缓存资源的 VPC 终端节点。  | 2023 年 11 月 27 日 | 
|  ElastiCache 开始跟踪更改  |  ElastiCache 开始跟踪其AWS托管策略的更改。  | 2020 年 2 月 7 日 | 

# 使用适用于亚马逊的基于身份的政策（IAM 策略） ElastiCache
<a name="IAM.IdentityBasedPolicies"></a>

本主题提供了基于身份的策略的示例，在这些策略中，账户管理员可以向 IAM 身份（即：用户、组和角色）附加权限策略。

**重要**  
我们建议您先阅读解释基本概念和管理 Amazon ElastiCache 资源访问权限的选项的主题。有关更多信息，请参阅 [管理 ElastiCache 资源访问权限概述](IAM.Overview.md)。

本主题的各个部分涵盖以下内容：
+ [AWS Amazon 的托管政策 ElastiCache](IAM.IdentityBasedPolicies.PredefinedPolicies.md)
+ [客户管理型策略示例](#IAM.IdentityBasedPolicies.CustomerManagedPolicies)

下面展示了使用 Redis OSS 时的权限策略示例。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowClusterPermissions",
            "Effect": "Allow",
            "Action": [
                "elasticache:CreateServerlessCache",
                "elasticache:CreateCacheCluster",
                "elasticache:DescribeServerlessCaches",
                "elasticache:DescribeReplicationGroups",
                "elasticache:DescribeCacheClusters",
                "elasticache:ModifyServerlessCache",
                "elasticache:ModifyReplicationGroup",
                "elasticache:ModifyCacheCluster"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUserToPassRole",
            "Effect": "Allow",
            "Action": [ "iam:PassRole" ],
            "Resource": "arn:aws:iam::123456789012:role/EC2-roles-for-cluster"
        }
    ]
}
```

------

下面展示了使用 Memcached 时的权限策略示例。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "AllowClusterPermissions",
        "Effect": "Allow",
        "Action": [
            "elasticache:CreateServerlessCache",
            "elasticache:CreateCacheCluster",
            "elasticache:DescribeServerlessCaches",
            "elasticache:DescribeCacheClusters",
            "elasticache:ModifyServerlessCache",
            "elasticache:ModifyCacheCluster"
        ],
        "Resource": "*"
    },
    {
        "Sid": "AllowUserToPassRole",
        "Effect": "Allow",
        "Action": [ "iam:PassRole" ],
        "Resource": "arn:aws:iam::123456789012:role/EC2-roles-for-cluster"
    }
    ]
}
```

------

该策略包含两条语句：
+ 第一条语句授予对 Amazon ElastiCache 操作的权限（`elasticache:Create*`、`elasticache:Describe*`、`elasticache:Modify*`） 
+ 第二条语句授予对 `Resource` 值末尾指定的 IAM 角色名称的 IAM 操作（`iam:PassRole`）的权限。

该策略不指定 `Principal` 元素，因为在基于身份的策略中，您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色附加权限策略后，该角色的信任策略中标识的主体将获取权限。

有关显示所有 Amazon ElastiCache API 操作及其适用的资源的表格，请参阅[ElastiCache API 权限：操作、资源和条件参考](IAM.APIReference.md)。

## 客户管理型策略示例
<a name="IAM.IdentityBasedPolicies.CustomerManagedPolicies"></a>

如果您未使用默认策略并选择使用自定义托管策略，请确保以下两项之一。您应该有权调用 `iam:createServiceLinkedRole`（有关更多信息，请参阅[示例 4：允许用户调用 IAM CreateServiceLinkedRole API](#create-service-linked-role-policy)）。或者你应该已经创建了一个 ElastiCache 与服务相关的角色。

与使用 Amazon ElastiCache 控制台所需的最低权限相结合，本节中的示例策略将授予额外权限。这些示例也与AWS SDKs 和有关AWS CLI。

有关设置 IAM 用户和组的说明，请参阅 *IAM 用户指南*中的[创建您的第一个 IAM 用户和管理员组](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)。

**重要**  
在生产中使用 IAM 策略之前，请始终全面测试这些策略。在您使用 ElastiCache 控制台时，某些 ElastiCache 看似简单的操作可能需要其他操作来支持它们。例如，`elasticache:CreateCacheCluster`授予创建 ElastiCache 集群的权限。但是，为了执行此操作， ElastiCache 控制台使用许多`Describe`和`List`操作来填充控制台列表。

**Topics**
+ [示例 1：允许用户对 ElastiCache 资源进行只读访问](#example-allow-list-current-elasticache-resources)
+ [示例 2：允许用户执行常见的 ElastiCache 系统管理员任务](#example-allow-specific-elasticache-actions)
+ [示例 3：允许用户访问所有 ElastiCache API 操作](#allow-unrestricted-access)
+ [示例 4：允许用户调用 IAM CreateServiceLinkedRole API](#create-service-linked-role-policy)
+ [示例 5：允许用户使用 IAM 身份验证连接到无服务器缓存](#iam-connect-policy)

### 示例 1：允许用户对 ElastiCache 资源进行只读访问
<a name="example-allow-list-current-elasticache-resources"></a>

以下策略授予允许用户列出资源的权限 ElastiCache 操作。通常，您将此类型的权限策略挂载到管理人员组。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[{
      "Sid": "ECReadOnly",
      "Effect":"Allow",
      "Action": [
          "elasticache:Describe*",
          "elasticache:List*"],
      "Resource":"*"
      }
   ]
}
```

------

### 示例 2：允许用户执行常见的 ElastiCache 系统管理员任务
<a name="example-allow-specific-elasticache-actions"></a>

常见的系统管理员任务包括修改资源。系统管理员还可能需要获得有关 ElastiCache 事件的信息。以下策略向用户授予执行这些常见系统管理员任务的 ElastiCache 操作的权限。通常，您将此类型的权限策略挂载到系统管理员组。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[{
      "Sid": "ECAllowMutations",
      "Effect":"Allow",
      "Action":[
          "elasticache:Modify*",
          "elasticache:Describe*",
          "elasticache:ResetCacheParameterGroup"
      ],
      "Resource":"*"
      }
   ]
}
```

------

### 示例 3：允许用户访问所有 ElastiCache API 操作
<a name="allow-unrestricted-access"></a>

以下策略允许用户访问所有 ElastiCache 操作。建议您仅向管理员用户授予此类型的权限策略。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[{
      "Sid": "ECAllowAll",
      "Effect":"Allow",
      "Action":[
          "elasticache:*" 
      ],
      "Resource":"*"
      }
   ]
}
```

------

### 示例 4：允许用户调用 IAM CreateServiceLinkedRole API
<a name="create-service-linked-role-policy"></a>

以下策略允许用户调用 IAM `CreateServiceLinkedRole` API。我们建议您向调用变异 ElastiCache 操作的用户授予此类权限策略。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"CreateSLRAllows",
      "Effect":"Allow",
      "Action":[
        "iam:CreateServiceLinkedRole"
      ],
      "Resource":"*",
      "Condition":{
        "StringLike":{
        "iam:AWSServiceName":"elasticache.amazonaws.com"
        }
      }
    }
  ]
}
```

------

### 示例 5：允许用户使用 IAM 身份验证连接到无服务器缓存
<a name="iam-connect-policy"></a>

以下策略允许任何用户在 2023 年 4 月 1 日到 2023 年 6 月 30 日之间，使用 IAM 身份验证连接到任何无服务器缓存。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" :
  [
    {
      "Effect" : "Allow",
      "Action" : ["elasticache:Connect"],
      "Resource" : [
        "arn:aws:elasticache:us-east-1:123456789012:serverlesscache:*"
      ],
      "Condition": {
        "DateGreaterThan": {"aws:CurrentTime": "2023-04-01T00:00:00Z"},
        "DateLessThan": {"aws:CurrentTime": "2023-06-30T23:59:59Z"}
      }
    },
    {
      "Effect" : "Allow",
      "Action" : ["elasticache:Connect"],
      "Resource" : [
        "arn:aws:elasticache:us-east-1:123456789012:user:*"
      ]
    }
  ]
}
```

------

# 资源级权限
<a name="IAM.ResourceLevelPermissions"></a>

您可以通过在 IAM policy 中指定资源来限制权限范围。多数 ElastiCache API 操作均支持根据操作行为而有所不同的资源类型。每条 IAM policy 语句为对一个资源执行的一个操作授予权限。如果操作不对指定资源执行操作，或者您授予对所有资源执行操作的权限，则策略中资源的值为通配符（\$1）。对于许多 API 操作，可以通过指定资源的 Amazon 资源名称（ARN）或与多个资源匹配的 ARN 模式来限制用户可修改的资源。要按资源限制权限，请指定资源的 ARN。

有关 ElastiCache 资源类型及其 ARN 的列表，请参阅《服务授权参考》**中的 [Amazon ElastiCache 定义的资源](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticache.html#amazonelasticache-resources-for-iam-policies)。要了解您可以使用哪些操作指定每个资源的 ARN，请参阅 [Amazon ElastiCache 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticache.html#amazonelasticache-actions-as-permissions)。

**Topics**
+ [示例 1：允许用户完全访问特定 ElastiCache 资源类型](#example-allow-list-current-elasticache-resources-resource)
+ [示例 2：拒绝用户访问无服务器缓存。](#example-allow-specific-elasticache-actions-resource)

## 示例 1：允许用户完全访问特定 ElastiCache 资源类型
<a name="example-allow-list-current-elasticache-resources-resource"></a>

以下策略明确允许无服务器缓存类型的所有资源。

```
{
        "Sid": "Example1",
        "Effect": "Allow",
        "Action": "elasticache:*",
        "Resource": [
             "arn:aws:elasticache:us-east-1:account-id:serverlesscache:*"
        ]
}
```

## 示例 2：拒绝用户访问无服务器缓存。
<a name="example-allow-specific-elasticache-actions-resource"></a>

以下示例明确拒绝访问特定无服务器缓存。

```
{
        "Sid": "Example2",
        "Effect": "Deny",
        "Action": "elasticache:*",
        "Resource": [
            "arn:aws:elasticache:us-east-1:account-id:serverlesscache:name"
        ]
}
```

# 使用条件键
<a name="IAM.ConditionKeys"></a>

您可以指定决定 IAM 策略如何生效的条件。在中 ElastiCache，您可以使用 JSON 策略的`Condition`元素将请求上下文中的密钥与您在策略中指定的密钥值进行比较。有关更多信息，请参阅 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

要查看 ElastiCache 条件密钥列表，请参阅《*服务授权参考*》 ElastiCache中的 [Amazon 条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticache.html#amazonelasticache-policy-keys)。

有关全局条件键的列表，请参阅 [AWS全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

** ElastiCache 与AWS全局条件键一起使用**

当使用需要 ElastiCache的 “[主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)” 的[AWS全局条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)时，请使用*同时*包含主体:`elasticache.amazonaws.com`和`ec.amazonaws.com`的`OR`条件。

**注意**  
如果您不同时为其添加两个委托人 ElastiCache，则无法对策略中列出的任何资源正确执行预期的 “允许” 或 “拒绝” 操作。

 带有 `aws:CalledVia` 全局条件键的策略示例：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:*", 
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringLike": {
          "aws:CalledVia": [
            "ec.amazonaws.com",
            "elasticache.amazonaws.com"
          ]
        }
      }
    }
  ]
}
```

------

## 指定条件：使用条件键
<a name="IAM.SpecifyingConditions"></a>

要实现精细控制，您需要编写 IAM 权限策略，用于指定控制某些请求上单独参数集的条件。然后，将该策略应用于您使用 IAM 控制台创建的 IAM 用户、组或角色。

要应用条件，请将条件信息添加到 IAM policy 语句。在以下示例中，您指定了条件，为创建的所有基于节点的集群使用节点类型 `cache.r5.large`。

**注意**  
要使用 `String` 类型的条件键构造 `Condition` 元素，请使用不区分大小写的条件运算符 `StringEqualsIgnoreCase` 或 `StringNotEqualsIgnoreCase` 将键与字符串值进行比较。
ElastiCache 以不区分大小写的方式处理`CacheNodeType`和`CacheParameterGroupName`的输入参数。因此，在引用这些参数的权限策略中，应使用字符串条件运算符 `StringEqualsIgnoreCase` 和 `StringNotEqualsIgnoreCase`。

下面展示了使用 Valkey 或 Redis OSS 时的权限策略示例。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticache:CreateCacheCluster",
                "elasticache:CreateReplicationGroup"
            ],
            "Resource": [
                "arn:aws:elasticache:*:*:parametergroup:*",
                "arn:aws:elasticache:*:*:subnetgroup:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticache:CreateCacheCluster",
                "elasticache:CreateReplicationGroup"
            ],
            "Resource": [
                "arn:aws:elasticache:*:*:cluster:*",
                "arn:aws:elasticache:*:*:replicationgroup:*"
            ],
            "Condition": {
                "StringEquals": {
                    "elasticache:CacheNodeType": [
                        "cache.r5.large"
                    ]
                }
            }
        }
    ]
}
```

------

下面展示了使用 Memcached 时的权限策略示例。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticache:CreateCacheCluster"
            ],
            "Resource": [
                "arn:aws:elasticache:*:*:parametergroup:*",
                "arn:aws:elasticache:*:*:subnetgroup:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticache:CreateCacheCluster"
            ],
            "Resource": [
                "arn:aws:elasticache:*:*:cluster:*"
            ],
            "Condition": {
                "StringEquals": {
                    "elasticache:CacheNodeType": [
                        "cache.r5.large"
                    ]
                }
            }
        }
    ]
}
```

------

有关更多信息，请参阅 [为资源添加 ElastiCache 标签](Tagging-Resources.md)。

有关使用策略条件运算符的更多信息，请参阅 [ElastiCache API 权限：操作、资源和条件参考](IAM.APIReference.md)。

## 策略示例：使用条件实现精细参数控制
<a name="IAM.ExamplePolicies"></a>

本节显示了对前面列出的 ElastiCache 参数实施细粒度访问控制的策略示例。

1. **elasticacheMaximumDataStorage:**: 指定无服务器缓存的最大数据存储空间。使用提供的条件，客户不能创建存储超过特定数量数据的缓存。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowDependentResources",
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateServerlessCache"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:serverlesscachesnapshot:*",
                   "arn:aws:elasticache:*:*:snapshot:*",
                   "arn:aws:elasticache:*:*:usergroup:*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateServerlessCache"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:serverlesscache:*"
               ],
               "Condition": {
                   "NumericLessThanEquals": {
                       "elasticache:MaximumDataStorage": "30"
                   },
                   "StringEquals": {
                       "elasticache:DataStorageUnit": "GB"
                   }
               }
           }
       ]
   }
   ```

------

1. **ElastiCache: 最大ECPUPer秒数**：指定无服务器缓存每秒的最大 ECPU 值。根据提供的条件，客户无法创建 ECPUs 每秒执行次数超过特定次数的缓存。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowDependentResources",
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateServerlessCache"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:serverlesscachesnapshot:*",
                   "arn:aws:elasticache:*:*:snapshot:*",
                   "arn:aws:elasticache:*:*:usergroup:*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateServerlessCache"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:serverlesscache:*"
               ],
               "Condition": {
                   "NumericLessThanEquals": {
                       "elasticache:MaximumECPUPerSecond": "100000"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheCacheNodeType:**: 指定用户可以创建哪 NodeType些。使用提供的条件，客户可以为节点类型指定单个值或范围值。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "elasticache:CacheNodeType": [
                           "cache.t2.micro",
                           "cache.t2.medium"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheCacheNodeType:**: 使用 Memcached，指定用户可以创建哪 NodeType些。使用提供的条件，客户可以为节点类型指定单个值或范围值。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "elasticache:CacheNodeType": [
                           "cache.t2.micro",
                           "cache.t2.medium"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheNumNodeGroups:**: 创建节点组少于 20 个的复制组。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
               	"elasticache:CreateReplicationGroup"
               ],
               "Resource": [
               	"arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "NumericLessThanEquals": {
                       "elasticache:NumNodeGroups": "20"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheReplicasPerNodeGroup:**: 指定每个节点的副本数在 5 到 10 之间。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "NumericGreaterThanEquals": {
                       "elasticache:ReplicasPerNodeGroup": "5"
                   },
                   "NumericLessThanEquals": {
                       "elasticache:ReplicasPerNodeGroup": "10"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticache:EngineVersion:** 指定引擎版本 5.0.6 的用法。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
        {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
              "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "elasticache:EngineVersion": "5.0.6"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticache:EngineVersion:** 指定 Memcached 引擎版本 1.6.6 的用法

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
        {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "elasticache:EngineVersion": "1.6.6"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticache:EngineType:** 仅使用 Valkey 或 Redis OSS 引擎进行指定。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "elasticache:EngineType": "redis"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheAtRestEncryptionEnabled:**: 指定只有在启用加密的情况下才能创建复制组。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
   
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "Bool": {
                       "elasticache:AtRestEncryptionEnabled": "true"
                   }
               }
           }
       ]
   }
   ```

------

1. **弹性疼痛:TransitEncryptionEnabled**

   1. 将[CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)操作的`elasticache:TransitEncryptionEnabled`条件键设置为，以指定只有在不使用 TLS 时才能创建复制组：`false`

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "elasticache:CreateReplicationGroup"
                  ],
                  "Resource": [
                      "arn:aws:elasticache:*:*:parametergroup:*",
                      "arn:aws:elasticache:*:*:subnetgroup:*"
                  ]
              },
      
              {
                  "Effect": "Allow",
                  "Action": [
                      "elasticache:CreateReplicationGroup"
                  ],
                  "Resource": [
                      "arn:aws:elasticache:*:*:replicationgroup:*"
                  ],
                  "Condition": {
                      "Bool": {
                          "elasticache:TransitEncryptionEnabled": "false"
                      }
                  }
              }
          ]
      }
      ```

------

      在[CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)操作策略`false`中将`elasticache:TransitEncryptionEnabled`条件键设置为时，只有在未使用 TLS 的情况下（也就是说，请求中不包含设置为的`TransitEncryptionEnabled`参数`true`或设置为的`TransitEncryptionMode`参数），才允许请求`required`。`CreateReplicationGroup`

   1. 将[CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)操作`elasticache:TransitEncryptionEnabled`的条件键设置为，以指定只有在使用 TLS 时才能创建复制组：`true`

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "elasticache:CreateReplicationGroup"
                  ],
                  "Resource": [
                      "arn:aws:elasticache:*:*:parametergroup:*",
                      "arn:aws:elasticache:*:*:subnetgroup:*"
                  ]
              },
      
              {
                  "Effect": "Allow",
                  "Action": [
                      "elasticache:CreateReplicationGroup"
                  ],
                  "Resource": [
                      "arn:aws:elasticache:*:*:replicationgroup:*"
                  ],
                  "Condition": {
                      "Bool": {
                          "elasticache:TransitEncryptionEnabled": "true"
                      }
                  }
              }
          ]
      }
      ```

------

      在[CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)操作策略`true`中将`elasticache:TransitEncryptionEnabled`条件键设置为时，只有在`CreateReplicationGroup`请求中包含设置为的参数`true`和设置为的`TransitEncryptionEnabled`参数时，`TransitEncryptionMode`才允许请求`required`。

   1. 针对 `ModifyReplicationGroup` 操作将 `elasticache:TransitEncryptionEnabled` 设置为 `true`，以指定只有在使用 TLS 时才能修改复制组：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [               
                      "elasticache:ModifyReplicationGroup"
                  ],
                  "Resource": [               
                      "arn:aws:elasticache:*:*:replicationgroup:*"
                  ],
                  "Condition": {
                      "BoolIfExists": {
                          "elasticache:TransitEncryptionEnabled": "true"
                      }
                  }
              }
          ]
      }
      ```

------

      在[ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)操作策略`true`中将`elasticache:TransitEncryptionEnabled`条件键设置为时，只有当`ModifyReplicationGroup`请求包含设置为的`TransitEncryptionMode`参数时，才允许请求`required`。也可以选择包含设置为 `true` 的 `TransitEncryptionEnabled` 参数，但在这种情况下，该设置并不是启用 TLS 所必需的。

1. **elasticacheAutomaticFailoverEnabled:**: 指定只有在启用自动故障转移的情况下才能创建复制组。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "Bool": {
                       "elasticache:AutomaticFailoverEnabled": "true"
                   }
               }
           }
       ]
   }
   ```

------

1. **ElastiCache: Multi AZEnabled**：指定在禁用多可用区的情况下无法创建复制组。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
           {
               "Effect": "Deny",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "Bool": {
                       "elasticache:MultiAZEnabled": "false"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheClusterModeEnabled:**: 指定只有在启用集群模式的情况下才能创建复制组。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "Bool": {
                       "elasticache:ClusterModeEnabled": "true"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheAuthTokenEnabled:**: 指定只有在启用身份验证令牌的情况下才能创建复制组。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
   
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "Bool": {
                       "elasticache:AuthTokenEnabled": "true"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheSnapshotRetentionLimit:**: 指定保存快照的天数（或最小/最大）。以下策略强制将备份存储至少 30 天。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
   
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup",
                   "elasticache:CreateServerlessCache"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*",
                   "arn:aws:elasticache:*:*:serverlesscache:*"
               ],
               "Condition": {
                   "NumericGreaterThanEquals": {
                       "elasticache:SnapshotRetentionLimit": "30"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticache:KmsKeyId:** 指定客户托管的AWS KMS 密钥的使用情况。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
           "Sid": "AllowDependentResources",
           "Effect": "Allow",
           "Action": [
               "elasticache:CreateServerlessCache"
           ],
           "Resource": [
               "arn:aws:elasticache:*:*:serverlesscachesnapshot:*",
               "arn:aws:elasticache:*:*:snapshot:*",
               "arn:aws:elasticache:*:*:usergroup:*"
           ]
       },
       {
           "Effect": "Allow",
           "Action": [
               "elasticache:CreateServerlessCache"
           ],
           "Resource": [
               "arn:aws:elasticache:*:*:serverlesscache:*"
           ],
           "Condition": {
               "StringEquals": {
                   "elasticache:KmsKeyId": "my-key"
               }
           }
       }
     ]
   }
   ```

------

1. **elasticacheCacheParameterGroupName:**: 指定一个非默认参数组，其中包含来自集群上某个组织的特定参数。您还可以为参数组指定命名模式，或阻止删除特定参数组名称。以下是限制仅使用 “my-org-param-group” 的示例。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
   
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:CreateReplicationGroup"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "elasticache:CacheParameterGroupName": "my-org-param-group"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheCacheParameterGroupName:**: 使用 Memcached，使用集群上来自组织的特定参数来指定一个非默认参数组。您还可以为参数组指定命名模式，或阻止删除特定参数组名称。以下是限制仅使用 “my-org-param-group” 的示例。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
   
            {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*"
               ]
           },
   
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "elasticache:CacheParameterGroupName": "my-org-param-group"
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticacheCreateCacheCluster:**: 如果请求标签`Project`缺失或不等于`Dev`、`QA`或，则拒绝`CreateCacheCluster`执行操作。`Prod`

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
             {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*",
                   "arn:aws:elasticache:*:*:securitygroup:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ]
           },
           {
               "Effect": "Deny",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*"
               ],
               "Condition": {
                   "Null": {
                       "aws:RequestTag/Project": "true"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:AddTagsToResource"
               ],
               "Resource": "arn:aws:elasticache:*:*:cluster:*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Project": [
                           "Dev",
                           "Prod",
                           "QA"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. **elasticache:CacheNodeType: 允许`CreateCacheCluster`使用 cache** .r5.large 或 `cacheNodeType` cache.r6g.4xlarge 和 tag。`Project=XYZ`

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
         "Effect": "Allow",
         "Action": [
           "elasticache:CreateCacheCluster",
           "elasticache:CreateReplicationGroup"
         ],
         "Resource": [
           "arn:aws:elasticache:*:*:parametergroup:*",
           "arn:aws:elasticache:*:*:subnetgroup:*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "elasticache:CreateCacheCluster"
         ],
         "Resource": [
           "arn:aws:elasticache:*:*:cluster:*"
         ],
         "Condition": {
           "StringEqualsIfExists": {
             "elasticache:CacheNodeType": [
               "cache.r5.large",
               "cache.r6g.4xlarge"
             ]
           },
           "StringEquals": {
             "aws:RequestTag/Project": "XYZ"
           }
         }
       }
     ]
   }
   ```

------

1. **elasticache:CacheNodeType: 允许`CreateCacheCluster`使用 cache** .r5.large 或 `cacheNodeType` cache.r6g.4xlarge 和 tag。`Project=XYZ`

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
         "Effect": "Allow",
         "Action": [
           "elasticache:CreateCacheCluster"
         ],
         "Resource": [
           "arn:aws:elasticache:*:*:parametergroup:*",
           "arn:aws:elasticache:*:*:subnetgroup:*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "elasticache:CreateCacheCluster"
         ],
         "Resource": [
           "arn:aws:elasticache:*:*:cluster:*"
         ],
         "Condition": {
           "StringEqualsIfExists": {
             "elasticache:CacheNodeType": [
               "cache.r5.large",
               "cache.r6g.4xlarge"
             ]
           },
           "StringEquals": {
             "aws:RequestTag/Project": "XYZ"
           }
         }
       }
     ]
   }
   ```

------

**注意**  
在创建策略以将标签和其他条件键一起强制执行时，由于使用 `--tags` 参数创建请求的额外 `elasticache:AddTagsToResource` 策略要求，条件键元素可能需要条件 `IfExists`。

# 将服务相关角色用于 Amazon ElastiCache
<a name="using-service-linked-roles"></a>

Amazon ElastiCache 使用 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 角色，它与 Amazon ElastiCache 等 AWS 服务直接相关。Amazon ElastiCache 服务相关角色由 Amazon ElastiCache 预定义。它们包含该服务代表您的集群调用 AWS 服务所需的一切权限。

服务相关角色可让您更轻松地设置 Amazon ElastiCache，因为您不必手动添加必要的权限。这些角色已存在于您的 AWS 账户中，但与 Amazon ElastiCache 使用案例有关并有预定义的权限。只有 Amazon ElastiCache 可以代入这些角色，并且只有这些角色可以使用预定义的权限策略。只有先删除角色的相关资源，才能删除角色。这样可以保护您的 Amazon ElastiCache 资源，因为您不会无意中删除访问资源所需的必要权限。

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

**Contents**
+ [服务相关角色权限](#service-linked-role-permissions)
  + [创建服务相关角色所需的权限](#service-linked-role-permissions)
+ [创建服务相关角色 (IAM)](#create-service-linked-role-iam)
  + [使用 IAM 控制台](#create-service-linked-role-iam-console)
  + [使用 IAM CLI](#create-service-linked-role-iam-cli)
  + [使用 IAM API](#create-service-linked-role-iam-api)
+ [编辑服务相关角色描述](#edit-service-linked-role)
  + [使用 IAM 控制台](#edit-service-linked-role-iam-console)
  + [使用 IAM CLI](#edit-service-linked-role-iam-cli)
  + [使用 IAM API](#edit-service-linked-role-iam-api)
+ [删除 Amazon ElastiCache 的服务相关角色](#delete-service-linked-role)
  + [清除服务相关角色](#service-linked-role-review-before-delete)
  + [删除服务相关角色（IAM 控制台）](#delete-service-linked-role-iam-console)
  + [删除服务相关角色（IAM CLI）](#delete-service-linked-role-iam-cli)
  + [删除服务相关角色（IAM API）](#delete-service-linked-role-iam-api)

## Amazon ElastiCache 的服务相关角色权限
<a name="service-linked-role-permissions"></a>

### 创建服务相关角色所需的权限
<a name="service-linked-role-permissions"></a>

**允许 IAM 实体创建 AWSServiceRoleForElastiCache 服务相关角色**

向该 IAM 实体的权限中添加以下策略声明：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:CreateServiceLinkedRole",
        "iam:PutRolePolicy"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/elasticache.amazonaws.com/AWSServiceRoleForElastiCache*",
    "Condition": {"StringLike": {"iam:AWSServiceName": "elasticache.amazonaws.com"}}
}
```

**允许 IAM 实体删除 AWSServiceRoleForElastiCache 服务相关角色**

向该 IAM 实体的权限中添加以下策略声明：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/elasticache.amazonaws.com/AWSServiceRoleForElastiCache*",
    "Condition": {"StringLike": {"iam:AWSServiceName": "elasticache.amazonaws.com"}}
}
```

或者，您可以使用 AWS 托管式策略提供对 Amazon ElastiCache 的完全访问权限。

## 创建服务相关角色 (IAM)
<a name="create-service-linked-role-iam"></a>

您可以使用 IAM 控制台、CLI 或 API 创建服务相关角色。

### 创建服务相关角色（IAM 控制台）
<a name="create-service-linked-role-iam-console"></a>

您可使用 IAM 控制台创建服务相关角色。

**创建服务相关角色（控制台）**

1. 登录 AWS 管理控制台，打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**。然后选择**创建新角色**。

1. 在 **Select type of trusted entity（选择受信任实体的类型）**下，选择 **AWS Service（亚马逊云科技服务）**。

1. 在 **Or select a service to view its use cases（或选择服务以查看其使用案例）**下，选择 **ElastiCache**。

1. 选择**下一步: 权限**。

1. 在 **策略名称**下，请注意此角色需要 `ElastiCacheServiceRolePolicy`。选择 **Next:Tags（下一步: 标签）**。

1. 请注意，服务相关角色不支持标签。选择**下一步: 审核**。

1. （可选）对于 **Role description**，编辑新服务相关角色的描述。

1. 检查角色，然后选择**创建角色**。

### 创建服务相关角色（IAM CLI）
<a name="create-service-linked-role-iam-cli"></a>

您可以从 AWS Command Line Interface 中使用 IAM 操作创建服务相关角色。此角色可以包括服务代入角色时所需的信任策略和内联策略。

**创建服务相关角色（CLI）**

使用以下操作：

```
$ aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name elasticache.amazonaws.com
```

### 创建服务相关角色（IAM API）
<a name="create-service-linked-role-iam-api"></a>

您可以使用 IAM API 创建服务相关角色。此角色可以包括服务代入角色时所需的信任策略和内联策略。

**创建服务相关角色（API）**

使用 [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) API 调用。在请求中，指定 `elasticache.amazonaws.com` 的服务名称。

## 编辑 Amazon ElastiCache 的服务相关角色的描述
<a name="edit-service-linked-role"></a>

Amazon ElastiCache 不允许您编辑 AWS ServiceRoleForElastiCache 服务相关角色。创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。

### 编辑服务相关角色描述（IAM 控制台）
<a name="edit-service-linked-role-iam-console"></a>

您可以使用 IAM 控制台编辑服务相关角色的描述。

**编辑服务相关角色的描述（控制台）**

1. 在 IAM 控制台的导航窗格中，选择**角色**。

1. 以下代码示例显示如何将 IAM 策略附加到用户。

1. 在 **Role description** 的最右侧，选择 **Edit**。

1. 在框中输入新描述，然后选择 **Save（保存）**。

### 编辑服务相关角色描述（IAM CLI）
<a name="edit-service-linked-role-iam-cli"></a>

您可以从 AWS Command Line Interface 使用 IAM 操作来编辑服务相关角色的描述。

**更改服务相关角色的描述（CLI）**

1. （可选）要查看角色的当前描述，请使用 AWS CLI 执行 IAM 操作 `[get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)`。  
**Example**  

   ```
   $ aws iam [get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html) --role-name AWSServiceRoleForElastiCache
   ```

   通过 CLI 操作使用角色名称（并非 ARN）指向角色。例如，如果一个角色的 ARN 为 `arn:aws:iam::123456789012:role/myrole`，则应将角色称为 **myrole**。

1. 要更新服务相关角色的描述，请使用 AWS CLI 执行 IAM 操作 `[update-role-description](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role-description.html)`。

   对于 Linux、macOS 或 Unix：

   ```
   $ aws iam [update-role-description](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role-description.html) \
       --role-name AWSServiceRoleForElastiCache \
       --description "new description"
   ```

   对于 Windows：

   ```
   $ aws iam [update-role-description](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role-description.html) ^
       --role-name AWSServiceRoleForElastiCache ^
       --description "new description"
   ```

### 编辑服务相关角色描述（IAM API）
<a name="edit-service-linked-role-iam-api"></a>

您可以使用 IAM API 编辑服务相关角色描述。

**更改服务相关角色的描述（API）**

1. （可选）要查看角色的当前描述，请使用 IAM API 操作 [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)。  
**Example**  

   ```
   https://iam.amazonaws.com/
      ?Action=[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)
      &RoleName=AWSServiceRoleForElastiCache
      &Version=2010-05-08
      &AUTHPARAMS
   ```

1. 要更新角色的描述，请使用 IAM API 操作 [UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)。  
**Example**  

   ```
   https://iam.amazonaws.com/
      ?Action=[UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)
      &RoleName=AWSServiceRoleForElastiCache
      &Version=2010-05-08
      &Description="New description"
   ```

## 删除 Amazon ElastiCache 的服务相关角色
<a name="delete-service-linked-role"></a>

如果不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能将其删除。

Amazon ElastiCache 不会删除您的服务相关角色。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete"></a>

您必须先确认该角色没有与之关联的资源（集群或复制组），然后才能使用 IAM 删除服务相关角色。

**在 IAM 控制台中检查服务相关角色是否具有活动会话**

1. 登录 AWS 管理控制台，打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**。然后选择 AWS ServiceRoleForElastiCache 角色的名称（而不是复选框）。

1. 在所选角色的**摘要**页面上，选择**访问顾问**选项卡。

1. 在**访问顾问**选项卡查看服务相关角色的近期活动。

**删除需要 AWSServiceRoleForElastiCache 的 Amazon ElastiCache 资源**
+ 要删除集群，请参阅以下内容：
  + [使用AWS 管理控制台](Clusters.Delete.md#Clusters.Delete.CON)
  + [使用AWS CLI删除集 ElastiCache 群](Clusters.Delete.md#Clusters.Delete.CLI)
  + [使用 ElastiCache API](Clusters.Delete.md#Clusters.Delete.API)
+ 要删除复制组，请参阅以下内容：
  + [删除复制组（控制台）](Replication.DeletingRepGroup.md#Replication.DeletingRepGroup.CON)
  + [删除复制组 (AWS CLI)](Replication.DeletingRepGroup.md#Replication.DeletingRepGroup.CLI)
  + [删除复制组 (ElastiCache API)](Replication.DeletingRepGroup.md#Replication.DeletingRepGroup.API)

### 删除服务相关角色（IAM 控制台）
<a name="delete-service-linked-role-iam-console"></a>

您可以使用 IAM 控制台删除服务相关角色。

**删除服务相关角色（控制台）**

1. 登录 AWS 管理控制台，打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**。然后，选中要删除的角色名称旁边的复选框，而不是名称或行本身。

1. 对于页面顶部的**角色操作**，请选择**删除角色**。

1. 在确认对话框中，查看上次访问服务数据，该数据显示每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。如果要继续，请选择 **Yes, Delete ** 以提交服务相关角色进行删除。

1. 监视 IAM 控制台通知，以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的，因此，在您提交角色进行删除后，删除任务可能成功，也可能失败。如果任务失败，您可以从通知中选择 **View details** 或 **View Resources** 以了解删除失败的原因。

### 删除服务相关角色（IAM CLI）
<a name="delete-service-linked-role-iam-cli"></a>

您可以从 AWS Command Line Interface 中使用 IAM 操作删除服务相关角色。

**删除服务相关角色（CLI）**

1. 如果您不知道要删除的服务相关角色的名称，请输入以下命令。此命令会列出您账户中的角色及其 Amazon 资源名称（ARN）。

   ```
   $ aws iam [get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html) --role-name role-name
   ```

   通过 CLI 操作使用角色名称（并非 ARN）指向角色。例如，如果某个角色具有 ARN `arn:aws:iam::123456789012:role/myrole`，则将该角色称为 **myrole**。

1. 如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `deletion-task-id` 以检查删除任务的状态。输入以下命令以提交服务相关角色的删除请求。

   ```
   $ aws iam [delete-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-linked-role.html) --role-name role-name
   ```

1. 输入以下命令以检查删除任务的状态。

   ```
   $ aws iam [get-service-linked-role-deletion-status](https://docs.aws.amazon.com/cli/latest/reference/iam/get-service-linked-role-deletion-status.html) --deletion-task-id deletion-task-id
   ```

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。

### 删除服务相关角色（IAM API）
<a name="delete-service-linked-role-iam-api"></a>

您可以使用 IAM API 删除服务相关角色。

**删除服务相关角色（API）**

1. 要提交服务相关角色的删除请求，请调用 [DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html)。在请求中，指定角色名称。

   如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `DeletionTaskId` 以检查删除任务的状态。

1. 要检查删除的状态，请调用 [GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html)。在请求中，指定 `DeletionTaskId`。

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。

# ElastiCache API 权限：操作、资源和条件参考
<a name="IAM.APIReference"></a>

在设置[访问控制](IAM.md)以及编写可附加到 IAM 策略的权限策略（基于身份或基于资源）时，可将下表作为参考。此表列出每个 Amazon ElastiCache API 操作及您可授予执行该操作的权限的对应操作。您可以在策略的 `Action` 字段中指定这些操作，并在策略的 `Resource` 字段中指定资源值。除非另有说明，否则需要该资源。某些字段同时包含必需资源和可选资源。如果没有资源 ARN，则策略中的资源为通配符 (\$1)。

您可以在 ElastiCache 策略中使用条件键来表达条件。要查看特定于 ElastiCache 的条件键的列表以及它们适用的操作和资源类型，请参阅 [使用条件键](IAM.ConditionKeys.md)。有关 AWS 范围的键的完整列表，请参阅《IAM 用户指南》**中的 [AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

**注意**  
要指定操作，请在 API 操作名称之前使用 `elasticache:` 前缀（例如，`elasticache:DescribeCacheClusters`）。

要查看 ElastiCache 操作的列表，请参阅《服务授权参考》**中的 [Amazon ElastiCache 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticache.html#amazonelasticache-actions-as-permissions)。