본문 바로가기
[AWS-DR]/S3

[중요] AWS S3 Event Notifications with SNS and SQS !!

by METAVERSE STORY 2024. 6. 30.
반응형
728x170

 

 

 

 

## 중간에 SNS를 사용하는 이유는 확장성으로 제공하기 위함 (SQS, 람다 동시 제공 가능)

 

 

Access Policy that needs to be configured on SQS.
a) replace the SQS ARN
b) replace the SNS ARN.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sns.amazonaws.com"
      },
      "Action": "sqs:SendMessage",
      "Resource": "SQS ARN",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "SNS ARN"
        }
      }
    }
  ]
}

 


Access Policy that needs to be configured on SNS:
a) replace SNS topic ARN
b) Replace s3 bucket ARN
c) Replace account 

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "SNS topic ARN",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "s3 bucket ARN"
                },
                "StringEquals": {
                    "aws:SourceAccount": "account id"
                }
            }
        }
    ]
}

 

 

 

==================  실습  ==============================

 

 

 

1. S3 버킷 생성
- test12345677

 

 

2. SNS 구독 생성
- s3eventtopic

 

 

 

 

3. SQS 큐 생성

 

 

 

## 서비스가 서로 통신할 수 있는 권한 제공

 

4. SNS에서 S3 알람을 받으려면 정책 설정 필요

 

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "SNS topic ARN",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "s3 bucket ARN"
                },
                "StringEquals": {
                    "aws:SourceAccount": "account id"
                }
            }
        }
    ]
}

 

 

 

 

5. SQS에서 SNS주제 메시지를 가져오기 설정 (SQS 정책 설정 필요)

 

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sns.amazonaws.com"
      },
      "Action": "sqs:SendMessage",
      "Resource": "SQS ARN",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "SNS ARN"
        }
      }
    }
  ]
}

 

 

 

6. S3버킷에서 이벤트 알림 구성
- Event notification 선택
- 이벤트 이름 : createevents
- 목적지 : SNS topic 지정

 

 

 

 

7. SNS 구독생성 (SNS ==> SQS)

 

 

 

 

8. S3 파일 업로드 테스트

 

- SQS 대기열 확인

 

- Poll for messages 클릭

 

 

 

 

 

 

 

 

 

https://www.youtube.com/watch?v=OvQVVfz-EGM

 

반응형
그리드형

댓글