如何使用 boto3 为 S3 存储桶启用对象级日志记录

How Do I Enable Object-Level Logging for an S3 Bucket using boto3

我正在尝试创建一个 amazon cloudWatch 规则,该规则在将对象上传到存储桶时触发。我知道要做到这一点,我需要触发 PutObject 事件,但我能说的最好的是需要在存储桶上启用对象级日志记录。我将使用大量存储桶并希望能够自动执行该过程,而且由于大多数系统是如何设置的,因此使用 boto3 似乎最有意义。那么如何使用 boto3 打开对象级日志记录呢?

到目前为止我能找到的唯一 AWS 官方资源是:How Do I Enable Object-Level Logging for an S3 Bucket with AWS CloudTrail Data Events?

其中解释了如何通过 GUI 启用对象级日志记录。 我还查看了 boto3 library documentation

根据我的理解,两者最终都没有帮助。

我的主要目标是通过 boto3 启用对象级日志记录,如果可以的话。

您可以配置 Amazon S3 事件,以便在创建新对象时可以:

  • 触发一个 AWS Lambda 函数
  • 将消息放入 Amazon SQS 队列
  • Amazon SNS 主题发送消息

参见:Configuring Amazon S3 Event Notifications

您可以在 CloudTrail 服务中使用 put_event_selectors() 功能。

client = boto3.client('s3')
client.put_event_selectors(
TrailName='TrailName',
EventSelectors=[
    {
        'ReadWriteType': 'All',
        'IncludeManagementEvents': True,
        'DataResources': [
            {
                'Type': 'AWS::S3::Object',
                'Values': [
                    'arn:aws:s3:::your_bucket_name/',
                ]
            },
        ]            
    },
])