如何使用Boto3和AWS客户端获取S3存储桶的通知配置详细信息?

如何使用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”。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程