AWS(Amazon Web Service)

[AWS] AWS Integration & Messaging - SNS

yunseohhe 2024. 11. 23. 08:56

Amazon SNS

  • 메시지 하나를 여러 수신자에게 보낸다고 가정보자.
  • 이런 경우 직접 통합을 사용할 수 있는데, 구매 서비스 애플리케이션을 예로 들자면 이메일 알림을 보내고 사기 탐지 서비스와 배송 서비스 그리고 SQS 대기열에도 메시지를 보낼 수 있다. 하지만 수신 서비스를 새로 추가할 때마다 통합을 생성하고 작성해야 하므로 번거로울 수 있다.
  • 대신 Pub/Sub 즉, 게시/구독이라는 것을 사용할 수 있는데, 이를 통해 구매 서비스가 메시지를 SNS 주제로 전송할 수 있다. 메시지를 주제로 게시하는 것이다. 해당 주제에는 많은 구독자가 있으며 각 구독자는 SNS 주제에서 해당 메시지를 수신하고 이를 보관할 수 있다.
  • Amazon SNS에서 "이벤트 생산자"는 한 SNS 주제에만 메시지를 보낸다.
  • "이벤트 수신자" 또는 구독자는 해당 주제와 관련한 SNS 알림을 받으려는 사람이다.
    따라서 SNS 주제 구독자는 해당 주제로 전송된 메시지를 모두 받게 된다. 그리고 메시지를 필터링하는 기능을 사용하는 경우에도 메시지를 받을 수 있다.
  • 주제별 최대 구독자 수는 몇명일까?
      - 주제별로 최대 1,200만 이상의 구독자까지 가능하다.(이 숫자는 추후 변경될 수 있다.)
      - 계정당 가질 수 있는 주제 수는 최대 10만 개이고 더 늘릴 수도 있다.

 

SNS에서 구독자에게 게시할 수 있는 것에는 뭐가 있을까?

  • SNS에서 직접 이메일을 보낼 수 있고, SMS 및 모바일 알림을 보낼 수도 있다.
  • 지정된 HTTP 또는 HTTPS 엔드 포인트로 직접 데이터를 보낼 수도 있다.
  • SQS와 같은 특정 AWS 서비스와 통합하여 메시지를 대기열로 직접 보낼 수도 있고, 메시지를 수신한 후 함수가 코드를 수행하도록 Lambda에 보내거나 Firehose를 통해 데이터를 Amazno S3나 Redshift로 보낼 수도 있다.

 

  • SNS는 다양한 AWS 서비스에서 데이터를 수신한다.
  • SNS로 직접 데이터를 보내는데, CloudWatch 경보 Auto Scaling 그룹 알림 CloudFormation Stae Changes Budgets, S3 버킷, DMS, Lambda, DynamoDB, RDS 이벤트 등이 있다.
  • AWS에서 알림이 발생하면 위의 나열한 서비스가 지정된 SNS 주제로 알림을 보낸다는 것을 알면 된다.

 

SNS - How to publish
(SNS 게시 방법)

  • SDK 주제 게시를 사용해 SNS에 메시지를 게시할 수 있다.
  • 주제를 만든 다음 하나 또는 여러 개의 구독을 만들고 SNS 주제에 게시하면 된다.
      - 그럼 모든 구독자가 자동으로 해당 메시지를 받게 된다.
  • 모바일 앱 SDK 전용 직접 게시 방법은
      - 플랫폼 애플리케이션 만든다.
      - 플랫폼 엔드 포인트에 게시하면 된다.
      - 수신 가능 대상은 Google, GCM, Apple APNS 또는 Amazon ADM 구독자이다. 모두 모바일 애플리케이션으로 알림을 수신하게 된다.

 

SNS - Security

  • 보안 측면에서 SQS와 동일하다
  • 기본적으로 전송 중 암호화와 KMS 키를 사용한 저장 데이터 암호화가 있고, 클라이언트가 SNS에 암호화된 메시지를 보내려는 경우를 위한 클라이언트 측 암호화가 있다.
      - 암호화 및 암호 해독은 클라이언트 몫이다.
  • 액세스 제어는 IAM 정책 중심이다. 모든 SNS API가 IAM 정책으로 규제되기 때문이다.
  • S3 버킷 정책과 매우 유사한 SNS 액세스 정책을 정의할 수 있는데 SNS 주제에 교차 계정 액세스 권한을 갖거나 S3 이벤트와 같은 서비스가 SNS 주제에 작성할 수 있도록 허용하려는 경우 매우 유용하다.