지난 2022.04.02 - [Redmine on AWS] NLB 생성 글까지 진행해서 문제가 없다면, Redmine이 동작하는 것을 확인할 수 있다.
S3는 AWS 스토리지 서비스로 모든 종류의 데이터를 저장할 수 있는 key 기반의 객체 스토리지이다.
이번 글에서는 Redmine에 업로드한 파일을 저장하기 위한 S3 Bucket을 생성하고, Redmine S3 플러그인을 설치하고자 한다. 참고로 공식 플러그인은 아니다.
Redmine에 업로드한 파일은 기본적으로 Redmine이 동작하는 WAS 인스턴스 내에 저장된다. 하나의 WAS 인스턴스가 동작한다면 별다른 문제가 없겠지만, 이 글에서는 로드 밸런서가 2개 이상의 WAS 인스턴스에 트래픽을 분산시키면서 동작하기 때문에 모든 WAS가 동일하게 파일에 접근할 수 있는 저장공간이 필요하다.
따라서 S3를 파일 서버로 사용할 것이다.
S3 버킷 생성
1. AWS console에서 S3 서비스로 접근하여 버킷 만들기 버튼 클릭
2. S3 구성 정보 설정
2-1) 일반 구성 및 객체 소유권
이름과 데이터가 위치한 리전을 선택한다.
2-2) 퍼블릭 액세스 차단 및 버전 관리 설정
기본값으로 설정했다.
2-3) 태그 및 암호화
역시 기본값으로 설정했다.
참고로 고급 설정에서는 객체 잠금을 설정할 수 있는데, 이 설정은 버전 관리 설정과 관련이 있는 것으로 보인다.
Access Key 생성
AWS CLI나 기타 프로그램을 통해 S3에 접근하기 위해서는 접근 권한이 필요하다. 보통 IAM Role 또는 Access Key를 이용하는데 이 글에서 사용할 S3 플러그인은 Access key 사용이 필요하다.
IAM에서 S3 접근용으로 사용할 사용자를 생성하는 방식으로 진행할 것이다.
1. AWS 콘솔에서 IAM 서비스에 접근한다.
2. 왼쪽 메뉴바의 사용자로 접근하여, 사용자 추가 버튼을 클릭한다.
3. 사용자의 이름을 설정한다.
접근 유형은 액세스 키 - 프로그래밍 방식 액세스로 선택한다.
3. 권한 설정
S3에 파일을 업로드하고 다운로드할 수 있어야 하므로 AWS 정책 중 하나의 AmazonS3FullAccess를 사용한다.
3. 태그 추가
필요한 경우 태그를 추가한다.
4. 설정 검토
설정한 내용을 확인하고 사용자 만들기 버튼을 클릭한다.
5. 생성된 사용자 정보 확인
사용자 추가가 완료되면 액세스 키와 비밀 키를 확인할 수 있다.
해당 정보가 포함된 .csv 파일을 다운로드하거나, 잘 복사하여 저장해둔다.
S3 플러그인 설치
WAS에 설치한다.
Git 주소 : https://github.com/jhovad/redmine4_amazon_s3
설치 문서 : https://github.com/jhovad/redmine4_amazon_s3/blob/master/docs/index.md
1. redmine 설치 경로에 플러그인 다운로드
cd /opt/redmine
git clone https://github.com/x3ro/redmine_amazon_s3 plugins/amazon_s3
2. 예시 설정 파일 복사하여 수정
cp plugins/amazon_s3/config/amazon_s3.example.yml config/amazon_s3.yml
내용
production:
# AWS access key (required)
access_key_id: <액세스 키>
# AWS secret key (required)
secret_access_key: <비밀 키>
# Bucket name (required)
bucket: <버킷명>
# Identifier for the region in which the bucket was created (required)
region: <리전명>
# Folder name inside bucket where uploaded files should be stored (e.g. 'attachments')
# The default behavior is to store data in the bucket's root directory
# attachments_folder:
# Folder where attachment thumbnails are stored
# thumbnails_folder: thumbnails/
development:
# Copy configuration from `production` if desired
test:
# Copy configuration from `production` if desired
3. 의존성 업데이트
bundle install --without development test
4. .git 파일 삭제
rm -Rf plugins/redmine_s3/.git