Lambda에서 S3에서 파일을 검색하려고 하면 botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied가 되었을 때의 대응 방법
이벤트 : Lambda 함수에서 Boto3을 사용하여 S3에있는 파일을 얻으려고하면 화가났다.
lambda_function.pydef get_file_from_s3(file_name: str):
"""S3よりファイルを取得する."""
s3 = boto3.client('s3')
try:
file = s3.get_object(Bucket = BUCKET_NAME, Key = 'irai.txt')
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
logger.error("The object does not exist.")
else:
raise e
CloudWatch 로그get_file_from_s3('irai.txt')
File "/var/task/lambda_function.py", line 91, in get_file_from_s3
file = s3.get_object(Bucket = BUCKET_NAME, Key = 'irai.txt')
File "/var/runtime/botocore/client.py", line 314, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/var/runtime/botocore/client.py", line 612, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
원인 : Lambda에 설정된 IAM 역할에 S3에 대한 액세스 권한이 없기 때문에
Lambda는 기능 등록시 해당 기능에서 사용할 IAM 역할을 선택할 수 있다고 생각하므로 S3 액세스 권한이 있는 역할을 선택하십시오. - 스택 오버플로
대응 : IAM 역할에 S3에 대한 액세스 권한 설정
참고 : IAM Role 및 Bucket Policy에서 Amazon S3에 대한 액세스 제어 수행 - yoshidashingo
def get_file_from_s3(file_name: str):
"""S3よりファイルを取得する."""
s3 = boto3.client('s3')
try:
file = s3.get_object(Bucket = BUCKET_NAME, Key = 'irai.txt')
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
logger.error("The object does not exist.")
else:
raise e
get_file_from_s3('irai.txt')
File "/var/task/lambda_function.py", line 91, in get_file_from_s3
file = s3.get_object(Bucket = BUCKET_NAME, Key = 'irai.txt')
File "/var/runtime/botocore/client.py", line 314, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/var/runtime/botocore/client.py", line 612, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
Lambda는 기능 등록시 해당 기능에서 사용할 IAM 역할을 선택할 수 있다고 생각하므로 S3 액세스 권한이 있는 역할을 선택하십시오. - 스택 오버플로
대응 : IAM 역할에 S3에 대한 액세스 권한 설정
참고 : IAM Role 및 Bucket Policy에서 Amazon S3에 대한 액세스 제어 수행 - yoshidashingo
Reference
이 문제에 관하여(Lambda에서 S3에서 파일을 검색하려고 하면 botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied가 되었을 때의 대응 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ponsuke0531/items/c5b0b9fd4f985a311ce9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)