S3 pre-signed url(미리 서명된 url) 유효 기간 늘리기

S3에서 pre-signed url(미리 서명된 url)의 유효 기간을 늘리는 방법에 대해서 정리 해봤습니다.
2022.03.26

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 S3에서 pre-signed url(미리 서명된 url)의 유효 기간을 늘리는 방법에 대해서 정리 해봤습니다.

pre-signed url(미리 서명된 url)에 관한 설명은 아래 블로그를 참고해 주세요.

pre-signed url 문제점

aws s3 presign s3://jaewook-presigned-test/test.txt --expires-in 43200

12시간 동안 pre-signed url을 유지하는 명령어를 입력합니다.

하지만 1시간이 경과하면 바로 pre-signed url이 만료 되어버립니다.

AWS 공식문서에 의하면 루트 사용자의 경우 최대 1시간이 유효하고, IAM 사용자의 경우 최대 36시간 동안 유효합니다.

  • AWS Identity and Access Management(IAM) 인스턴스 프로파일: 최대 6시간 동안 유효합니다.
  • AWS Security Token Service(STS): IAM 사용자가 서명한 경우 최대 36시간 동안 유효하며, 루트 사용자가 서명한 경우 최대 1시간 동안 유효합니다.
  • IAM 사용자: AWS Signature 버전 4를 사용할 경우 최대 7일 동안 유효합니다.

 IAM User로 pre-signed-url 생성

먼저 IAM에서 사용자 카테고리로 들어온 다음「사용자 추가」버튼을 클릭합니다.

적절하게 사용자 이름을 적고, AWS 자격 증명 유형을 선택하는데, 먼저 콘솔 환경에서 작업을 진행 하고 싶다면「암호 – AWS 관리 콘솔 액세스」를 체크하고, CLI로 하고 싶다면「액세스 키 – 프로그래밍 방식 액세스」를 체크합니다. 참고로 콘솔로 pre-signed url를 생성할 경우 최대 12시간 동안 유효 합니다.

pre-signed url을 생성하는 데 있어서 별 다른 정책은 필요 없지만, 일단 S3 bucket을 읽어오고, 파일을 전송할 생각이기 때문에 FullAccess권한을 줍니다.

그리고 csv 파일을 다운로드 받아서 IAM User로 접속합니다.

이어서 IAM User의 보안 자격 증명에서 MFA를 할당합니다.

export AWS_DEFAULT_REGION="ap-northeast-1"
export AWS_ACCESS_KEY_ID="csv 파일에 적혀있는 코드"
export AWS_SECRET_ACCESS_KEY="csv 파일에 적혀있는 코드"
aws sts get-session-token --serial-number 할당된 MFA 디바이스arn --token-code "123456"

다음과 같이 임시 토큰이 발행되면 접속 성공입니다.

aws s3 cp clanyan.png s3://s3-jaewook-bucket

이제 버킷에 clanyan.png 이미지 파일을 업로드 합니다.

aws s3 presign s3://s3-jaewook-bucket/clanyan.png --expires-in 43200

다음 명령어를 입력하면 12시간의 유효 기간을 가진 pre-signed-url이 생성됩니다.

url로 접속해 보면 쿠라냥 이미지가 출력되는 것을 확인할 수 있습니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !

참고