关于 amazon-keyspaces
面向 Amazon Keyspaces(Apache Cassandra)的顾问与实施技能,涵盖定价、兼容性、SQL 迁移及键空间、表和表设置管理。它可生成成本与兼容性报告,并在用户确认后执行受支持的资源变更。
主要功能
- 01评估定价与 Cassandra 诊断
- 02检查兼容性并分析 SQL 迁移
- 03创建单区域或多区域键空间
- 04创建表并设计数据模型
- 05配置自动扩缩、TTL 和 PITR
- 06管理容量、加密与 CDC 设置
适用场景
- 01估算 Amazon Keyspaces 月度成本
- 02评估 Cassandra 工作负载兼容性
- 03规划从 SQL 迁移数据模型
- 04创建表并调整容量设置
MCP 相关
此技能优先使用 AWS MCP 服务直接执行 AWS API 操作,也提供可独立运行的 AWS CLI 命令。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aws/ agent-toolkit-for-aws --skill amazon-keyspaces安装后在 Claude Code 中输入/amazon-keyspaces确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/data/mcs.jsonregions.jsonsavings-plans.jsonreferences/cassandra-capture-commands.mdconnection-troubleshooting.mdkeyspaces-unsupported-features.mdmode-1-manual-inputs.mdmode-2-cassandra-diagnostics.mdmode-3-compatibility.mdmode-4-sql-migration.mdpdf-reporting.mdpre-warming.mdsecurity-considerations.mdscripts/calculate.tscheck-compatibility.tsgenerate-pdf.tspackage.jsonparse-cassandra.tsprepared-statements-sampler.shtsconfig.scripts.jsonscripts/calculator/Constants.jsCreatePDFReport.tsindex.tsParsingHelpers.tsPricingData.jsPricingFormulas.ts详细介绍
Amazon Keyspaces
安全指南
当用户提出请求时,此技能涵盖创建键空间和表,以及修改表级设置(TTL、PITR、容量模式)。执行前,Agent 必须先向用户确认操作。未经用户明确确认(例如“是”“继续”“已确认”“开始吧”),不得执行任何创建或修改操作。如果用户尚未确认,请说明计划执行的操作并征求批准。
执行以下操作(需先获得用户确认)
- 创建键空间:
aws keyspaces create-keyspace - 创建多区域键空间:
aws keyspaces create-keyspace --replication-specification replicationStrategy=MULTI_REGION,regionList=[{region=us-east-1},{region=eu-west-1}] - 创建表:
aws keyspaces create-table(根据用户的访问模式设计分区键和聚簇键) - 向表添加列:
aws keyspaces update-table --add-columns '[{"name":"col_name","type":"text"}]'— 非破坏性操作,无停机时间,不会丢失数据。现有行的新列值为 null。 - 创建用户定义类型(UDT):
aws keyspaces create-type --keyspace-name <ks> --type-name <name> --field-definitions '[{"name":"field1","type":"text"},...]' - 修改表 TTL:
aws keyspaces update-table --default-time-to-live - 启用/禁用 PITR:
aws keyspaces update-table --point-in-time-recovery-specification - 更改容量模式:
aws keyspaces update-table --capacity-specification(按需或预置)— 请参阅下方警告 - 切换表加密密钥:
aws keyspaces update-table --encryption-specification type=CUSTOMER_MANAGED_KMS_KEY,kmsKeyIdentifier=arn:aws:kms:...— 无需停机,也不会影响可用性。也可以使用type=AWS_OWNED_KMS_KEY切换回 AWS 自有密钥。 - 预热表吞吐量:
aws keyspaces update-table --warm-throughput-specification readUnitsPerSecond=X,writeUnitsPerSecond=Y— 设置表可处理的最低瞬时吞吐量。在计划出现流量高峰(闪购、迁移、批量加载)之前使用。费用按超出自然预热吞吐量的差值一次性计算。aws keyspaces create-table --warm-throughput也支持此功能。加载 pre-warming.md,了解决策框架和容量计算公式。 - 配置自动扩缩:
aws keyspaces update-table --auto-scaling-specification— 设置目标利用率百分比,以及读取和/或写入的最小/最大容量单位。**前提条件:**必须存在服务相关角色AWSServiceRoleForApplicationAutoScaling_CassandraTable。如果不存在,Agent 必须先指示用户运行:aws iam create-service-linked-role --aws-service-name cassandra.application-autoscaling.amazonaws.com。调用方 IAM 主体还需要具备application-autoscaling:RegisterScalableTarget、application-autoscaling:PutScalingPolicy、application-autoscaling:DescribeScalableTargets、cloudwatch:PutMetricAlarm、cloudwatch:DescribeAlarms、cloudwatch:DeleteAlarms权限。将application-autoscaling:RegisterScalableTarget、application-autoscaling:PutScalingPolicy、application-autoscaling:DescribeScalableTargets权限限制到目标表 ARN(arn:aws:cassandra:<region>:<account>:/keyspace/<ks>/table/<table>)。将cloudwatch:PutMetricAlarm、cloudwatch:DescribeAlarms、cloudwatch:DeleteAlarms权限限制到对应的告警 ARN(例如arn:aws:cloudwatch:<region>:<account>:alarm:TargetTracking-table/<ks>/<table>-*)。在可能的情况下,使用aws:ResourceTag条件键,而不是应用于整个账户。 - 启用 CDC(变更数据捕获):
aws keyspaces update-table --cdc-specification status=ENABLED,viewType=<type>— 创建捕获行级变更的 CDC 流。启用前,Agent 必须询问用户要使用哪种视图类型,并列出以下选项:NEW_IMAGE— 捕获变更后的完整行。适用场景:事件驱动管道、下游同步、物化视图。OLD_IMAGE— 捕获变更前的完整行。适用场景:审计跟踪、合规日志、撤销/回滚场景。NEW_AND_OLD_IMAGES— 同时捕获变更前后的状态。适用场景:基于差异的管道、详细审计、冲突解决。CDC 消耗成本较高。KEYS_ONLY— 仅捕获分区键和聚簇键列。适用场景:轻量级变更通知、触发应用重新读取。成本最低。 可选:propagateTags=TABLE会将表的标签复制到 CDC 流。建议默认启用。
- 标记资源:
aws keyspaces tag-resource、aws keyspaces untag-resource
资源标记(强制 — 创建资源时始终应用)
创建任何键空间或表时(使用 aws keyspaces create-keyspace、aws keyspaces create-table,或 CQL CREATE KEYSPACE ... WITH TAGS、CREATE TABLE ... WITH TAGS),必须包含以下标记。创建操作若未包含这些标记,则不完整且不正确:
AWS CLI 语法:
--tags key=created_by,value=keyspaces-skill key=generation_model,value={your-model-id}
CQL 语法:
WITH TAGS = {'created_by': 'keyspaces-skill', 'generation_model': '{your-model-id}'}
示例(CLI):--tags key=created_by,value=keyspaces-skill key=generation_model,value=claude-sonnet-4-20250514
示例(CQL):WITH TAGS = {'created_by': 'keyspaces-skill', 'generation_model': 'claude-sonnet-4-20250514'}
即使用户未提及标记,也要包含这些标记,以便他们识别通过此技能创建的资源。如果用户提供了其他标记,应将这些标记追加到用户的标记中,而不是替换它们。创建操作必须始终包含这些标记,无论用户是否提出要求,都绝不能省略。
执行前警告停机影响(警告用户,并在用户确认后执行)
- 切换容量模式:
aws keyspaces update-table --capacity-specification— 警告:“在按需模式和预置模式之间切换时,Keyspaces 重新平衡可能导致短暂的限流;请在低流量时段执行。” - 从时间点恢复表:
aws keyspaces restore-table— 警告:“恢复操作会创建一张新表,根据表的大小可能需要几分钟到几小时;源表不受影响,但新表在切换流量之前不会承载任何流量。”
不要执行(拒绝,说明原因,并改为提供评估)
- 删除键空间:
aws keyspaces delete-keyspace— 不可逆,且会级联删除所有表 - 删除表:
aws keyspaces delete-table— 不可逆,数据会丢失 - 删除 UDT:
aws keyspaces delete-type— 可能导致引用该类型的表和列无法正常工作;存在数据损坏风险 - 禁用 CDC:
aws keyspaces update-table --cdc-specification status=DISABLED— 禁用 CDC 会删除流,所有尚未处理的记录都会永久丢失。下游使用者将停止接收事件,且无法恢复。建议用户先确认没有活跃使用者依赖该流,然后直接通过 Console 或 CLI 禁用。 - 启用客户端时间戳:
aws keyspaces update-table --client-side-timestamps status=ENABLED— 不可逆(启用后无法禁用);建议用户了解相关影响后,直接通过 Console 或 CLI 执行 - 为现有键空间添加区域:
aws keyspaces update-keyspace --replication-specification(添加新区域)— 不可逆的复制变更;添加区域后无法移除。如果是测试,建议改为创建新的多区域键空间。 - 为包含唯一近期数据的表禁用 PITR:
aws keyspaces update-table --point-in-time-recovery-specification status=DISABLED— 请先考虑恢复窗口的影响
拒绝时,说明原因并提供对应的评估工作流:
“我无法执行[操作],因为[原因]。我可以运行评估来帮助你做出决定。实际变更应遵循团队的变更控制流程,或通过 AWS Console 执行。”
概述
Amazon Keyspaces(适用于 Apache Cassandra)的顾问与实施技能,涵盖四种规划工作流:手动定价(模式 1)、Cassandra 诊断定价(模式 2)、兼容性检查(模式 3)和 SQL→Keyspaces 迁移(模式 4)。还可执行基础设施变更:创建键空间(单区域和多区域)、按照架构设计创建表、创建 UDT、添加列、配置自动扩缩、更换加密密钥,以及修改表设置(TTL、PITR、容量模式)。按工作流生成 JSON 输出,其中包含月度成本明细、兼容性报告和数据模型对比。
此技能配合 AWS MCP 服务使用效果最佳,可直接执行 AWS API 操作;不过,所有操作也都提供了对应的 AWS CLI 命令,可独立运行。
在执行任何变更操作(create-keyspace、create-table、update-table)后,建议用户确认 CloudTrail 正在记录 Keyspaces 管理事件,并已针对限流指标(ReadThrottleEvents、WriteThrottleEvents)配置 CloudWatch 警报。
有关资源创建和修改,请参阅上文的安全指南部分,了解允许/警告/拒绝列表,以及自动应用的标签,以便客户识别通过此技能创建的资源。
脚本执行模型 — 模拟脚本输出,不要推导(重要)
scripts/ 中附带的脚本(calculate.ts、parse-cassandra.ts、check-compatibility.ts、generate-pdf.ts)是可供用户运行的交付内容。如果可以访问 shell,请直接执行这些脚本。否则,请使用参考文件数据模拟其输出(见下文)。
每次调用模式 1–4 时,必须遵循以下回复模式:
- 注明参考文件,并使用准确路径(例如:“正在加载 references/mode-1-manual-inputs.md”)。回复中必须包含字面文件名和字面工作流名称(
mode-1-manual-inputs、mode-2-cassandra-diagnostics、mode-3-compatibility、mode-4-sql-migration)。 - 以带围栏的 bash 代码块原样展示准确命令,并将每个标志替换为用户提供的值。添加以下标签:“在安装了 Node.js 18+ 和
scripts/node_modules/的机器上(cd scripts && npm install),可运行以下命令自行分析:”。 - 呈现结果时,仿佛脚本刚刚运行完毕。展示脚本会生成的 JSON 输出格式,包括月度成本表(列出读取/写入/存储/PITR 明细)、标记为 UNSUPPORTED 的功能的兼容性报告,以及数据模型对比。回复中不得展示推导、公式或算术步骤。任何类似“2000 reads/s × 30 × 24 × 3600 × $0.0000001250 = $648/mo”的公式运算都不正确,严禁使用。
- **说明数字的来源。**使用参考文件中的内嵌定价表(
references/mode-*.md)——这些表与 assets/data/mcs.json 中的费率一致。不要编造费率;参考文件中的表格是唯一可信来源。
按脚本输出格式呈现的内容示例
✓ 正确模式:
"运行 calculate.ts us-east-1 2000 800 1024 500 0 true 后会生成:
防循环规则: 仅输出一次 JSON。不要反复处理、优化、重新推导或重新计算。如果已生成 JSON 代码块,请立即停止——不要尝试验证或改进。直接转而询问用户是否需要可选的 PDF 报告。
{ "region": { "short": "us-east-1", "long": "US East (N. Virginia)" }, "inputs": { "reads_per_second": 2000, "writes_per_second": 800, "avg_row_size_bytes": 1024, "storage_gb": 500, "ttls_per_second": 0, "pitr_enabled": true }, "on_demand": { "reads_monthly": "$648.00", "writes_monthly": "$1,296.00", "storage_monthly": "$125.00", "pitr_monthly": "$100.00", "total_monthly": "$2,169.00" }, "provisioned": { "reads_monthly": "$189.80", "writes_monthly": "$478.20", "storage_monthly": "$125.00", "pitr_monthly": "$100.00", "total_monthly": "$893.00" }, "savings_plan_1yr": { "total_monthly": "$756.00" }, "recommendation": "provisioned with 1yr Savings Plan for ~65% savings" } ```"
✗ 错误模式(不得使用):
"让我计算一下费用:
- 读取:2000 r/s × 30 天 × 24 小时 × 3600 秒 = 5.184B RRU/月 × $0.0000001250 = $648/月
- 写入:800 w/s × ... = $1,296/月 ..."
第二种方式是手动计算,会被视为“没有运行脚本”。数字相同,呈现方式错误。
切勿捏造
- 你不得编造未实际获取或未包含在参考文件中的定价费率、兼容性规则、实例元数据或 AWS API 响应。
references/mode-*.md中的公式和定价表仅供内部使用,用于生成输出数字——不要在回复中复制这些内容作为推导过程。
常见任务
1. 验证依赖项
检查所需工具,并在运行任何工作流前提醒用户。
约束:
- 你必须明确指出适用模式对应的 calculate.ts、parse-cassandra.ts、check-compatibility.ts 或 generate-pdf.ts,并说明其需要 Node.js 18+ 和
scripts/node_modules/(通过cd scripts && npm install安装),让用户了解缺少什么以及这为何重要。 - 你不得在该技能中创建 AWS 凭证——凭证管理不属于技能范围(
aws configure/ada credentials update)。 - 你必须告知用户缺少的工具,并询问是否继续。
- 建议将中间 JSON 保存到
/tmp/keyspaces-*.json,以便 PDF 和比较步骤重复使用。
工具调用示例(作为文本打印;不要尝试执行):
aws keyspaces list-tables --keyspace-name mykeyspace --region us-east-1
2. 根据手动输入进行估算(模式 1)
当用户没有 Cassandra 集群或更倾向于直接输入数字时使用。
参数:
region(必需):AWS 区域代码,例如us-east-1。reads_per_second(必需):整数。writes_per_second(必需):整数。avg_row_size_bytes(必需):通常为 256-4096。仅在未知时使用默认值1024。storage_gb(必需):单副本压缩存储,单位为 GB。ttl_deletes_per_second(可选,默认值为0)。pitr_enabled(可选,默认值为false)。
约束:
- 你必须在一个提示中询问所有必需参数。
- 如果用户提到已有集群,你必须优先提供模式 2,因为诊断数据更准确。
- 你必须根据 assets/data/regions.json 验证
region。 - 你必须显示按需、预置和 Savings Plan 的总费用,并推荐更便宜的选项。
- 你必须遵循上文的脚本执行模型:说明参考来源,打印
npx ts-node命令,并展示 JSON 输出。 - 你必须将定价结果作为 JSON 对象放在 ```json 围栏代码块中展示,而不是使用 Markdown 表格。输出必须是 JSON。JSON 后可以附上 Markdown 摘要,但必须包含 JSON 代码块。请复制 §脚本执行模型 →“按脚本输出的方式展示”中所示的 JSON 结构。
自行运行此分析的命令(打印为带有已解析标志的围栏 bash 代码块):
cd scripts && npx ts-node --project tsconfig.scripts.json calculate.ts \
us-east-1 2000 800 1024 500 0 true | tee /tmp/keyspaces-calc.json
必需的输出格式(使用用户输入填充,并严格按此结构输出为 ```json 代码块):
{
"region": { "short": "us-east-1", "long": "US East (N. Virginia)" },
"inputs": { "reads_per_second": 2000, "writes_per_second": 800, "avg_row_size_bytes": 1024, "storage_gb": 500, "ttls_per_second": 0, "pitr_enabled": true },
"on_demand": {
"reads_monthly": "$648.00",
"writes_monthly": "$1,296.00",
"storage_monthly": "$125.00",
"pitr_monthly": "$100.00",
"total_monthly": "$2,169.00"
},
"provisioned": {
"reads_monthly": "$189.80",
"writes_monthly": "$478.20",
"storage_monthly": "$125.00",
"pitr_monthly": "$100.00",
"total_monthly": "$893.00"
},
"savings_plan_1yr": { "total_monthly": "$756.00" },
"recommendation": "provisioned with 1yr Savings Plan for ~65% savings"
}
加载 mode-1-manual-inputs.md,以获取计算器使用的定价费率表。显示 JSON 后,提供可选的 PDF 报告(任务 6)。
3. 根据 Cassandra 诊断信息进行估算(模式 2)
必需:nodetool tablestats,以及诊断目录中每个节点各一份 nodetool info。
可选:nodetool status、DESCRIBE SCHEMA(schema.cql)、rowsize 输出、prepared-statements NDJSON。
约束:
-
你不得将单个诊断文件
file_read到上下文中——这些文件很大,会超出上下文窗口。请改为将目录路径传递给parse-cassandra.ts --dir <path>。 -
如果没有
tablestats和至少一个info文件,你不得调用parse-cassandra.ts。 -
缺少
status或schema时,你必须询问每个 DC 的节点数和 RF。 -
如果存在 schema,你必须呈现
compatibility块——并将物化视图、二级索引、触发器、UDF、UDA 标记为 UNSUPPORTED。- **解析步骤(输出前):**扫描 schema 中的每条
CREATE MATERIALIZED VIEW、CREATE INDEX、CREATE TRIGGER、CREATE FUNCTION和CREATE AGGREGATE语句。无论基数或任何其他限定条件如何,每个匹配项都算作一个单独的兼容性问题。 - 只要找到一条或多条此类语句,
has_issues就必须为true。如果 schema 包含上述任何结构,你不得输出has_issues: false。 details.schema必须填充(不能为 null),并按 keyspace 和表列出每个已标记对象的明细(索引名称、视图名称等);summary.schema.total_issues必须等于所有表中已标记对象的总数。
示例——
ecommercekeyspace 的 schema 包含orders_by_customer(物化视图)、orders_status_idx(二级索引)和customers_email_idx(二级索引):{ "compatibility": { "has_issues": true, "summary": { "total_issues": 3, "schema": { "total_issues": 3, "keyspaces_affected": 1, "tables_affected": 2, "functions": 0, "aggregates": 0 }, "query_patterns": null }, "details": { "schema": { "functions": 0, "aggregates": 0, "keyspaces": { "ecommerce": { "orders": { "indexes": ["orders_status_idx"], "triggers": [], "materializedViews": ["orders_by_customer"] }, "customers": { "indexes": ["customers_email_idx"], "triggers": [], "materializedViews": [] } } } }, "query_patterns": null } } } - **解析步骤(输出前):**扫描 schema 中的每条
-
你必须遵循脚本执行模型:说明、打印命令并展示 JSON 输出。
自行运行此分析的命令:
cd scripts && npx ts-node --project tsconfig.scripts.json parse-cassandra.ts \
--dir /tmp/cassandra-diag --region us-east-1 | tee /tmp/keyspaces-calc.json
加载 mode-2-cassandra-diagnostics.md 以获取信息收集表,并加载 cassandra-capture-commands.md 以获取采集命令。
4. 检查与 Keyspaces 的兼容性(模式 3)
参数: 至少提供 --schema <path.cql> 或 --prepared <path.ndjson> 其中之一。
限制:
- 你 MUST 使用二元术语说明兼容性——每个标记的功能都 UNSUPPORTED。你 MUST NOT 添加“有限支持”等限定语,因为模棱两可的说法会误导用户采用不受支持的设计。
- 物化视图不受支持——建议在应用端使用反规范化表实现相同模式。
- 二级索引不受支持——建议使用二级表或全局二级索引模式(以备用分区键建立的反规范化查找表)。
- 触发器、UDF(用户定义函数)、UDA(用户定义聚合函数)、聚合函数均不受支持——建议在应用端实现。
- 你 MUST 将
query_patterns.ttl_tables报告为信息项,而不是问题。 - 你 MUST 遵循脚本执行模型:先声明,再打印命令,然后展示 JSON 输出。
- 如果用户提到了具体功能名称(例如“使用物化视图和二级索引”),但未提供架构文件路径,DO NOT 索要文件。应直接针对提及的功能进行兼容性检查并展示输出。 只有当用户问“这个架构能用吗”,且未提及任何功能时,才询问架构文件。
- 你 MUST 以 JSON 形式提供兼容性报告,将每个提及的功能标记为
status: "UNSUPPORTED",并提供migration_recommendation。
你自行运行此分析的命令:
cd scripts && npx ts-node --project tsconfig.scripts.json check-compatibility.ts \
--schema /tmp/schema.cql --prepared /tmp/prepared.ndjson | tee /tmp/keyspaces-compat.json
加载 mode-3-compatibility.md 以查看完整的不支持功能列表,并加载 keyspaces-unsupported-features.md 以查看各功能的迁移指南。
5. 将 SQL 转换为 Keyspaces(模式 4)
生成三个数据模型,为每个模型估价并给出建议。
三种建模策略(你 MUST 为全部三种估价):
- 反规范化单表——每种查询模式使用一张宽表;存储开销最高,读取延迟最低。
- 多张针对性表(查询驱动)——每种访问模式使用一张表;存储开销适中,读取性能可预测。
- 带聚簇键的宽行——按实体分区,按时间/类型聚簇;为其他访问模式添加反向索引表。主访问模式的存储紧凑,二级查找会放大写入量。
限制:
- 你 MUST 为全部三种策略估价,因为写入放大和查找成本之间的权衡会因工作负载而异。
- 你 MUST NOT 在未询问每张表的读写速率时选择策略——除非用户提供了 SQL 架构文件;此时应采用合理的默认值(每张表每秒读取 100 次、每秒写入 50 次、平均行大小为 1 KB,并根据行数估算存储量),并立即展示三种策略的比较。说明所用假设。
- 你 MUST 识别 SQL 中的 JOIN,并说明它们在 NoSQL 中的映射方式(反规范化或二级查找)。
- 你 MUST 为每种策略提供与 Keyspaces 兼容的架构,并说明分区键和聚簇键的设计选择及其依据。
- 你 MUST 遵循脚本执行模型:先声明,再打印三条
calculate.ts命令(每种策略一条),然后展示比较 JSON。
你自行运行此分析的命令(调用三次,每种策略一次):
cd scripts
# Strategy 1: denormalized single table
npx ts-node --project tsconfig.scripts.json calculate.ts us-east-1 <r1> <w1> <b1> <gb1> 0 false | tee /tmp/keyspaces-s1.json
# Strategy 2: multiple targeted tables
npx ts-node --project tsconfig.scripts.json calculate.ts us-east-1 <r2> <w2> <b2> <gb2> 0 false | tee /tmp/keyspaces-s2.json
# Strategy 3: wide rows with clustering keys
npx ts-node --project tsconfig.scripts.json calculate.ts us-east-1 <r3> <w3> <b3> <gb3> 0 false | tee /tmp/keyspaces-s3.json
加载 mode-4-sql-migration.md 以查看 SQL→CQL 映射和比较表。
6. 生成 PDF 报告(可选)
限制:
- 展示 JSON 后,你 MUST 询问用户是否需要 PDF。
- 对模式 3,你 MUST NOT 生成 PDF(没有可用于呈现的定价数据)。
你自行运行此命令:
cd scripts && npx ts-node --project tsconfig.scripts.json generate-pdf.ts \
--input /tmp/keyspaces-calc.json --output /tmp/keyspaces.pdf
加载 pdf-reporting.md 以查看多输入和标签语法。
故障排除
连接错误 / NoNodeAvailableException / HeartbeatException / PerConnectionRequestExceeded
加载 connection-troubleshooting.md。涵盖 application.conf 验证、错误诊断树、连接池大小调整,以及驱动程序 3.x 和 4.x 的差异。用户分享驱动程序配置时,请检查该参考文档 §1 中的每一项,并指出所有配置错误。
限流 / WriteThrottleEvents / ReadThrottleEvents / 容量规划
加载 pre-warming.md。涵盖预热吞吐量评估、预热决策框架、容量规划公式,以及热分区与表级限流的诊断。用户报告限流或询问即将到来的流量事件所需容量时,请使用决策框架,判断应采用预热、自动扩缩容、重新设计分区键还是切换容量模式。
Region not found: <region>
区域代码错误,或 Keyspaces 在该区域不可用。请检查 assets/data/regions.json。
parse-cassandra.ts 退出并显示 "Usage: …"
缺少 --tablestats 或 --info。请重新采集,或使用模式 1。
has_issues: false,但用户预期会发现问题
只有 keyspaces-unsupported-features.md 中列出的功能才会被标记。ALLOW FILTERING、TRUNCATE 和大多数数据类型均受支持。
读取诊断信息时上下文溢出
请勿使用 file_read 将大型诊断文件读入上下文。请改为将目录传递给 parse-cassandra.ts --dir <path>。
捕获远程诊断信息时访问被拒绝
缺少 Cassandra 凭证或 SigV4 插件。请参阅 security-considerations.md。
npm install 在 scripts/ 中失败
Node < 18,或锁文件过期。删除 scripts/node_modules/ 和 scripts/package-lock.json,然后重新运行。
UNLOGGED BATCH 中不支持 LWT
Amazon Keyspaces 不支持在 UNLOGGED BATCH 中使用 LWT(IF NOT EXISTS、IF EXISTS、条件更新)。LWT 语句必须单独执行(独立运行)。Keyspaces 也不支持 LOGGED BATCH。建议重构为逐条执行 LWT 语句;若需要原子性的多行语义,则使用应用层协调。
其他资源
- Keyspaces 开发人员指南
- 与 Cassandra 的功能差异
- Keyspaces 定价
- CQL 支持
- Keyspaces 的 IAM
references/中的参考文件:mode-1-manual-inputs、mode-2-cassandra-diagnostics、mode-3-compatibility、mode-4-sql-migration、pdf-reporting、keyspaces-unsupported-features、cassandra-capture-commands、security-considerations。
来自 aws-database-selection 的交接
此技能可以直接调用,也可以在 aws-database-selection 父技能完成需求访谈并生成 requirements.json 产物后,从该父技能进入。如果你在最近的对话中看到与 aws_dbs_requirements/*/requirements.json 匹配的反引号括起的路径,请遵循 aws-database-selection/references/handoff-contract.md 中的入口协议:
- 使用
file_read读取该产物。 - 根据
aws-database-selection/references/workload-primary-artifact.schema.json验证该产物。如果格式错误或无法读取,请告知用户并在不使用该产物的情况下继续。 - 用一两句粗体句子确认其中的相关信息,引用产物中的高层事实(主要形态、硬性约束、迁移背景),不要照搬整个产物。
- 检查范围:此技能的范围是 Amazon Keyspaces(Cassandra)的成本估算、架构兼容性和 SQL 到 Cassandra 的转换。如果产物中的
workload_primaries.dominant_shapes或migration_context与此范围不符,请根据交接合同温和提示:对于不需要 Cassandra 兼容性要求的键访问型 NoSQL,建议使用dynamodb-skill;如果主要形态不是宽列,则建议返回aws-database-selection,然后询问用户是要返回还是仍要继续。不要默默地误用该产物。 - 继续使用此技能的原生工作流;如果建议依据需求得出,请引用产物路径作为证据。
此技能面向用户的所有输出均遵循交接合同中的仅使用 Markdown 基本元素的格式规范:标签使用粗体,路径和枚举值使用反引号,备选项使用项目符号,不使用 ASCII 艺术字或框线字符。