Amazon S3 Storage를 사용한 Omeka Classic의 데이터 파일 저장소 변경 방법

edited September 2022 in OMEKA

Omeka 시스템에서 데이터 파일 객체가 저장되는 위치를 로컬 서버가 아닌 아마존 S3 스토리지 서버로 변경하는 방법입니다. 참고로 S3는 AWS(Amazon Web Service)에서 제공하는 온라인 상의 스토리지 서비스입니다.


*이미지 출처 : https://aws.amazon.com/ko/s3/#

데이터 스토리지를 웹 서버가 아닌 S3 같은 스토리지 전용 서버를 사용하게 되면 웹 서버에 걸리는 부하를 효과적으로 줄일 수 있고 웹 서버에서 발생할 수 있는 보안 침해 사고 같은 유사 시에도 데이터를 안전하게 보존하고 관리할 수 있습니다.

아마존 S3의 경우 데이터의 기본적인 백업 및 관리 기능 외에 "Glacier Deep Archive"라고 불리는 스토리지 클래스 서비스를 사용하면 아카이브용 데이터 장기 보존도 가능해집니다.
* 참고 : AWS S3 스토리지 서비스 종류(https://aws.amazon.com/ko/s3/storage-classes/)

AWS S3를 사용한다고 해서 자관이 보유하고 있는 서버나 사용 중인 호스팅 서버를 AWS EC2 같은 웹 서버로 이전할 필요는 없습니다. 웹 서버는 그대로 사용하면서 데이터 스토리지만 S3 호스팅을 신청하고 연결해서 사용하면 됩니다. 

Omeka에서 데이터 파일 객체들은 저장 시 로컬 서버의 오메카 시스템 루트 디렉토리 하위의 아래와 같은 경로에 저장됩니다. 해당 파일 객체가 썸네일 이미지 생성이 가능한 파일인 경우에는 자동으로 썸네일이 생성됩니다.
- 원본 파일 객체 : /files/original/
- 최대 사이즈 썸네일 이미지 : /files/fullsize/
- 정사각형 사이즈 썸네일 이미지 : /files/square_thumbnails/
- 기본 사이즈 썸네일 이미지 : /files/thumbnails/

아래의 캡쳐 화면을 보면 로컬 서버의 Omeka 시스템에서 files 하위의 디렉토리에 파일 객체들이 저장된 것을 볼 수 있습니다.


만약 파일 객체 저장소 위치를 로컬 서버가 아닌 아마존 S3 스토리지 서버로 변경하면 파일 객체들은 S3 관리 콘솔에서 생성한 데이터 컨테이너인 버킷에 아래와 같이 각 디렉토리 경로별로 저장됩니다.



S3에서 생성한 버킷에서 orginal 디렉토리에 들어가면 아래와 같이 파일 객체들이 저장된 것을 볼 수 있습니다.



만약 해당 파일 객체의 세부 정보를 보고 싶은 경우엔 해당 파일 객체 링크를 클릭하면 아래와 같은 정보를 확인할 수 있습니다.




Amazon S3  설정 방법
1. AWS S3 호스팅 관리 콘솔 로그인
   계정이 없다면 S3 호스팅 계정을 신규로 신청합니다.
   테스트 용도라면 처음에는 무료 버전으로 신청합니다.

2. 버킷 생성 및 설정
    bucket은 S3에서 데이터 파일이 저장되는 컨테이너인데 간단히 파일 저장 창고라고 생각하시면 됩니다.
    1) 새 버킷 만들기
     버킷 만들기 버튼을 클릭합니다.

    2) 버킷 기본 설정
    버킷 이름과 리전을 선택합니다.
    리전은 AWS의 데이터 센터가 위치해 있는 지역으로 전 세계에 분포되어 있습니다.
    리전 선택은 서울 리전 대신 미국 리전을 선택합니다.
    오메카 시스템에서 S3 연결 테스트 시 서울 리전의 경우는 에러가 발생하는 문제가 있었습니다.
    해당 이슈는 아래 레퍼런스를 참고해 주세요.
   *참고
    AWS 서비스 리전별 엔드포인트
    https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
    Omeka Zend 프레임워크의 S3 스토리지 어댑터 이슈
    https://forum.omeka.org/t/zend-s3-storage-adapter-issue/5633/2

    버킷 기본 설정 시 나머지 옵션은 특별한 설정 없이 넘어가도 됩니다.



    3) 버킷 생성 완료
    버킷 목록에 버킷이 생성되었는지 확인합니다.


    4) 버킷 권한 설정
    - 퍼블릭 액세스 차단
      처음부터 퍼블릭 액세스 차단 설정이 활성화 되어 있으면 버킷 정책을 설정할 수 없습니다.
      편집 버튼을 눌러 차단 설정을 모두 해제한 후 변경 사항을 저장합니다. 



    - 버킷 정책 편집
      편집 버튼을 눌러 정책 편집 모드를 엽니다.

      버킷 정책 입력 영역에 아래의 코드를 복사해서 붙여 넣습니다.
      해당 코드의 기능은 아래 정책 예제 링크에서 "익명 사용자에게 읽기 전용 권한 부여"를 참고해 주세요.
      * 참고 : 버킷 정책 예제
       https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/example-bucket-policies.html
{    "Version": "2012-10-17",    "Statement": [        {            "Sid": "PublicRead",            "Effect": "Allow",            "Principal": "*",            "Action": [                "s3:GetObject",                "s3:GetObjectVersion"            ],            "Resource": [                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"            ]        }    ]}

      한 가지 주의할 사항은 위의 코드에서 Resource Statement에 들어가는 버킷명은 직접 생성한 버킷명을 입력해야 합니다. 위에 나와 있는 버킷명은 예제용 버킷명이므로 반드시 수정해야 합니다.
     버킷 정책 코드 작성이 완료되면 변경 사항을 저장합니다.



      - 버킷 권한 편집 완료
        버킷 정책 설정이 완료되면 아래와 같은 화면이 출력됩니다.



3. 사용자 추가
    1) 새 사용자 추가 및 정보 설정
    새로 생성한 버킷에 접근할 수 있는 사용자 권한을 만들기 위해 사용자 추가 버튼을 눌러 사용자를 추가합니다.


    사용자 세부 정보 설정에선 사용자 이름을 입력하고 AWS 액세스 유형 선택에선 "액세스 키 - 프로그래밍 방식 액세스" 체크 옵션을 선택한 후 다음으로 넘어갑니다.
    


    2) 사용자 권한 설정
    권한 설정 중 "기존 정책 직접 연결" 탭을 선택합니다.


    기존 정책 직접 연결 탭에서 정책 필터 검색창에 s3를 입력한 후 검색하면 아래와 같이 AmazonS3FullAccess 정책이 검색됩니다. 체크 박스 옵션을 선택한 후 다음으로 넘어갑니다.


        3) 선택 사항
        태그 추가를 원하는 경우가 아니면 다음으로 넘어갑니다.


        4) 사용자 설정 검토
        사용자 추가 정보에 문제가 없는지 설정을 검토합니다.


        6) 사용자 액세스 정보 확인 및 정보 다운로드
        사용자 추가가 완료되면 사용자의 액세스 키 ID와 비밀 액세스 키 정보를 확인할 수 있습니다.
        이 정보는 Omeka에서 AWS S3 연결 시 반드시 필요한 정보입니다.
        csv 다운로드 버튼을 클릭하면 해당 정보를 내려받을 수 있습니다.


