ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 AWS CLI 与 Bash 脚本操作 Amazon DynamoDB:从基础操作到电影场景实战

使用 AWS CLI 与 Bash 脚本操作 Amazon DynamoDB:从基础操作到电影场景实战 示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载本文基于aws-doc-sdk-examples仓库中的 aws-cli/bash-linux/dynamodb/README.md 及其配套脚本系统讲解如何用 AWS CLIv2配合 Bash 脚本完成 DynamoDB 的建表、增删改查、批量读写、查询与扫描等全部核心操作。通过阅读本文你将掌握一套可直接复用、带统一参数校验与错误处理的 Bash 函数库并能运行一个覆盖 DynamoDB 主要 API 的电影数据完整场景。概览Bash AWS CLI 操作 DynamoDBAmazon DynamoDB 是一种全托管的 NoSQL 数据库服务以快速、可预测的性能和无缝的可扩展性著称。在aws-cli目录下仓库提供了使用AWS CLI版本 2配合 Bash 脚本与 DynamoDB 交互的完整示例集合包含两种形态Single actions单操作函数封装在 dynamodb_operations.sh 中的 12 个独立 Bash 函数每个函数封装一个aws dynamodb子命令支持参数校验、统一错误码处理Basics基础场景scenario_getting_started_movies.sh 中的dynamodb_getting_started_movies函数把上述单操作串联成一个带交互提示的完整工作流。所有示例脚本均以 Apache-2.0 许可证发布并在脚本头部标注了 AWS CLI 安装文档入口https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html。运行前提与注意事项环境准备运行这些示例前需要满足以下条件详见 aws-cli/README.md在机器上安装并配置好AWS CLI 版本 2准备好共享凭据文件shared credentials file其中包含有效的 AWS 访问密钥脚本通过source ./awsdocs_general.sh引入通用工具函数如errecho、iecho、aws_cli_error_log因此运行前必须保证awsdocs_general.sh与脚本位于同一目录。重要提醒仓库在 README 中明确提示了以下使用注意事项运行示例代码可能产生 AWS 账户费用包括运行测试脚本建议先了解 AWS Pricing 与 Free Tier推荐遵循最小权限原则为代码授予完成任务所需的最低 IAM 权限示例代码并未在全部 AWS 区域测试过跨区域使用时需自行验证。单操作函数库dynamodb_operations.sh 源码剖析dynamodb_operations.sh共 1053 行是整个示例的核心定义了 12 个被 README 索引的单操作函数。每个函数都遵循统一的设计模式使用getopts解析短参数、对必填参数做空值校验、调用对应aws dynamodb子命令并在失败时通过aws_cli_error_log记录错误码、通过errecho输出错误信息最后返回 0成功或 1失败。下表汇总了 README 索引的全部操作及源码位置操作README 索引行号对应函数封装的 AWS CLI 命令CreateTableL17dynamodb_create_tableaws dynamodb create-tableDescribeTableL173dynamodb_describe_tableaws dynamodb describe-tablePutItemL247dynamodb_put_itemaws dynamodb put-itemUpdateItemL328dynamodb_update_itemaws dynamodb update-itemGetItemL429dynamodb_get_itemaws dynamodb get-itemDeleteItemL525dynamodb_delete_itemaws dynamodb delete-itemQueryL604dynamodb_queryaws dynamodb queryScanL714dynamodb_scanaws dynamodb scanBatchWriteItemL824dynamodb_batch_write_itemaws dynamodb batch-write-itemBatchGetItemL892dynamodb_batch_get_itemaws dynamodb batch-get-itemListTablesL959dynamodb_list_tablesaws dynamodb list-tablesDeleteTableL988dynamodb_delete_tableaws dynamodb delete-table此外还有未被 README 索引、但被场景和测试大量使用的辅助函数dynamodb_wait_table_activeL121它封装了aws dynamodb wait table-exists用于轮询等待表进入 ACTIVE 状态。建表dynamodb_create_tabledynamodb_create_table接受三个参数-n表名、-a属性定义 JSON 文件路径、-k键 schema JSON 文件路径并通过--billing-mode PAY_PER_REQUEST创建按量计费的表。核心调用如下response$(aws dynamodb create-table \ --table-name $table_name \ --attribute-definitions file://$attribute_definitions \ --billing-mode PAY_PER_REQUEST \ --key-schema file://$key_schema )参数说明--attribute-definitions描述表内属性的名称与数据类型取值S字符串、N数字、B二进制等--key-schema定义主键属性及其类型HASH为分区键、RANGE为排序键--billing-mode PAY_PER_REQUEST按量计费模式无需预先配置读写容量。读取与写入PutItem / GetItem / UpdateItem / DeleteItemPutItemL261-n表名、-i指向包含完整条目值的 JSON 文件通过--item file://...提交。UpdateItemL345是参数最丰富的函数之一需要四个参数参数含义-n表名-k标识待更新条目的键 JSON 文件-e更新表达式如SET info.rating :r, info.plot :p-v表达式属性值 JSON 文件如{:r: {N:8}, :p: {S:...}}GetItemL446支持可选参数-q传入 JMESPath 查询表达式只返回需要的字段源码中还对 JMESPath 在部分字符串上插入的制表符做了sed /^\t/s/\t//1清理保证输出整洁。DeleteItemL539-n表名、-k键 JSON 文件即可删除指定条目。查询与扫描Query / ScanQueryL623用于按分区键条件高效查询参数包括-k键条件表达式如#n:v-a表达式属性名 JSON 文件将保留字/长属性名映射为占位符如{#n: year}-v表达式属性值 JSON 文件-p可选投影表达式仅返回指定字段。ScanL733用于全表扫描参数为-f过滤表达式如#n BETWEEN :v1 AND :v2、-a、-v以及可选的-p。从源码结构看Query 与 Scan 的差异主要在于Query 走分区键索引key condition expressionScan 则对全表做过滤filter expression——这正是 DynamoDB 中两者最重要的语义区别。批量操作与表管理BatchWriteItemL837-i指向 JSON 文件结构为{ 表名: [ {PutRequest: {Item: {...}}}, ... ] }一次可写入最多 25 个条目BatchGetItemL907-i指向 JSON 文件结构为{ 表名: { Keys: [ {...}, ... ] } }一次读取多个条目ListTablesL969输出全部表名并用tr -s [:space:] \n将文本结果转成每行一个表名DeleteTableL1001按表名删除表。通用工具脚本 awsdocs_general.shdocs_general.sh 提供了三个被所有脚本复用的基础函数errecho向 STDERR 输出信息用于错误提示iecho仅当全局变量VERBOSEtrue时输出用于调试信息aws_cli_error_log将 AWS CLI 返回码翻译为可读错误1传输失败、2命令行解析失败、130SIGINT、252语法无效、253环境/配置无效、254服务返回错误、255兜底错误另有generate_random_name、ipause等辅助函数用于生成随机测试名、交互暂停。基础场景实战电影数据完整工作流场景覆盖的操作scenario_getting_started_movies.sh 中的dynamodb_getting_started_movies函数L44演示了一个端到端流程脚本头部注释明确列出了 9 个步骤创建分区键为year、排序键为title的表CreateTable添加一部新电影PutItem使用更新表达式修改电影的评分和剧情UpdateItem从movie_files目录的 JSON 文件批量写入 150 条电影数据BatchWriteItem按主键分区键 排序键获取电影GetItem用键条件表达式查询某年上映的全部电影Query用 Scan 查询某年份区间上映的电影Scan删除一部电影DeleteItem删除表DeleteTable。交互式输入与动态 JSON 生成该场景不是写死数据而是通过一组交互函数从命令行读取用户输入get_input读取普通字符串get_int_input读取整数支持上下限校验如年份限定在 1972–2018get_float_input读取浮点数通过bc -l做数值范围校验如评分限定在 1–10get_yes_no_input读取 y/n 确认。脚本会在运行过程中动态生成所需的 JSON 文件。例如新增电影时生成{ year: {N: 1979}, title: {S: Frogs}, info: {M: {plot: {S: Croak}, rating: {N: 1}}} }更新电影时键文件与属性值文件分离# 键文件 movie_key.json {year: {N: 1979}, title: {S: Frogs}} # 属性值文件 {:r: {N: 2}, :p: {S: Hop}} # 更新表达式 SET info.rating :r, info.plot :p查询某年电影时使用表达式属性名与属性值占位符# attribute_names.json {#n: year} # attribute_values.json {:v: {N: 1979}} # 键条件表达式 #n:v扫描年份区间时则生成#n BETWEEN :v1 AND :v2形式的过滤表达式其中:v1、:v2分别为区间起止年份。批量数据文件movie_files目录下共有 6 个 JSON 文件movies_0.json~movies_5.json每个文件内含若干PutRequest条目共 150 条电影数据。脚本用for batch_json in movie_files/movies_*.json循环将每个文件包装成{ 表名 : 文件内容 }结构后调用dynamodb_batch_write_item分批写入。例如 movies_0.json 中包含 2013 年上映的 Rush 等影片条目格式为{ PutRequest: { Item: { year: {N: 2013}, title: {S: Rush}, info: {M: {rating: {N: 8.3}, plot: {S: ...}}} } } }清理与健壮性设计场景在每个步骤失败时都会调用clean_upL338做资源回收删除已创建的表并清理所有临时生成的 JSON 文件。脚本通过if [[ ${BASH_SOURCE[0]} ${0} ]]判断是否作为主脚本直接执行保证被source时不会自动运行。运行示例与测试运行电影场景在aws-cli/bash-linux/dynamodb目录下直接执行bash scenario_getting_started_movies.sh脚本会依次提示输入表名、电影标题、上映年份、评分、剧情等随后自动完成建表、写入、更新、批量导入、查询、扫描、删除的完整演示。README 说明该场景演示了以下能力README L71-L78创建可存放电影数据的表在表中写入、读取并更新单部电影从示例 JSON 文件将电影数据批量写入表查询某一年份上映的电影扫描某一区间年份上映的电影删除电影条目并删除表。运行测试仓库为所有 DynamoDB 示例提供了集成测试脚本 tests/test_dynamodb_examples.sh测试说明见 aws-cli/README.md。注意运行测试同样可能产生 AWS 账户费用。测试脚本的工作方式与要点通过-i参数进入交互模式每步暂停、便于在控制台观察-v参数开启详细输出run_test定义在 tests/include_tests.sh执行命令并校验返回码与期望输出覆盖全部 12 个单操作函数例如缺参建表应失败期望错误码 1、正常建表成功错误码 0、describe-table返回ACTIVE状态、表名出现在list-tables结果中、带/不带投影表达式的 Query 与 Scan、含 3 个键的 BatchGetItem 等最后通过mock_input_array环境变量模拟交互输入表名testcli_scenario、电影 Frogs、年份 1979、评分 1、剧情 Croak 等 14 个应答驱动完整电影场景自动运行测试结束后删除临时 JSON 文件与测试表若中途失败脚本会警告可能存在残留资源需要手动清理。小结aws-cli/bash-linux/dynamodb是一套结构清晰的 AWS CLI Bash 示例12 个单操作函数构成了可复用的 DynamoDB 操作层统一的参数校验与错误码处理保证了脚本的健壮性交互式电影场景则将全部 API 串联成贴近真实使用的完整工作流配套测试脚本让每个函数的行为都有自动化验证。对于希望在 Shell 环境中脚本化操作 DynamoDB 的开发者这套示例既是可直接调用的工具库也是学习aws dynamodb子命令参数组织方式的绝佳参考。进一步阅读aws-cli 目录总览环境准备与测试运行说明、DynamoDB 开发指南与 API 参考README 中列出的官方文档入口。赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐使用Python操作Amazon DynamoDB电影数据管理实战教程使用Python操作Amazon DynamoDB电影数据管理实战教程 Amazon DynamoDB是一种完全托管的NoSQL数据库服务提供快速且可预测的示例工程教程后端Bash集合操作实战从基础到高级操作详解Bash集合操作实战从基础到高级操作详解 还在为Bash中的集合操作而头疼面对数组、关联数组和各种集合运算时感到无从下手本文将为你彻底解决Bash集合操作示例工程Cilium 发布管理特性发布周期与 Backport 回迁全流程实操Cilium 发布管理特性发布周期与 Backport 回迁全流程实操 本文基于 Cilium 官方文档 发布管理章节 https://link.gitcod示例工程教程后端上一篇Apache 2.0开源协议详解GPT-NeoXT-Chat-Base-20B的允许用途与滥用红线一文看懂下一篇KubeDiagrams在监控系统中的应用Kube Prometheus Stack完整解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表