botocore의 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
botocore 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")
이 작업을 수행하는 가장 우아한 방법은 Boto3에서
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)
<botocore.errorfactory.S3Exceptions object at 0x105e08c50> object has no attribute 'InvalidBucketName'. 유효한 예외는 다음과 같습니다. BucketAlreadyExists, BucketAlreadyOwnedByYou, NoSuchBucket, NoSuchKey, NoSuchUpload, ObjectAlreadyInActiveTierError, ObjectNotInActiveTierError
참고 URL : https://stackoverflow.com/questions/42975609/how-to-capture-botocores-nosuchkey-exception
'ProgramingTip' 카테고리의 다른 글
AngularJS : 모든 양식 오류 프로그램 (0) | 2020.11.17 |
---|---|
PhpStorm을 사용하여 선택 항목을 따옴표로 묶는 방법은 무엇입니까? (0) | 2020.11.17 |
Subversion 대신 Perforce를 사용하면 어떤 이점이 있습니까? (0) | 2020.11.17 |
xpath : 값에 노드가 포함 된 주어진 속성이있는 노드를 찾습니다. (0) | 2020.11.17 |
UIControl을 선택 하위 클래스 화하는 방법은 무엇입니까? (0) | 2020.11.17 |