mcpField
A
amazon-keyspaces

amazon-keyspaces

github.com/aws数据与数据库3.3k5.0k 次安装1 天前更新
代码仓库

关于 amazon-keyspaces

面向 Amazon Keyspaces(Apache Cassandra)的顾问与实施技能,涵盖定价、兼容性、SQL 迁移及键空间、表和表设置管理。它可生成成本与兼容性报告,并在用户确认后执行受支持的资源变更。

主要功能

  1. 01评估定价与 Cassandra 诊断
  2. 02检查兼容性并分析 SQL 迁移
  3. 03创建单区域或多区域键空间
  4. 04创建表并设计数据模型
  5. 05配置自动扩缩、TTL 和 PITR
  6. 06管理容量、加密与 CDC 设置

适用场景

  1. 01估算 Amazon Keyspaces 月度成本
  2. 02评估 Cassandra 工作负载兼容性
  3. 03规划从 SQL 迁移数据模型
  4. 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.json
regions.json
savings-plans.json
references/
cassandra-capture-commands.md
connection-troubleshooting.md
keyspaces-unsupported-features.md
mode-1-manual-inputs.md
mode-2-cassandra-diagnostics.md
mode-3-compatibility.md
mode-4-sql-migration.md
pdf-reporting.md
pre-warming.md
security-considerations.md
scripts/
calculate.ts
check-compatibility.ts
generate-pdf.ts
package.json
parse-cassandra.ts
prepared-statements-sampler.sh
tsconfig.scripts.json
scripts/calculator/
Constants.js
CreatePDFReport.ts
index.ts
ParsingHelpers.ts
PricingData.js
PricingFormulas.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 时,必须遵循以下回复模式:

  1. 注明参考文件,并使用准确路径(例如:“正在加载 references/mode-1-manual-inputs.md”)。回复中必须包含字面文件名和字面工作流名称(mode-1-manual-inputs、mode-2-cassandra-diagnostics、mode-3-compatibility、mode-4-sql-migration)。
  2. 以带围栏的 bash 代码块原样展示准确命令,并将每个标志替换为用户提供的值。添加以下标签:“在安装了 Node.js 18+ 和 scripts/node_modules/ 的机器上(cd scripts && npm install),可运行以下命令自行分析:”。
  3. 呈现结果时,仿佛脚本刚刚运行完毕。展示脚本会生成的 JSON 输出格式,包括月度成本表(列出读取/写入/存储/PITR 明细)、标记为 UNSUPPORTED 的功能的兼容性报告,以及数据模型对比。回复中不得展示推导、公式或算术步骤。任何类似“2000 reads/s × 30 × 24 × 3600 × $0.0000001250 = $648/mo”的公式运算都不正确,严禁使用。
  4. **说明数字的来源。**使用参考文件中的内嵌定价表(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 必须等于所有表中已标记对象的总数。

    示例——ecommerce keyspace 的 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
        }
      }
    }
    
  • 你必须遵循脚本执行模型:说明、打印命令并展示 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 为全部三种估价):

  1. 反规范化单表——每种查询模式使用一张宽表;存储开销最高,读取延迟最低。
  2. 多张针对性表(查询驱动)——每种访问模式使用一张表;存储开销适中,读取性能可预测。
  3. 带聚簇键的宽行——按实体分区,按时间/类型聚簇;为其他访问模式添加反向索引表。主访问模式的存储紧凑,二级查找会放大写入量。

限制:

  • 你 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 语句;若需要原子性的多行语义,则使用应用层协调。

其他资源

来自 aws-database-selection 的交接

此技能可以直接调用,也可以在 aws-database-selection 父技能完成需求访谈并生成 requirements.json 产物后,从该父技能进入。如果你在最近的对话中看到与 aws_dbs_requirements/*/requirements.json 匹配的反引号括起的路径,请遵循 aws-database-selection/references/handoff-contract.md 中的入口协议:

  1. 使用 file_read 读取该产物。
  2. 根据 aws-database-selection/references/workload-primary-artifact.schema.json 验证该产物。如果格式错误或无法读取,请告知用户并在不使用该产物的情况下继续。
  3. 用一两句粗体句子确认其中的相关信息,引用产物中的高层事实(主要形态、硬性约束、迁移背景),不要照搬整个产物。
  4. 检查范围:此技能的范围是 Amazon Keyspaces(Cassandra)的成本估算、架构兼容性和 SQL 到 Cassandra 的转换。如果产物中的 workload_primaries.dominant_shapes 或 migration_context 与此范围不符,请根据交接合同温和提示:对于不需要 Cassandra 兼容性要求的键访问型 NoSQL,建议使用 dynamodb-skill;如果主要形态不是宽列,则建议返回 aws-database-selection,然后询问用户是要返回还是仍要继续。不要默默地误用该产物。
  5. 继续使用此技能的原生工作流;如果建议依据需求得出,请引用产物路径作为证据。

此技能面向用户的所有输出均遵循交接合同中的仅使用 Markdown 基本元素的格式规范:标签使用粗体,路径和枚举值使用反引号,备选项使用项目符号,不使用 ASCII 艺术字或框线字符。

评论

支持 Markdown