如何手动生成Amazon DynamoDB Encryption Client签名与描述字段?
手动生成DDB签名字段以修复格式错误条目
由于目标数据库采用版本化条目机制,我们无需修改错误旧条目,只需新增一条格式正确的条目即可替代。以下是手动生成amzn-ddb-map-sig和amzn-ddb-map-desc字段的步骤:
1. 生成amzn-ddb-map-desc字段
该字段是条目结构的JSON描述,必须与应用中合法条目的结构完全匹配,包括字段名、类型和顺序。常见的DDB字段类型有S(字符串)、N(数字)、B(二进制)等。
示例(假设条目包含id、corrected_data、version三个字段):
{"fields": [{"name": "id", "type": "S"}, {"name": "corrected_data", "type": "S"}, {"name": "version", "type": "N"}]}
2. 生成amzn-ddb-map-sig字段
该签名是基于amzn-ddb-map-desc的哈希值,通常采用HMAC-SHA256算法(具体取决于应用的签名逻辑),生成步骤如下:
- 对
amzn-ddb-map-desc的JSON字符串进行无空格压缩(移除所有空格、换行符) - 使用应用对应的签名密钥,对压缩后的字符串执行HMAC-SHA256哈希,再转为Base64编码
示例CLI命令(用OpenSSL生成)
# 定义压缩后的描述字符串 COMPRESSED_DESC='{"fields":[{"name":"id","type":"S"},{"name":"corrected_data","type":"S"},{"name":"version","type":"N"}]}' # 替换为实际的应用签名密钥 SIGNING_KEY="your-app-signing-key" # 生成签名 echo -n "$COMPRESSED_DESC" | openssl dgst -sha256 -hmac "$SIGNING_KEY" -binary | base64
注意事项
- 务必保证
amzn-ddb-map-desc与应用中正常条目的描述完全一致,任何字段顺序、类型的偏差都会导致签名验证失败 - 新增条目时设置比错误条目更高的版本号,确保应用优先加载新条目
- 新增完成后,可通过DDB CLI的
aws dynamodb get-item命令验证条目是否能被正常识别
内容的提问来源于stack exchange,提问作者Jgible
相关产品推荐
相关产品推荐

