반응형
봇코어의 NoSuchKey 예외를 캡처하는 방법은 무엇입니까?
저는 "좋은" 파이썬을 작성하고 S3를 캡처하려고 합니다. 이러한 키 오류는 없습니다.
session = botocore.session.get_session()
client = session.create_client('s3')
try:
client.get_object(Bucket=BUCKET, Key=FILE)
except NoSuchKey as e:
print >> sys.stderr, "no such key in bucket"
그러나 NoSuchKey가 정의되지 않아 정의해야 하는 가져오기로 추적할 수 없습니다.
e.__class__
이라botocore.errorfactory.NoSuchKey
그렇지만from botocore.errorfactory import NoSuchKey
오류를 제공하고from botocore.errorfactory import *
또한 작동하지 않으며 일반 오류를 캡처하고 싶지 않습니다.
from botocore.exceptions import ClientError
try:
response = self.client.get_object(Bucket=bucket, Key=key)
return json.loads(response["Body"].read())
except ClientError as ex:
if ex.response['Error']['Code'] == 'NoSuchKey':
logger.info('No object found - returning empty')
return dict()
else:
raise
봇코어 1.5를 사용하면 클라이언트 핸들이 예외 클래스를 표시하는 것처럼 보입니다.
session = botocore.session.get_session()
client = session.create_client('s3')
try:
client.get_object(Bucket=BUCKET, Key=FILE)
except client.exceptions.NoSuchKey as e:
print >> sys.stderr, "no such key in bucket"
boto3에서는 리소스의 메타 클라이언트에 있는 예외에 액세스할 수 있었습니다.
import boto3
s3 = boto3.resource('s3')
s3_object = s3.Object(bucket_name, key)
try:
content = s3_object.get()['Body'].read().decode('utf-8')
except s3.meta.client.exceptions.NoSuchKey:
print("no such key in bucket")
제가 생각하기에 가장 우아한 방법은 보토3입니다.
session = botocore.session.get_session()
client = session.create_client('s3')
try:
client.get_object(Bucket=BUCKET, Key=FILE)
except client.exceptions.NoSuchKey:
print("no such key in bucket")
오류 처리에 대한 설명서는 드문 것처럼 보이지만 다음은 이 작업에 사용되는 오류 코드를 인쇄합니다.
session = botocore.session.get_session()
client = session.create_client('s3')
try:
try:
client.get_object(Bucket=BUCKET, Key=FILE)
except client.exceptions.InvalidBucketName:
print("no such key in bucket")
except AttributeError as err:
print(err)
< bootocore.errorfactory.S30x105e08c50의 예외 개체 > 개체에 'InvalidBucketName' 특성이 없습니다.유효한 예외는 다음과 같습니다. 버킷 이미존재함, 버킷 이미 소유자사용자, 해당 버킷 없음, 해당 키 없음, 해당 업로드 없음, 개체가 이미 있음InActive Tier 오류, 개체 NotActive Tier 오류
언급URL : https://stackoverflow.com/questions/42975609/how-to-capture-botocores-nosuchkey-exception
반응형
'prosource' 카테고리의 다른 글
유형 스크립트 확장 서드 파티 선언 파일 (0) | 2023.07.02 |
---|---|
Pandas DataFrame에 대한 행을 열 헤더로 변환합니다. (0) | 2023.07.02 |
Git의 작업 디렉터리에 변경 사항을 보관하는 동안 변경 사항을 저장합니다. (0) | 2023.07.02 |
언어에 따라 커스텀 포스트 타입 슬러그를 어떻게 다시 작성할 수 있습니까? (0) | 2023.07.02 |
커밋하기 전에 Git에서 후행 공백을 자동으로 제거하도록 합니다. (0) | 2023.07.02 |