在AWS Lambda中编写函数以阻止S3的公共访问,可以使用AWS SDK for Python(Boto3)来实现。以下是一个示例代码:
import boto3
def lambda_handler(event, context):
# 创建S3客户端
s3_client = boto3.client('s3')
# 获取事件中的S3存储桶名称和对象键
bucket_name = event['Records'][0]['s3']['bucket']['name']
object_key = event['Records'][0]['s3']['object']['key']
# 更新存储桶策略以阻止公共访问
response = s3_client.put_public_access_block(
Bucket=bucket_name,
PublicAccessBlockConfiguration={
'BlockPublicAcls': True,
'IgnorePublicAcls': True,
'BlockPublicPolicy': True,
'RestrictPublicBuckets': True
}
)
# 打印API响应
print(response)
请注意,此函数假设您已将Lambda函数与S3事件触发器一起设置,以便在对象创建时触发函数。因此,它接收一个事件作为输入参数。您可以根据需要修改此代码来适应特定的用例和触发器配置。
此代码将使用S3客户端来更新存储桶策略,以阻止公共访问。它通过put_public_access_block
方法将BlockPublicAcls
、IgnorePublicAcls
、BlockPublicPolicy
和RestrictPublicBuckets
参数设置为True
来实现这一目标。
最后,它打印出API响应,以便您可以在Lambda函数的日志中查看结果。
请注意,为了在Lambda函数中执行此代码,您需要在函数的执行角色中分配具有适当S3权限的IAM策略。