关于 amazon-elasticache
这是一个由多个子技能组成的 Amazon ElastiCache 工具包,按用户需求路由到方案评估、配置、数据建模、AI 工作负载、监控或迁移流程。它面向使用或评估 ElastiCache 的开发与运维人员,并通过 requirements.json 在子技能间保存状态。
主要功能
- 01按意图路由到专门子技能
- 02评估缓存方案与工作负载
- 03指导配置、连接和安全
- 04覆盖数据建模及 AI 场景
- 05支持监控、排障与迁移
适用场景
- 01评估新工作负载是否适合 ElastiCache
- 02设计缓存键、TTL 和失效策略
- 03排查性能、成本或可靠性问题
- 04规划引擎或部署方式迁移
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aws/ agent-toolkit-for-aws --skill amazon-elasticache安装后在 Claude Code 中输入/amazon-elasticache确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/examples/sample_commandstats.csvsample_input_simple.csvreferences/data-modeling/command-availability.mdcommon-patterns.mdinstructions.mdmemcached-recipe.mdrecipe-gallery.mdreferences/genai/agent-memory.mdelasticache-search.mdembedding-providers.mdframework-guide.mdinstructions.mdrag-retrieval.mdsemantic-cache.mdsession-store.mdreferences/migration/auth-migration.mdfeature-comparison.mdglobal-datastore-operations.mdinstructions.mdrollback-procedures.mdself-managed-migration.mdsizing-assessment.mdtopology-validation.mdupgrade-patching.mdvalkey-migration-guide.mdreferences/monitoring/alarm-packs.mdbig-key-hunter.mdclient-tuning-and-diagnostics.mdcloudwatch-dashboards.mdcost-reporting.md详细介绍
ElastiCache
模块化的 ElastiCache 工具包,采用子技能注册表组织。每个子技能负责 ElastiCache 的一个工作领域。下方的路由器会将用户意图匹配到合适的子技能,然后仅加载该子技能所需的参考资料。
此技能的工作方式
- 将用户的请求与下方注册表中的语义类别进行匹配。依据含义匹配,而非精确措辞(例如,即使没有出现“模式”一词,“帮我确定该使用哪些数据结构”也匹配
data-modeling)。 - 消歧: 如果用户意图匹配多个子技能,请按以下顺序应用这些规则:
- 如果
.elasticache/requirements.json存在且其中的infrastructure.endpoint已设置,优先选择monitoring或data-modeling(用户已有缓存)。 - 如果不存在缓存(没有 requirements.json 或没有 endpoint),优先选择
requirements。 - 如果仍有歧义,提出一个澄清问题:“您是想新建一些内容,还是排查现有内容的问题?”
- 如果
- 在推荐引擎或部署模式之前,请先查看 Guardrails 部分。
- 阅读匹配子技能的
references/{sub-skill-id}/instructions.md。如果相对路径下找不到该文件,请检查提示词或环境中是否提供了技能目录的绝对路径,然后使用{skill-directory}/references/{sub-skill-id}/instructions.md重试。 - 如果请求涉及多个子技能,请按流水线顺序执行。
- 如果某个子技能需要尚未存入会话记忆的上游上下文(引擎、部署模式、endpoint),请先路由到上游子技能。
- 如果没有匹配的子技能,请先启用
requirements。 - 如果脚本或 CLI 调用失败,请向用户展示错误,并在重试前提出具体的修复建议。
子技能注册表
每个条目包含:ID(references/ 下的目录名)、领域描述、用于匹配的语义类别,以及上游/下游依赖。
| ID | 名称 | 领域 | 语义类别 | 上游 | 下游 |
|---|---|---|---|---|---|
requirements | 方案适配 | 通过工作区扫描和结构化访谈收集工作负载、技术栈、规模、延迟、持久性和预算信息。判断 ElastiCache 是否适合,并提供路由建议以便后续处理。 | 我需要缓存、加快应用速度、减少数据库负载、降低 Bedrock 成本、我应该使用 ElastiCache 吗、什么最适合我的工作负载、评估缓存选项、ElastiCache 与 X 对比、Valkey 与 X 对比、模糊的新工作负载 | — | setup、data-modeling、genai、monitoring、migration |
setup | 创建与连接 | 配置、连接、安全、身份验证、IaC、部署选项。以最小阻力帮助用户获得可用的缓存。涵盖引擎选择、无服务器与基于节点的方案、VPC、TLS、RBAC/IAM、跳板主机/SSM 隧道、CLI/SDK/CFN/CDK/Terraform 入门方案。 | 创建缓存、设置 ElastiCache、配置、Valkey 集群、连接 Lambda/ECS/EKS/EC2、VPC、安全组、TLS、RBAC、IAM 身份验证、跳板主机、SSM 隧道、CloudFormation、CDK、Terraform、引擎选择、无服务器与基于节点的方案、备份、快照、还原、导出 | requirements(可选) | data-modeling、genai、monitoring |
data-modeling | 应用模式 | 为非 AI 模式选择数据结构、键架构、TTL 策略、失效方法和客户端代码:缓存旁路、会话存储、速率限制、排行榜、计数器、发布/订阅、流、购物车、作业队列、动态信息流。 | 会话存储、速率限制、排行榜、缓存旁路、查询缓存、计数器、流、发布/订阅、购物车、作业队列、动态信息流、键架构、TTL、失效、数据结构 | setup(必须已存在缓存) | monitoring |
genai | AI 与向量工作负载 | 将请求分类为模式 1(纯缓存)、模式 2(语义响应缓存)或模式 3(完整向量搜索)。选择 Valkey;需要服务器端向量相似度时,强制使用基于节点的 Valkey 8.2 或更高版本(推荐 9.0)。涵盖语义缓存、Agent 记忆、RAG 检索、推荐、个性化、AI Agent 的对话/会话持久化,以及框架接入(Strands、mem0、LangChain)。 | 语义缓存、RAG、Agent 记忆、对话记忆、向量搜索、嵌入、推荐、个性化、Bedrock 延迟、Bedrock 成本、大模型缓存、Strands、mem0、LangChain、对话历史、AI 会话存储、嵌入提供商、框架集成 | setup(必须已存在缓存) | monitoring |
monitoring | 运维与观察 | 优先使用指标诊断性能、成本和可靠性问题,然后建议最小幅度的变更。涵盖仪表板、警报、日志交付、成本报告、事件路由,以及高 CPU/内存/复制延迟/连接突增/命中率低/热点键/大键/槽位不均/延迟突增根因排查。 | 缓存速度慢、成本过高、命中率低、CPU 使用率高、内存压力、复制延迟、连接突增、仪表板、警报、CloudWatch、成本比较、故障排查、热点键、分片负载不均、单个节点负载过高、大键、内存膨胀、哪个键最大、键空间分布、前缀分析、按租户归因成本、内存不均衡、单个分片已满、槽位内存倾斜、延迟突增、慢命令事件、延迟上升的根因 | — | setup、migration |
migration | 引擎与平台迁移 | 选择迁移路径,并安排迁移前检查、验证、切换和回滚。涵盖自管理 Redis → ElastiCache、Redis OSS → Valkey、基于节点 ↔ 无服务器、版本升级。严格执行先验证再迁移的门槛。 | 迁移、Redis OSS 到 Valkey、自管理到 ElastiCache、基于节点到无服务器、无服务器到基于节点、引擎升级、版本升级、零停机切换、回滚 | — | setup、monitoring |
流水线顺序
各子技能独立运行,但常见的多步骤流程会遵循以下流水线:
requirements→setup→(data-modeling|genai)→monitoringmigration→setup→monitoringmonitoring→setup|migration(如果指标表明需要)
状态交接:requirements.json
.elasticache/requirements.json 是跨子技能状态的唯一事实来源。每个子技能启动时都会读取该文件,并在完成工作后写入自己的部分。写入前先读取;合并内容,不要覆盖。
| 部分 | 负责方 | 关键字段 |
|---|---|---|
| 顶层 | requirements | engine、deployment_model、region、runtime、patterns、use_case、vpc_id、subnet_ids、security_group_ids |
infrastructure | setup | cache_name、resource_id、engine_version、topology、endpoint、port、auth_model、tls、client_library、execution_path、access_mode、tunnel_instance_id、embedding_provider、embedding_model、embedding_dim、embedding_module |
genai | genai | mode、mode_2_path、framework |
migration | migration | source_type、source_host、migration_path、cutover_status |
归属说明: 初次访谈期间,
requirements会设置deployment_model。切换引擎或部署模型(例如从基于节点的部署切换到无服务器部署)后,migration可以更新该值。
requirements.json 顶层应包含 "schema_version": 1 和 "last_updated": "<ISO timestamp>"。每个写入 requirements.json 的子技能都必须更新 last_updated。如果 last_updated 超过 7 天,则提醒用户缓存的状态可能已过时。
requirements.json 用于跟踪一个活动缓存。如果用户在同一项目中使用多个缓存,请在读取或写入状态前确认哪个缓存处于活动状态。
子技能需要上游上下文(引擎、端点、身份验证模型)时,应先检查 requirements.json。如果字段为 null 或文件不存在,则转到上游子技能。
全局规则(适用于每个子技能)
-
执行路径。 对控制平面操作,优先使用 AWS CLI、SDK(boto3)、CloudFormation 或 CDK。对数据平面操作,优先使用 valkey-py。
-
回答详略。 对“是否应该”或“选哪个”这类问题,提供摘要(2-3 句话)。默认提供标准回答(建议 + 配置 + 代码 + 后续步骤)。对“为什么”或“全部比较”这类问题,提供专家级回答(包含完整的决策矩阵、替代方案、成本和安全注意事项)。按用户请求增加详略;切勿在用户未要求时降低详略程度。
-
会话记忆。 记录区域、VPC、引擎、部署模型、身份验证模型、计算运行时和语言,并在子技能之间沿用。不要重复询问。若用户更改某个值,请在所有相关内容中更新该值。对于推断出的值(来自工作区扫描或 IaC),在做出高风险决策(引擎、部署模型、安全状况)前必须再次确认;低风险推断(语言、框架、区域)可直接作为默认值使用,无需说明。
-
来源优先级。 始终优先依据技能本地文件回答(先查阅子技能参考资料,再查阅
scripts/)。除非本地文件无法回答,否则不要获取外部文档或进行网络搜索。本地文件信息不足时,功能相关内容请参考 AWS 官方文档:https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/;定价相关内容请参考 https://aws.amazon.com/elasticache/pricing/。切勿臆造价格或版本限制。若用户提到本地文件未涵盖的 Valkey 或 Redis 版本、功能或定价层级,回答前请参考 https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/。不要根据可能已过时的本地内容进行推断。 -
时效性免责声明。 提供定价、版本限制或功能可用性信息时,请附上一行免责声明:“如需了解当前定价,请访问 https://aws.amazon.com/elasticache/pricing/。如需了解当前功能可用性,请访问 https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/。”
-
连接安全。 切勿在模块级(文件顶部、导入时)创建 Valkey/Redis 客户端。应在函数内部或首次使用时初始化连接。在缓存尚不可访问时导入模块,模块级连接会导致应用崩溃。
-
代码环境。 所有命令和 shebang 均使用
python3(不要使用python)。不要在应用代码中生成pip install或pytest命令。写入文件时,优先使用 Agent 的文件写入工具,而不是 shell 重定向。 -
输入验证(仅限写入操作)。 在运行任何使用用户提供值(缓存名称、区域、子网 ID、安全组 ID、VPC ID、KMS 密钥、快照名称)的创建、修改或删除 CLI 命令或 SDK 调用前,请使用
scripts/input_validator.py验证这些值。运行python3 scripts/input_validator.py cache_name=<val> region=<val> ...,或将validate_all作为库导入。对于错误输入无害的只读操作(describe、list),无需验证。 -
资源标记(创建资源时始终应用)。 创建任何缓存(
create-serverless-cache、create-replication-group、create-cache-cluster)时,始终包含以下标记:--tags Key=managed_by,Value=aws-skills Key=skill,Value=elasticache Key=skill_version,Value=1.0.0 Key=created_by,Value=elasticache-skill Key=generation_model,Value={your-model-id}示例:
--tags Key=managed_by,Value=aws-skills Key=skill,Value=elasticache Key=skill_version,Value=1.0.0 Key=created_by,Value=elasticache-skill Key=generation_model,Value=claude-sonnet-4-20250514将
generation_model设为你自己的模型标识符。即使用户未提及标记,也要包含这些标记。如果用户提供了其他标记,请将这些标记追加到用户的标记中,而不是替换它们。
参考资料加载
仅在当前轮次的回答需要时,才加载其他参考资料。
按需查阅指引(未预加载;符合触发条件时获取):
references/shared-ux/production-readiness.md— 用户询问其缓存是否已准备好投入生产,或设置完成后用户想要转入生产环境时references/shared-ux/action-safety.md— 执行任何破坏性操作之前(风险等级、绝不自动执行的操作清单)references/shared-ux/error-remediation.md— 用户遇到特定 ElastiCache 错误代码(MOVED、CROSSSLOT、CLUSTERDOWN、MULTI/EXEC+IAM 等)时references/shared-foundation/boundary-doc.md— 用户询问此技能涵盖哪些内容时references/shared-foundation/attribution.md— 生成 CLI 命令、SDK 代码或 IaC 模板时references/shared-foundation/architecture-diagrams.md— 用户需要架构图或可视化参考时references/shared-runtime/lambda.md— 从 Lambda 连接时(冷启动注意事项、IAM 身份验证代码、延迟初始化)references/shared-runtime/ecs.md— 从 ECS 连接时(SIGTERM 关闭、连接池清空、任务定义)references/shared-runtime/eks.md— 从 EKS 连接时(IRSA、绕过服务网格、SecurityGroupPolicy CRD)references/shared-runtime/api-gateway.md— 与 API Gateway 集成时(无直接路径、缓存层比较)references/shared-runtime/rds-acceleration.md— 缓存 RDS/Aurora 查询时(惊群效应、防止缓存击穿、失效处理)references/shared-runtime/secret-injection.md— 用户询问各计算平台的凭证管理时references/shared-security/encryption-defaults.md— 为现有未加密集群添加加密时(TLS 两步迁移、静态加密不可变性)references/shared-security/config-guardrails.md— 用户需要持续合规监控时(AWS Config 规则、自定义 Lambda 规则)references/shared-security/vpc-patterns.md— 排查端口/安全组问题时(serverless 读取端口 6380、反模式)
文件夹约定:
references/包含 10 个文件夹。其中 6 个与子技能相对应(requirements、setup、data-modeling、genai、monitoring、migration),是路由目标。4 个shared-*文件夹(shared-foundation、shared-ux、shared-security、shared-runtime)包含横向通用资料,按需加载,不作为路由目标。
防护规则
| 优先级 | 规则 |
|---|---|
| CRITICAL | 向量搜索必须使用基于节点的 Valkey 8.2 或更高版本。 Serverless 不支持向量搜索。绝不要为向量搜索推荐 Serverless。无论激活哪个子技能,都必须遵守此规则。 |
| CRITICAL | 不要编造价格或版本限制。需要精确信息时,使用 scripts/price_calculator.py 和最新的 AWS 文档。 |
| HIGH | 如果用户需要持久化、复制、RBAC 或 IAM 身份验证、有序集合、流、发布/订阅或向量搜索,不要推荐 Memcached。 |
| HIGH | 不要假设可以直接从本地笔记本访问。ElastiCache 以 VPC 为中心;需要时说明如何通过 VPC、隧道或跳板主机访问。 |
| STANDARD | 不要因任何笼统提及 Redis 就触发此技能。仅当用户明确询问 AWS、托管缓存、迁移、连接、定价、运维或 AWS 服务集成时才触发。 |
| STANDARD | 在 AWS 场景中,若用户提出含糊的“缓存”请求,则激活此技能并从 requirements 开始。 |
产品要点
- ElastiCache Serverless 可在不到一分钟内完成部署,并免去基础设施管理工作。
- Valkey 无服务器定价比其他受支持的引擎低 33%;基于节点的 Valkey 定价低 20%。
- 无服务器缓存始终启用传输中加密(无法禁用)。
- 所有 ElastiCache Valkey 版本(ElastiCache 上的基准 Valkey 版本为 7.2)以及 Redis OSS 7.0+ 均支持 IAM 身份验证。
- Valkey 版本阶梯:7.2(基准版本)、8.0(每个节点可存储的数据增加 20%(容量提升),支持按槽位查看指标)、8.1(布隆过滤器、COMMANDLOG、SET IFEQ、通过新哈希表减少 20% 的内存使用量(效率提升))、8.2(向量搜索)、9.0(新集群的建议默认版本)。除非有特定功能要求使用其他版本,否则新集群建议使用 Valkey 9.0。
- 基于节点的集群支持 Valkey 8.2 或更高版本的向量搜索(建议使用 9.0)。
- 仅基于节点的集群支持 Global Datastore。它不支持 IPv6 或 Local Zones。Global Datastore 支持 AUTH 和 RBAC。跨区域故障转移必须手动提升(不支持跨区域自动故障转移)。Global Datastore 中的所有集群都必须启用静态加密,但每个集群可以在各自区域使用单独的 KMS 密钥。
- 从自管理 Redis 在线迁移到 ElastiCache 需要满足以下条件:(源端)不得启用 AUTH,
protected-mode设置为no,不得重命名复制和管理命令(例如sync、psync、info、config、command、cluster);(目标端)禁用传输中加密,启用 Multi-AZ,引擎版本为 Redis OSS 5.0.6+ 或 Valkey 7.2+,不属于 Global Datastore,且禁用数据分层。源端和目标端的分片数必须相同。所有源 Redis 实例必须使用相同的端口。无服务器缓存不支持在线迁移(仅支持基于节点的目标)。完整检查清单请参阅references/migration/topology-validation.md。