Amazon SNS 주제에 대한 프라이빗 HTTP 또는 HTTPS 엔드포인트를 구독하려면 어떻게 해야 합니까?

2분 분량
0

Amazon Simple Notification Service(Amazon SNS) 주제에 대한 프라이빗 HTTP 또는 HTTPS 엔드포인트를 구독하려고 합니다.

해결 방법

Amazon SNS 주제에 대한 프라이빗 HTTP 또는 HTTPS 엔드포인트를 구독하려면 다음 단계를 완료하십시오.

프라이빗 엔드포인트와 동일한 Amazon VPC에 Amazon VPC 보안 그룹 LambdaSG 생성

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창의 보안에서 보안 그룹을 선택합니다. 그런 다음, 보안 그룹 생성을 선택합니다.
  3. 보안 그룹 이름LambdaSG를 입력합니다.
  4. VPC의 경우 프라이빗 엔드포인트가 있는 Amazon 가상 프라이빗 클라우드(VPC)를 선택합니다.
  5. 보안 그룹 생성을 선택합니다.

프라이빗 엔드포인트와 동일한 Amazon VPC 및 서브넷 내에 Lambda 함수를 생성하고 LambdaSG 보안 그룹을 사용하여 구성

  1. Lambda 콘솔을 엽니다.
  2. 함수 생성을 선택합니다.
  3. 새로 작성을 선택합니다.
  4. 함수 이름에 함수의 용도를 설명하는 이름을 입력합니다. Private-endpoint-Amazon-SNS-topic-subscription을 예로 들 수 있습니다.
  5. 런타임에서 Python 3.12를 선택합니다.
  6. 추가 구성을 선택합니다. 그런 다음, VPC 활성화를 선택합니다.
  7. VPC의 경우 프라이빗 엔드포인트가 있는 서브넷을 선택합니다.
  8. 함수 생성을 선택합니다.

프라이빗 엔드포인트의 보안 그룹 규칙을 편집하여 Lambda 함수의 보안 그룹으로부터의 인바운드 연결 허용

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창의 보안에서 보안 그룹을 선택합니다.
  3. 보안 그룹에서 프라이빗 엔드포인트의 보안 그룹을 선택합니다.
  4. 인바운드 규칙 편집을 선택합니다.
  5. 유형에서 HTTP 또느 HTTPS를 선택합니다. 프로토콜 및 ** 포트 범위** 필드는 자동으로 채워집니다.
  6. 소스에서 사용자 지정을 선택합니다. 그런 다음, LambdaSG 보안 그룹을 선택합니다.
  7. 규칙 저장을 선택합니다.

수신 Amazon SNS 알림을 프라이빗 엔드포인트로 전달하도록 Lambda 함수 구성

  1. Lambda 콘솔을 엽니다.
  2. 탐색 창에서 함수를 선택합니다.
  3. 함수 이름에서 이전에 생성한 함수를 선택합니다.
  4. 코드 소스에서 기본 코드를 다음 코드로 바꿉니다.
    from __future__ import print_function
    import json
    import urllib3
    
    http = urllib3.PoolManager()
    
    def lambda_handler(event, context):
        url = "PRIVATE_HTTP/S_ENDPOINT_URL"
    
        sns_message_payload = event["Records"][0]["Sns"]
    
        sns_message_headers = {
            "x-amz-sns-message-id": sns_message_payload['MessageId'],
            "x-amz-sns-message-type": sns_message_payload["Type"],
            "x-amz-sns-subscription-arn" : event["Records"][0]["EventSubscriptionArn"],
            "x-amz-sns-topic-arn" : sns_message_payload["TopicArn"]
        }
    
        try:
            r = http.request('POST', url, headers=sns_message_headers, body=json.dumps(sns_message_payload))
            print(r.data)
        except Exception as e:
            print(e)
    중요: url 값을 프라이빗 엔드포인트의 URL로 바꾸십시오.
  5. 배포를 선택합니다.

Amazon SNS 주제에 대한 Lambda 함수 구독

자세한 내용은 자습서: Amazon SNS에서 Lambda 사용을 참조하십시오.

AWS 공식
AWS 공식업데이트됨 4달 전