Aws Lambda Python S3 Presinedurl 오류 질문이요

0

아래와 같이 s3 = boto3.client('s3',region_name='ap-northeast-2',config=boto3.session.Config(signature_version='s3v4',)) s3.generate_presigned_url('get_object',Params={'Bucket': bucket_name,'Key': object_name},ExpiresIn=expiration)

형태로 URL 생성 시 https://{bucketNm}.s3.amazonaws.com/**** 로 생성이 됩니다.. 해당 경로로 접근 시 접근 오류발생합니다. 제가 알고 있는 범위 https://{bucketNm}.s3.{region}.amazonaws.com/*** 과 같이 리전 정보도 URL에 포함되어야 되는것으로 알고 있습니다. 원인이 무엇일까요?

질문됨 2달 전457회 조회
1개 답변
0

안녕하세요.

이해하고 계신것처럼, presigned URLs을 통한 S3 오브젝트요청은 1) 경로방식(Path-style) 혹은 2) 가상호스팅방식(Virtual-hosted-style)의 요청 2가지를 통해 접근이 가능합니다. 각 포멧은 아래와 같습니다.

  1. 경로 방식 요청
  1. 가상 호스팅 방식 요청

하지만, Lambda 함수를 통해 생성된 경로는 레거시 전역 엔드포인트 (Legacy global endpoint) 형태로 보입니다. 이 레거시 전역 엔드포인트는 사용에 있어서 제한적이기 때문에, 이보다는 위 두가지 경로 중 하나로 presigned URLs 이 생성되어야 맞습니다.

일반적으로 presigned URLs이 잘못 생성되는 경우는, 코드에서 설정이 잘못되어 발생하기 때문에, 실행간 설정에 대한 부분을 상세히 확인할 것을 권고드립니다. boto3의 경우 디버그 로깅을 설정하여 실행간 세부적인 설정을 확인할 수 있다는점 참고바랍니다.

References

[1] https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/VirtualHosting.html

[2] https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/boto3.html

답변함 2달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인