问题描述
我正在开发一个 Boto3 脚本,该脚本可以将 Cloudtrail 中的属性加载到 Dynamodb 中。我的 cloudtrail 日志的格式是 JSON。我对 DynamoDB 还很陌生,我不确定我在哪里犯了错误。我正在尝试存储“S3BucketName”以及“goodbucket3”存储桶的名称。 cloudtrail 的名称是“GoodTrail”。这是我目前想到的。我收到此错误“ResourceNotFoundException:调用 PutItem 操作时发生错误 (ResourceNotFoundException):未找到请求的资源”
import boto3
dynamodb = boto3.resource('dynamodb')
table =dynamodb.create_table(
TableName='GoodTable',AttributeDeFinitions=[
{
"AttributeName": "S3BucketName","AttributeType": "S"
}
],KeySchema=[
{
"AttributeName": "S3BucketName","KeyType": "HASH"
}
],ProvisionedThroughput={
"ReadCapacityUnits": 1,"WriteCapacityUnits": 1
}
)
table = dynamodb.Table('GoodTable')
response = table.put_item(
Item= {
'S3BucketName': 'some-bucket-name','content': f'{path}',}
)
解决方法
你的table
只是一本字典。它不是 dynamodb 的 table 对象。
纠正问题:
import boto3
dynamodb_res = boto3.resource('dynamodb')
table = dynamodb_res.Table('GoodTable')
response = table.put_item(
Item= {
'S3BucketName': 'some-bucket-name','content': f'{path}',}
)
print(response)
根据您的定义,您没有任何 id
。表中的主键是 S3BucketName
,而不是 id
。