DynamoDB扫描不返回所需的输出

时间:2018-05-29 17:42:21

标签: python-3.x amazon-web-services amazon-dynamodb boto3

我有一个简单的python脚本正在扫描DynamoDB表。该表包含我拥有的所有帐户的ARN。有一个主键" ARNs"数据类型字符串。当我扫描表时,我想只返回ARN字符串。我无法在boto3文档中找到可以实现此目的的任何内容。下面是我的代码,返回的输出和所需的输出。

CODE:

import boto3

dynamo = boto3.client('dynamodb')

# Scans Dynamo for all account role ARNs 
def get_arns():

    response = dynamo.scan(TableName='AllAccountARNs')

    print(response)

get_arns()

OUTPUT:

{'ARNs': {'S': 'arn:aws:iam::xxxxxxx:role/custom_role'}},
{'ARNs': {'S': 'arn:aws:iam::yyyyyyy:role/custom_role'}},
{'ARNs': {'S': 'arn:aws:iam::zzzzzzz:role/custom_role'}}

DESIRED OUPUT:

arn:aws:iam::xxxxxxx:role/custom_role
arn:aws:iam::yyyyyyy:role/custom_role
arn:aws:iam::zzzzzzz:role/custom_role

1 个答案:

答案 0 :(得分:4)

以下是使用boto3 DynamoDB Client执行此操作的示例:

import boto3

ddb = boto3.client('dynamodb')

rsp = ddb.scan(TableName='AllAccountARNs')

for item in rsp['Items']:
  print(item['ARNs']['S'])

这是相同的事情,但使用了boto3 DynamoDB Table Resource

import boto3

dynamodb = boto3.resource('dynamodb')
tbl = dynamodb.Table('AllAccountARNs')

rsp = tbl.scan()

for item in rsp['Items']:
  print(item['ARNs'])

请注意,这些示例不处理大型结果集。如果响应中存在LastEvaluatedKey,则需要对结果集进行分页。请参阅boto3文档。

有关客户端与资源的详细信息,请参阅here