【问题标题】:Insufficient log-delivery permissions when using AWS-cdk and aws lambda使用 AWS-cdk 和 aws lambda 时日志传递权限不足
【发布时间】:2020-09-14 15:35:13
【问题描述】:

我正在尝试创建一个集中式日志记录存储桶,然后使用 lambda 和 aws-cdk 记录所有其他 s3 存储桶。已创建集中式日志存储桶,但在其上使用 lambda 写入时出错。这是我的代码: 导入boto3

s3 = boto3.resource('s3')

def handler(event, context):
    setBucketPolicy(target_bucket='s3baselinestack-targetloggingbucketbab31bd5-b6y2hkvqz0of')

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



Here is my error:
START RequestId: 320e83c0-ba5e-4d54-a78c-a462d6e0cb87 Version: $LATEST
An error occurred (InvalidTargetBucketForLogging) when calling the PutBucketLogging operation: You must give the log-delivery group WRITE and READ_ACP permissions to the target bucket: ClientError
Traceback (most recent call last):

注意:一切正常,但是当我通过 aws 控制台启用它时,这个日志传递权限可以正常工作,但是,我需要以编程方式进行!提前谢谢你。

【问题讨论】:

    标签: amazon-s3 aws-lambda boto3


    【解决方案1】:

    根据 S3 日志记录的文档,您必须授予 Log DeliveryWRITEREAD_ACP 对日志目标存储桶的权限,这是使用 S3 ACL 完成的。

    https://docs.aws.amazon.com/AmazonS3/latest/dev/enable-logging-programming.html#grant-log-delivery-permissions-general

    使用 CDK 创建新存储桶时,使用 accessControl 属性进行设置。默认值为BucketAccessControl.PRIVATE

    new s3.Bucket(this, 'bucket', {
      accessControl: s3.BucketAccessControl.LOG_DELIVERY_WRITE
    })
    

    由于 CloudFormation 无法将 ACL 添加到现有存储桶,这意味着 CDK 也没有这种方法。使用现有存储桶,通过 Web 控制台、API 或 CLI 添加 Log Deliveryaws s3api put-bucket-acl

    其他服务,例如 CloudFront,不再使用 ACL,而是使用 IAM 策略,可以使用 bucket.addToResourcePolicy() 添加。

    https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.IBucket.html#add-wbr-to-wbr-resource-wbr-policypermission

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2018-09-22
      • 2020-02-04
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多