使用 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