문제 설명 − Python에서 boto3 라이브러리를 사용하여 웨이터 기능을 사용하여 버킷이 존재하지 않는지 확인합니다. 예를 들어 웨이터를 사용하여 S3에 Bucket_2가 없는지 확인합니다.
이 문제를 해결하기 위한 접근 방식/알고리즘
1단계 − boto3 및 botocore 예외를 가져와 예외를 처리합니다.
2단계 − 함수의 매개변수로 bucket_name을 사용합니다.
3단계 − boto3 라이브러리를 사용하여 AWS 세션을 생성합니다.
4단계 − S3용 AWS 클라이언트를 생성합니다.
5단계 − 이제 bucket_not_exists에 대한 대기 개체를 만듭니다. get_waiter 사용 기능.
6단계 − 이제 대기 를 사용하세요. 버킷이 존재하지 않는지 확인하기 위한 객체입니다. 기본적으로 성공적인 상태에 도달할 때까지 5초마다 체크인합니다. 여기서 성공적인 상태는 버킷이 S3에 없어야 함을 의미합니다. 20번의 검사 실패 후 오류가 반환됩니다. 그러나 사용자가 폴링 시간과 최대 시도 횟수를 정의할 수 있습니다.
7단계 − None을 반환합니다.
8단계 − 버킷을 확인하는 동안 문제가 발생한 경우 일반 예외를 처리합니다.
예시
다음 코드를 사용하여 웨이터를 사용하여 버킷이 존재하는지 여부를 확인하십시오 -
botocore.exceptions에서 boto3 가져오기 import ClientErrordef use_waiters_check_bucket_not_exists(bucket_name):session =boto3.session.Session() s3_client =session.client('s3') 시도:waiter =s3_client.get_waiter('bucket_not_waiter('bucket_not_waiter(') waiter) Bucket=bucket_name, WaiterConfig={ 'Delay':2, 'MaxAttempts':5}) print('Bucket not exist:' + bucket_name) 제외 ClientError as e:raise Exception( "boto3 client error in use_waiters_check_bucket_not_exists:" + e. __str__()) 예외 e:raise Exception( "use_waiters_check_bucket_not_exists의 예기치 않은 오류:" + e.__str__())print(use_waiters_check_bucket_not_exists("Bucket_2"))print(use_waiters_check_bucket_not_exists(")출력버킷이 존재하지 않음:Bucket_2Nonebotocore.exceptions.WaiterError:Waiter BucketNotExists 실패:Maxattempts 초과됨"use_waiters_check_bucket_not_exists에서 예기치 않은 오류:" +e.__str__()) 예외:use_waiters_check_bucket_not_exists 초과 에서 예기치 않은 오류가 실패함>Bucket_2의 경우 출력은 print 문 및 없음입니다. 응답은 아무 것도 반환하지 않으므로 None을 출력합니다.
Bucket_1의 경우 최대 확인 시도 후에도 이 버킷이 존재하므로 출력은 예외입니다.
예외적으로 최대 시도 횟수를 초과한 것으로 읽을 수 있습니다.