使用 Boto 将 JSON 数据从 CloudTrail 加载到 DynamoDB
Load JSON data from CloudTrail into DynamoDB using Boto
我正在开发一个 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
。 table 中的主键是 S3BucketName
,而不是 id
。
我正在开发一个 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
。 table 中的主键是 S3BucketName
,而不是 id
。