繁体   English   中英

使用 boto3 启用存储桶日志记录

[英]enabling bucket logging using boto3

我有一个存储桶名称列表,需要以编程方式启用登录。 我正在使用 boto3 和 lambda。 我似乎无法在 boto3/s3 中找到正确的函数来做我需要的事情,尽管我确信这是可能的。 到目前为止,这是我的代码:

import json
import boto3
s3 = boto3.client('s3')

def lambda_handler(event, context):
    # TODO implement

    # print("hanlder:event")
    # print(event)
    # bucketDump()
    setBucketPolicy(bucketDump())


def bucketDump():
    ##This program lists all exsisting buckets within an aws account (Tommy's Personal Account)
    response = s3.list_buckets()

    buckets = []
    for bucket in response['Buckets']:
            value = bucket["Name"]
            buckets.append(value)
    return buckets

##setting a bucket policy
def setBucketPolicy(buckets):
    for bucket in buckets:
        value = s3.get_bucket_logging(bucket)
        print(value)


        ##TODO if bucket in buckets does not have loggin enabled, enable it!

        # print(bucket)

我的过程是我想遍历我拥有的存储桶列表并为它们启用日志记录! 先感谢您。

正如@jordanm 在您的问题下方的评论中所建议的那样,使用资源而不是客户端将使您的生活更轻松,因为它提供了更高级别的界面。

如果您的问题中的bucketDump的唯一目标是检索您帐户中的所有存储桶,那么您可以完全删除它并使用标准函数s3.buckets.all()已经返回一个可迭代的存储桶 ( docs )。

假设您想在所有尚未启用的存储桶上启用日志记录,并且您希望将所有存储桶中的日志传送到同一个存储桶,您可以向`` 函数添加一个参数来指定此存储桶。 下面建议的实现将启用日志记录并导致日志的组织方式如下:

- name_of_bucket_in_wich_to_store_logs
  - bucket_name_1
    - logs
  - bucket_name_2
    - logs

如果你想以不同的方式组织你的日志,你必须使用TargetBucketTargetPrefix参数,如果需要,你可以为授权指定其他参数,如文档中所述。

import boto3

s3 = boto3.resource('s3')


def lambda_handler(event, context):
    # TODO implement
    setBucketPolicy(target_bucket='name_of_bucket_in_wich_to_store_logs')


def setBucketPolicy(target_bucket: str):
    for bucket in s3.buckets.all():
        bucket_logging = s3.BucketLogging(bucket.name)
        if not bucket_logging.logging_enabled:
            bucket_logging.put(
                BucketLoggingStatus={
                    'LoggingEnabled': {
                        'TargetBucket': target_bucket,
                        'TargetPrefix': f'{bucket.name}/'
                    }
                }
            )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM