Jenkins를 활용한 CI/CD - 6.9 [실습] 버킷명 환경 변수로 등록하기

admin | | 조회 4


[주요 목차]

404 에러가 나는 진짜 이유

S3 버킷 정책 추가하는 실전 단계

ARN 이해하고 정책 저장·확인하기


Jenkins CI/CD 파이프라인을 타고 S3에 정적 웹사이트를 올렸는데, 막상 주소로 들어가면 404만 뜨는 경험 다들 한 번쯤 있으시죠? 저도 처음엔 “업로드는 분명 됐는데 왜 안 보이지?” 하면서 한참 헤맸어요. 사실 원인은 간단합니다. 버킷에 접근 권한을 주는 정책이 없기 때문이에요. 오늘은 Jenkins CI/CD 실습 6.9 과정에서 꼭 알아야 할 S3 버킷 정책 설정 방법을, 실제 화면과 함께 차근차근 풀어보려고 해요. 이 글을 끝까지 읽으면 404 에러를 없애고, ARN 작성법까지 자연스럽게 익힐 수 있을 거예요.


Jenkins를 활용한 CI/CD - 6.9 [실습] 버킷명 환경 변수로 등록하기 - 참고 컷 1 - JenkinsJenkins를 활용한 CI/CD - 6.9 [실습] 버킷명 환경 변수로 등록하기 · 참고 컷 1

404 에러가 나는 진짜 이유

지난 단계까지는 파일을 S3 버킷에 잘 올렸는데, 실제 사이트 주소로 접속하면 404가 뜹니다. 원인은 권한 문제예요. AWS는 기본적으로 모든 접근을 차단해 두기 때문에, 우리가 직접 “이 버킷은 누구나 읽을 수 있다”는 규칙을 만들어 줘야 해요.

이 규칙을 버킷 정책이라고 부르는데, JSON 형식으로 작성합니다. 정책이 없으면 아무리 파일이 있어도 브라우저가 내용을 읽어 올 수 없어요.

비유하자면, 아파트 문은 열려 있는데 초인종이 울리지 않으면 들어갈 수 없는 상황과 비슷합니다. Jenkins CI/CD로 배포 자동화까지 마쳤다면, 이제 이 마지막 문을 열어주는 작업만 남은 셈이에요.

Jenkins를 활용한 CI/CD - 6.9 [실습] 버킷명 환경 변수로 등록하기 - 본문 이미지 2 - JenkinsJenkins를 활용한 CI/CD - 6.9 [실습] 버킷명 환경 변수로 등록하기 · 본문 이미지 2

S3 버킷 정책 추가하는 실전 단계

AWS 콘솔에서 S3 버킷 목록으로 들어가 원하는 버킷을 클릭하세요. 왼쪽 메뉴에서 ‘권한’ 탭을 선택한 뒤, ‘버킷 정책’ 항목의 ‘편집’ 버튼을 누릅니다.

정책 편집 화면이 열리면 ‘문 추가’를 클릭하고, 서비스는 S3로 검색해 선택합니다. 액션(Action)에서는 GetObject를 찾아 추가해 주세요. GetObject는 “파일을 읽어 오는” 권한을 의미합니다.

리소스(Resource) 부분에서는 ARN 형식을 맞춰야 해요. 버킷 이름은 실제 여러분이 사용 중인 버킷명을 그대로 복사해서 붙여넣고, 뒤에 /를 붙여 모든 객체를 대상으로 지정합니다. Principal은 로 두면 누구나 접근할 수 있게 됩니다.

Jenkins를 활용한 CI/CD - 6.9 [실습] 버킷명 환경 변수로 등록하기 - 현장 스냅 3 - JenkinsJenkins를 활용한 CI/CD - 6.9 [실습] 버킷명 환경 변수로 등록하기 · 현장 스냅 3

ARN 이해하고 정책 저장·확인하기

ARN은 Amazon Resource Name의 약자로, AWS 리소스를 정확히 지칭하는 주소라고 생각하면 됩니다. 형식은 arn:aws:s3:::버킷이름/* 입니다. 여기서 버킷 이름을 환경 변수로 관리하면 Jenkins CI/CD 파이프라인에서 여러 환경(개발/운영)으로 쉽게 전환할 수 있어요.

작성을 마쳤다면 ‘변경 사항 저장’을 누릅니다. 저장 후 버킷 정책 목록에 JSON이 추가된 것을 확인할 수 있어요. 이제 사이트 주소를 새로고침해 보세요. “Hello S3” 같은 페이지가 정상적으로 보이면 성공입니다.

만약 실수로 정책을 잘못 작성했다면, AWS Policy Simulator로 미리 테스트해 보는 것도 좋은 방법이에요. 이렇게 한 번 정책을 만들어 두면 다음 배포 때도 동일한 버킷을 재사용할 수 있어 Jenkins CI/CD 흐름이 훨씬 매끄러워집니다.


[자주 묻는 질문]

S3 버킷 정책을 추가했는데도 여전히 404가 나와요.?

정책 JSON의 리소스 ARN이 정확한지 다시 확인해 보세요. 버킷 이름 뒤에 /*가 빠지거나, Principal이 *가 아닌 경우가 많습니다. 또한 브라우저 캐시를 지우고 시크릿 모드로 접속해 보거나, CloudFront를 사용 중이라면 캐시 무효화도 함께 진행해야 해요.

ARN에 버킷명을 직접 쓰지 않고 환경 변수로 등록하려면 어떻게 하나요?

Jenkins Pipeline 스크립트에서 withEnv나 credentials 플러그인을 사용해 버킷명을 변수로 선언할 수 있어요. 예를 들어 env.BUCKET_NAME = 'my-bucket'로 설정한 뒤 정책 생성 단계에서 ${env.BUCKET_NAME} 형태로 치환하면, 코드 변경 없이 여러 환경에서 재사용할 수 있습니다.

버킷 정책과 IAM 역할 중 어떤 걸 먼저 설정해야 하나요?

정적 웹사이트 호스팅의 경우 버킷 정책이 우선입니다. IAM 역할은 EC2나 CodeBuild 같은 서비스가 S3에 접근할 때 필요하고, 일반 사용자가 브라우저로 접근할 때는 버킷 정책으로 공개 범위를 정하는 게 가장 빠른 방법이에요.

목록
글쓰기
한국 서버호스팅
전체보기 →

댓글 0

jpg/png/gif/webp/zip · 최대 100MB · 10개

리뷰

0
0건의 리뷰
5★
0
4★
0
3★
0
2★
0
1★
0
0/5000
아직 작성된 리뷰가 없습니다. 첫 리뷰를 남겨주세요!