【问题标题】:How can I find the size of all tables in AWS DynamoDB?如何找到 AWS DynamoDB 中所有表的大小?
【发布时间】:2022-11-23 22:04:33
【问题描述】:

我在 DynamoDB 中有大约 50 个表,我正在寻找一种方法来查找所有表的大小。

aws dynamodb describe-table --table-name [table name]

我知道上面的命令返回 TableSizeBytes,但这是获取表大小的唯一方法吗? 我是否必须对图片中的所有表运行此命令? 另外,运行此命令的成本是多少?

【问题讨论】:

  • 是的,针对每个表运行命令,只需要写一个循环,几行python代码。该端点不需要任何费用,因为大多数管理 api 调用的转换、放置或获取项目成本数据、获取表、创建表、删除表等都是免费的。

标签: amazon-web-services amazon-dynamodb dynamodb-queries


【解决方案1】:

只需编写一个脚本并循环遍历所有表。如前所述,运行该命令是免费的。

例如:

#!/usr/bin/env bash

YOUR_DYNAMODB_TABLES=( "table1" "table2" "table3" )
TOTAL_SIZE=0
for TABLE in "${YOUR_DYNAMODB_TABLES[@]}"
do
    SIZE=$(aws dynamodb describe-table --table-name "$TABLE" | jq '.Table.TableSizeBytes')
    TOTAL_SIZE=$((TOTAL_SIZE + SIZE))
done
echo $TOTAL_SIZE

【讨论】:

  • 您也可以与list-tablesxargs 一起玩得开心 :D
【解决方案2】:

DescribeTable API 可以在 DynamoDB 上免费调用。您唯一的方法是遍历所有表并对值求和,但我不明白为什么这可能是个问题。

如果您不想手动列出所有表格,这里有一个衬垫,只是为了好玩:

aws dynamodb list-tables --region us-east-1 | 
  jq -r '.TableNames[]' | 
  xargs -L1 -I'{}' bash -c 'aws dynamodb describe-table --table-name {} --region us-east-1 | jq -r ".Table.TableSizeBytes"' | 
  awk '{S+=$1} END {print S}'

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    相关资源
    最近更新 更多