Sparta/TIL

[TIL] AWS S3 생성하고 연결하기

jskim4695 2024. 4. 5. 03:25
AWS를 설정하는 것에 막연한 두려움이 있었는데 이번 기회에 조금 극복할 수 있었던 것 같다. 그대로 따라하면 된다지만 네트워크는 수많은 설정이 있고 구글링을 해도 각 자료마다 내용이 다른 경우도 있어서 어떤 것을 채택해야할 지 고민이었다. 이번에 한건 해결했으니 과정을 정리해보려 한다.

 

1. 버킷 생성

1) S3 메인 페이지에서 버킷 만들기 클릭

 

2) AWS 리전-> 서울로 / 이름 설정

3) 모든 퍼블릭 엑세스 차단 - 해제하고 적절한 항목선택

4) 버킷 만들기 클릭

 

 

 

2. 권한 설정

1) 버킷 이름 클릭 - 아래로 스크롤해서 권한탭 클릭 - 버킷 정책 부분에서 편집 클릭

 

2) 정책 생성기 클릭하면 볼수있는 화면인데 아래와 같이 설정

  • aws service는 setobject, putobect 설정
  • principal에 *
  • ARN 버킷 정책 편집 페이지에서 복사해와야 함.
  • 생성기로 생성한 json을 버킷 정책에 붙여넣고 변경사항 저장
{
	"Version": "2012-10-17",
	"Id": "Policy1712210806478",
	"Statement": [
		{
			"Sid": "Stmt1712210805156",
			"Effect": "Allow",
			"Principal": "*",
			"Action": [
				"s3:GetObject",
				"s3:PutObject"
			],
			"Resource": "arn:aws:s3:::<설정한 이름>/*" // 자동으로 들어감
		}
	]
}

 

정책을 설정하면 엑세스가 퍼블릭으로 변하는 것을 확인할 수 있다. 접근은 되니 이제 코드레벨에서 접근하기 위해 엑세스 키를 생성해야 한다.

 

 

3) IAM 설정

1) AWS IAM으로 들어와서 좌측 메뉴의 사용자 클릭 - 사용자 생성 클릭

 

2) 사용자 이름만 생성후 다음 버튼 클릭

 

3) 여기서 기본은 직접 정책 연결 클릭 - AmazonS3FullAccess 선택 - 다음

 

 

4) 검토 후 생성하면 사용자 생성 완료 - 우측에 엑세스 키 만들기 클릭

 

예시와 같은 선택지가 나오는데 현재 코드 작업 후 나중에 EC2와 연결할 거라 AWS 외부에서 실행되는 애플리케이션 선택

이후 선택사항으로 키에 태그를 붙일 수 있다. 이렇게 하고 나면 액세스키와 시크릿 키가 발급되는데 시크릿 키는 이때만 볼 수 있으므로 잘 보관해야 한다. 만들고 난 후에도 정책의 JSON을 편집하면 접근 권한을 설정할 수 있다.

 

그리고 내가 겪었던 에러인데, 코드를 작성하고 나서 API 테스트 중에 발생한 에러이다.

The bucket does not allow ACLs 라는 에러고 S3의 권한 설정에 들어가서 객체 소유권을 찾아서 편집을 클릭

ACL 활성화됨을 클릭한 후 'ACL이 복원된다는 것을 확인합니다. '에 체크하고 변경사항 저장