4. 버킷 설정 마무리
        1) 퍼블릭 엑세스 차단
        버킷 설정 페이지로 돌아온 후 퍼블릭 액세스 차단 편집 화면에서 "모든 퍼블릭 액세스 차단"을 선택한 후 변경사항을 저장합니다.


        
        차단 설정을 하면 아래와 같이 해당 버킷 액세스는 위에서 새로 추가한 권한이 부여된 사용자만 접근이 가능해집니다.



Omeka 시스템  설정 및 파일 저장 테스트
1. Omeka 환경 설정 파일 수정
   오메카 시스템 디렉토리에서 아래 경로의 config.ini 파일을 텍스트 에디터로 엽니다.
   참고로 config.ini는 오메카의 시스템 관련 환경 설정 파일입니다.
   해당 파일은 FTP로 서버에 접근해서 다운 받은 후 편집해도 되고 서버 원격 터미널 모드에서 nano 또는 vi 에디터로 열어서 편집해도 됩니다.
   /application/config/config.ini

   config.ini 파일의 Storage 설정 영역에서 아래와 같은 방식으로 작성합니다.
   작성이 끝나면 열린 파일을 저장합니다.
storage.adapter = "Omeka_Storage_Adapter_ZendS3"storage.adapterOptions.accessKeyId = 위에서 발급 받은 액세스 키 아이디 입력storage.adapterOptions.secretAccessKey = 액세스 키 비밀번호 입력storage.adapterOptions.bucket = 생성한 버킷명 그대로 입력storage.adapterOptions.region = S3에서 설정한 리전 입력storage.adapterOptions.expiration = 10storage.adapterOptions.endpoint = 엔드포인트 주소 입력
   위의 작업까지 완료되면 이제부터는 Omeka 시스템에서 파일 객체를 저장하면 로컬 서버가 아닌 아마존 S3 스토리지 서버에 파일이 저장됩니다.
   S3에 파일이 저장되는지 테스트를 위해 아래의 과정을 수행합니다.

2. 아이템 편집
    1) 파일 객체 첨부
     Omeka 시스템 관리자모드에 들어온 후 아이템 편집 화면에서 파일 탭을 클릭한 후 업로드를 원하는 파일 객체를 선택한 후 변경 사항을 저장합니다.
     


    2) 파일 정보 확인
     파일 링크를 클릭합니다.

      파일 정보에서 오른쪽 하단의 다이렉트 링크 중 아무거나 하나 클릭합니다.


     아래 이미지는 파일 정보에서 원본 파일(orginal) 링크를 클릭했을 때 출력된 이미지인데
     주소창의 주소를 보면 해당 파일의 경로가 로컬 서버가 아닌 아마존 S3 주소로 출력되는 것을 확인할 수 있습니다.
     


아마존 S3 버킷 파일 저장소 확인
1. 버킷 객체 저장 사항 확인
AWS S3 관리 콘솔에서 버킷 객체에 들어가면 아래와 같이 데이터 파일이 저장되는 디렉토리 리스트가 출력됩니다.



이 중 원본 파일이 저장되는 디렉토리인 original 디렉토리를 클릭하면 Omeka 시스템에서 아이템 편집 시 첨부했던 이미지 파일이 아래와 같이 저장되어 있는 것을 확인할 수 있습니다.




Comments

Sign In or Register to comment.