Sungtt

s3 특정 확장자만 업로드하기 본문

React

s3 특정 확장자만 업로드하기

sungtt 2022. 5. 4. 00:42

https://aws.amazon.com/ko/premiumsupport/knowledge-center/s3-allow-certain-file-types/

 

특정 파일 형식으로 Amazon S3 버킷 업로드 제한

Amazon Simple Storage Service(Amazon S3) 버킷에 특정 파일 유형만 저장하려고 합니다. 버킷에서 이러한 파일 유형만 수락하도록 업로드를 제한하려면 어떻게 해야 합니까?

aws.amazon.com

 

기존 버킷 정책

모든것을 허용한다..

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "PublicReadGetObject",
			"Effect": "Allow",
			"Principal": "*",
			"Action": "s3:GetObject",
			"Resource": "arn:aws:s3:::You-Bucket/*"
		}
	]
}

변경 버킷 정책

 

첫번째 시드는

  • 원하는 파일 유형의 확장명이 포함된 객체에 대해서만 s3:PutObject 작업을 허용.

두번째 시드는 

  • 원하는 파일 유형의 확장명이 없는 객체에 대해서는 s3:PutObject 작업을 명시적으로 거부.
    참고: 이 명시적 Deny 문은 Amazon S3 리소스에 대한 전체 액세스 권한이 있는 사용자에게 file-type 요구 사항을 적용.

jpg,png,gif만 가능하게해준다.

주의사항 대소문자를 구분한다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::You-Bucket/*.jpg",
                "arn:aws:s3:::You-Bucket/*.png",
                "arn:aws:s3:::You-Bucket/*.gif"
            ]
        },
        {
            "Sid": "Stmt1464968483619",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "NotResource": [
                "arn:aws:s3:::You-Bucket/*.jpg",
                "arn:aws:s3:::You-Bucket/*.png",
                "arn:aws:s3:::You-Bucket/*.gif"
            ]
        }
    ]
}

 

마무리

s3에 업로드되는 파일들을 거르는 법이다.

프론트에서 1차적으로 필터링한다해도, 자칫 어떠한 오류로 인해

s3로 통신이 이뤄지고 업로드를 시도해도 설정해놓은 파일이 아니라면 차단된다.

 

하지만 역시 1차적으로 프론트에서

input file을 캐치하여 파일 확장자부터 필터링해버리는 방법도 채택해놓자.

Comments