본문 바로가기
서버/AWS

[AWS]15. OwnCloud와 S3 연동 (feat. SNS Topic)

by jamong1014 2024. 3. 13.
반응형

필요하다고 느낀 점:

프로젝트를 진행할 때 서로 작업했던 내용을 합치면서 진행해야 하는데 직접 만나서 하지 못하는 경우에는 단톡방에서 파일을 첨부했다는 메시지를 계속 보내면서 작업해야 하는데 이것이 은근 번거롭다 생각하여 구축한 솔루션

 

프로젝트 작업 클라우드는 S3 스토리지를 확장하여 OwnCloud로 제공하고 S3 파일 업로드 시 이벤트 알림을 통해 SNS 프로토콜(SMS, EMAIL, HTTP, HTTPS, SQS 등등)로 업로드 이벤트 로그를 전송할 수 있음.

 

목차

  1. OwnCloud설치 및 Cloudflare 적용 (생략)
  2. IAM 사용자 정책 설정(access/secret key 발급)
  3. OwnCloud에서는 S3 외부 스토리지가 files_external 앱에 번들로 제공되지 않기 때문에 Market에서 따로 설치
  4. S3 정보 입력(버킷명, 호스트네임, IAM Access key, secret key, 리전)
  5. SNS Topic 생성/구독 생성
  6. S3 이벤트 알람 생성

1. OwnCloud 설치 및 Cloudflare 적용 (생략)

 

 

Install ownCloud on Ubuntu 20.04

Install ownCloud on Ubuntu 20.04

doc.owncloud.com

 

 

[Cloudflare]NextCloud에 Cloudflare 적용하기!! (OwnCloud도 가능)

조건 : 클라우드 플레어가 적용된 도메인, nextcloud owncloud등이 구축되어 있는 상태. (클라우드플레어 네임서버를 본인이 갖고 있는 도메인 네임서버에 기입해서 서비스를 이용할 수 있도록 해야

jamong1014.tistory.com

 

 


2. IAM 사용자 정책 설정(access/secret key 발급)

 

IAM - 사용자 생성 후 - AmazonS3FullAccess 정책 추가

 

루트 계정으로도 액세스 키를 생성할 수 있지만 권장하지 않기 때문에 새로운 사용자를 생성하여 액세스 키를 발급받는것이 좋다.

 

 

액세스 키 만들기 - access key와 secret key를 발급 받을 수 있다.


 

3. OwnCloud에서는 S3 외부 스토리지가 files_external 앱에 번들로 제공되지 않기 때문에 Market 에서 따로 설치

 

 

왼쪽 상단 메뉴를 클릭하게 되면 Market에 접속할 수 있는 아이콘이 나온다.

 

 

 

 

밑으로 쭉 내리다 보면 External Storage: S3라고 나온다.

들어가서 설치하면 된다.


4. S3 정보 입력(버킷명, 호스트네임, IAM Access key, secret key, 리전)

 

이제 설정 - 관리자(저장소) - 외부 저장소 활성화

이렇게 하면 외부 저장소 종류에 Amazon S3 compatible 보일 것이다.

 

  1. 버킷 이름 (예 : jamong)
  2. 호스트네임 (S3 버킷 엔드포인트. 예: s3.ap-northeast-2.amazonaws.com)  (만약 제대로된 주소로 기입하지 않을 시 새로 생성된 버킷으로 등록 되니 주의하도록 하자)
  3. 리전 (서울이면 ap-northeast-2)
  4. IAM Access key
  5. IAM secret key

정상적으로 입력됐으면 옆에 초록색 표시로 아이콘이 나온다.

 

추가(선택사항)

 

기본적으로 외부 저장소를 마운트 할 시 공유 링크 생성이 안된다.

만약 다른 사용자들에게 공유하고 싶다면 오른쪽 톱니바퀴 아이콘을 눌러 '공유 사용'을 체크해주면 된다.


5. SNS Topic 생성/구독 생성

 

SNS - 주제 생성

 

표준 - 이름 생성

 

액세스 정책

{
  "Version": "2008-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "SNS:Publish",
      "Resource": "<SNS ARN>",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": [
            "<S3 ARN>"
          ]
        }
      }
    }
  ]
}

S3 버킷이 Resource(SNS)에 대해 Action(SNS:Publish)할 수 있는 정책 설정 후 주제 생성

 

 

생성된 주제에서 구독 생성

 

이메일 - 구독 생성

서울 리전은 SMS를 지원하지 않기 때문에 이용하고 싶은 경우 리전을 바꿔서 생성하면 된다.

(S3도 같은 리전이어야 함)


6. S3 이벤트 알람 생성

 

S3 버킷 - 속성 - 이벤트 알림 생성

OwnCloud에서 생성한 외부 S3 스토리지로 들어가야 한다. 

(OwnCloud에서 생성한 스토리지가 AWS S3 콘솔에 바로 뜨지 않고 좀 기다려야 한다.)

 

이벤트 이름 - 객체 생성에서 모든 객체 생성 이벤트 체크 

나머지는 그대로

 

만약 변경 사항 저장이 구성이 잘못됐다라는 오류가 나오면 SNS 주제 생성의 정책 수정을 잘못한 것이다.

 


결과

 

OwnCloud에 index.html 파일 업로드

 

이런 식으로 메일로 업로드 이벤트 로그를 받을 수 있다.

 

가독성이 안 좋기 때문에 한눈에 알아보기 위해 Lambda 를 통해 필요한 부분만 필터링하여 볼 수도 있다.

 

 

[AWS]16. S3 업로드 이벤트 트리거 Lambda 함수로 SNS 필터

[AWS]15. OwnCloud와 S3 연동 (feat. SNS Topic) 필요하다고 느낀 점: 프로젝트를 진행할 때 서로 작업했던 내용을 합치면서 진행해야 하는데 직접 만나서 하지 못하는 경우에는 단톡방에서 파일을 첨부했

jamong1014.tistory.com

 

반응형

댓글