如何使用Boto3和AWS客户端获取S3存储桶的通知配置详细信息?
问题陈述: 使用Python中的Boto3库获取S3存储桶的通知配置。例如,在S3中查找Bucket_1的通知配置详细信息。
阅读更多:Python 教程
解决该问题的方法/算法
步骤1 - 导入Boto3和Botocore异常以处理异常。
步骤2 - 使用bucket_name作为函数参数。
步骤3 - 使用Boto3库创建AWS会话。
步骤4 - 创建用于S3的AWS客户端。
步骤5 - 现在使用函数 get_bucket_notification_configuration 并传递存储桶名称。
步骤6 - 它返回包含有关S3的详细信息的字典。如果未设置通知,则返回NONE。
步骤7 - 如果删除文件时出现问题,请处理通用异常。
示例
使用以下代码获取通知配置详细信息 –
import boto3
from botocore.exceptions import ClientError
def get_bucket_notificationconfiguration_of_s3(bucket_name):
session = boto3.session.Session()
s3_client = session.client('s3')
try:
result = s3_client.get_bucket_notification_configuration(Bucket=bucket_name,)
except ClientError as e:
raise Exception( "boto3 client error in get_bucket_notificationconfiguration_of_s3: " + e.__str__())
except Exception as e:
raise Exception( "Unexpected error in get_bucket_notificationconfiguration_of_s3 function: " + e.__str__())
return result
print(get_bucket_notificationconfiguration_of_s3("Bucket_1"))
输出
{
"TopicConfigurations": [
{
"Id": "string",
"TopicArn": "string",
"Events": [
"s3:ReducedRedundancyLostObject"|"s3:ObjectCreated:*"|"s3:ObjectCreated: Put"|"s3:ObjectCreated:Post"|"s3:ObjectCreated:Copy"|"s3:ObjectCreated:C
ompleteMultipartUpload"|"s3:ObjectRemoved:*"|"s3:ObjectRemoved:Delete"|
"s3:ObjectRemoved:DeleteMarkerCreated"|"s3:ObjectRestore:*"|"s3:ObjectRes
tore:Post"|"s3:ObjectRestore:Completed"|"s3:Replication:*"|"s3:Replicati
on:OperationFailedReplication"|"s3:Replication:OperationNotTracked"|"s3:
Replication:OperationMissedThreshold"|"s3:Replication:OperationReplicate
dAfterThreshold",
],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "prefix"|"suffix",
"Value": "string"
},
]
}
}
},
],
"QueueConfigurations": [
{
"Id": "string",
"QueueArn": "string",
"Events": [
"s3:ReducedRedundancyLostObject"|"s3:ObjectCreated:*"|"s3:ObjectCreated:
Put"|"s3:ObjectCreated:Post"|"s3:ObjectCreated:Copy"|"s3:ObjectCreated:C
ompleteMultipartUpload"|"s3:ObjectRemoved:*"|"s3:ObjectRemoved:Delete"|
"s3:ObjectRemoved:DeleteMarkerCreated"|"s3:ObjectRestore:*"|"s3:ObjectRes
tore:Post"|"s3:ObjectRestore:Completed"|"s3:Replication:*"|"s3:Replicati
on:OperationFailedReplication"|"s3:Replication:OperationNotTracked"|"s3:
Replication:OperationMissedThreshold"|"s3:Replication:OperationReplicate
dAfterThreshold",
],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "prefix"|"suffix",
"Value": "string"
},
]
}
}
},
],
"LambdaFunctionConfigurations": [
{
"Id": "string",
"LambdaFunctionArn": "string",
"Events": [
"s3:ReducedRedundancyLostObject"|"s3:ObjectCreated:*"|"s3:ObjectCreated:
Put"|"s3:ObjectCreated:Post"|"s3:ObjectCreated:Copy"|"s3:ObjectCreated:C
ompleteMultipartUpload"|"s3:ObjectRemoved:*"|"s3:ObjectRemoved:Delete"|
"s3:ObjectRemoved:DeleteMarkerCreated"|"s3:ObjectRestore:*"|"s3:ObjectRes
tore:Post"|"s3:ObjectRestore:Completed"|"s3:Replication:*"|"s3:Replicati
on:OperationFailedReplication"|"s3:Replication:OperationNotTracked"|"s3:
Replication:OperationMissedThreshold"|"s3:Replication:OperationReplicate
dAfterThreshold",
],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "prefix"|"suffix",
"Value": "string"
},
]
}
}
},
]
注意: 此输出取决于存储桶的设置/权限。如果某些设置/权限是默认值或未设置,则它将省略结果。类似地,如果未为存储桶设置通知,则返回“NONE”。
极客教程