

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon SNS 이벤트를 AWS Event Fork Pipelines에 팬아웃
<a name="sns-fork-pipeline-as-subscriber"></a>


|  | 
| --- |
| 이벤트 아카이브 및 분석을 위해 Amazon SNS는 이제 Amazon Data Firehose와의 기본 통합 기능을 사용할 것을 권장합니다. Firehose 전송 스트림에서 SNS 주제를 구독하여 Amazon Simple Storage Service(Amazon S3) 버킷, Amazon Redshift 테이블, Amazon OpenSearch Service(OpenSearch Service) 등과 같은 아카이브 및 분석 엔드포인트에 알림을 보낼 수 있습니다. Firehose 전송 스트림에서 Amazon SNS를 사용하는 것은 AWS Lambda 함수를 사용할 필요가 없는 완전 관리형 코드 없는 솔루션입니다. 자세한 내용은 [Firehose 전송 스트림으로 팬아웃](sns-firehose-as-subscriber.md) 단원을 참조하십시오. | 

Amazon SNS를 사용하여 게시자 서비스에 의해 트리거되는 이벤트에 응답하여 자동으로 작업을 수행하는 구독자 서비스를 사용하는 이벤트 기반 애플리케이션을 빌드할 수 있습니다. 이 아키텍처 패턴은 서비스에서 재사용성, 상호 작용성 및 확장성을 향상할 수 있습니다. 하지만 이벤트 저장, 백업, 검색, 분석, 다시 보기 등 일반적인 이벤트 처리 요구 사항을 해결하는 파이프라인으로 이벤트 처리를 분기하는 것은 공수가 많이 들어갈 수 있습니다.

이벤트 기반 애플리케이션의 개발을 가속화하기 위해 AWS Event Fork Pipelines 기반 이벤트 처리 파이프라인에서 Amazon SNS 주제를 구독할 수 있습니다. AWS Event Fork Pipelines은 [AWS 서버리스 애플리케이션 모델](https://aws.amazon.com/serverless/sam/)(AWS SAM)을 기반으로 하는 오픈 소스 [중첩](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) 애플리케이션 제품군으로, [AWS Event Fork Pipelines 제품군](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines)(사용자 **지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시** 선택)에서 AWS 계정에 직접 배포할 수 있습니다.

 AWS Event Fork Pipelines 사용 사례는 섹션을 참조하세요[Amazon SNS Event Fork Pipelines 샘플 애플리케이션 배포 및 테스트](sns-deploy-test-fork-pipelines-sample-application.md).

**Topics**
+ [AWS Event Fork Pipelines 작동 방식](#how-sns-fork-works)
+ [AWS Event Fork 파이프라인 배포](#deploying-sns-fork-pipelines)
+ [Amazon SNS Event Fork Pipelines 샘플 애플리케이션 배포 및 테스트](sns-deploy-test-fork-pipelines-sample-application.md)
+ [AWS Event Fork Pipelines에서 Amazon SNS 주제 구독](sns-subscribe-event-fork-pipelines.md)

## AWS Event Fork Pipelines 작동 방식
<a name="how-sns-fork-works"></a>

AWS Event Fork Pipelines은 서버리스 설계 패턴입니다. 그러나 AWS SAM(이벤트 기반 플랫폼을 보강하기 AWS 계정 위해 (AWS SAR)에서 AWS Serverless Application Repository 로 직접 배포할 수 있음)을 기반으로 하는 중첩된 서버리스 애플리케이션 제품군이기도 합니다. 아키텍처에서 필요할 경우 이러한 중첩 애플리케이션을 개별적으로 배포할 수 있습니다.

**Topics**
+ [이벤트 저장 및 백업 파이프라인](#sns-fork-event-storage-and-backup-pipeline)
+ [이벤트 검색 및 분석 파이프라인](#sns-fork-event-search-and-analytics-pipeline)
+ [이벤트 다시 보기 파이프라인](#sns-fork-event-replay-pipeline)

다음 다이어그램은 세 개의 중첩 애플리케이션으로 보완된 AWS Event Fork Pipelines 애플리케이션을 보여줍니다. 아키텍처에 필요한 대로 SAR의 AWS Event Fork Pipelines 제품군 AWS 에서 파이프라인을 독립적으로 배포할 수 있습니다.

![\[Amazon SNS 주제의 이벤트가 이벤트 스토리지 및 백업, AWS 이벤트 검색 및 분석, 이벤트 재생이라는 세 가지 파이프라인을 통해 필터링되고 처리되는 방법을 보여주는 Event Fork Pipelines 아키텍처입니다. 이러한 파이프라인은 수직 스택 상자로 표시되며, 각각은 동일한 Amazon SNS 주제와 병렬로 이벤트를 독립적으로 처리합니다.\]](http://docs.aws.amazon.com/ko_kr/sns/latest/dg/images/sns-fork-pipeline-as-subscriber-how-it-works.png)


각 파이프라인은 동일한 Amazon SNS 주제를 구독하여 이러한 이벤트가 주제에 게시될 경우 동시에 이벤트를 처리할 수 있습니다. 각 파이프라인은 독립적이며 각각 [구독 필터 정책](sns-subscription-filter-policies.md)을 설정할 수 있습니다. 그러므로 특정 파이프라인이 주제에 게시되는 모든 이벤트가 아니라 이벤트 하위 집합만 처리할 수 있습니다.

**참고**  
세 개의 AWS Event Fork Pipelines을 일반 이벤트 처리 파이프라인(아마도 이미 Amazon SNS 주제를 구독한 경우)과 함께 배치하므로 기존 워크로드에서 AWS Event Fork Pipelines을 활용하기 위해 현재 메시지 게시자의 어떤 부분도 변경할 필요가 없습니다.

### 이벤트 저장 및 백업 파이프라인
<a name="sns-fork-event-storage-and-backup-pipeline"></a>

다음 다이어그램은 [이벤트 저장 및 백업 파이프라인](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-event-storage-backup-pipeline)입니다. 이 파이프라인에서 Amazon SNS 주제를 구독하여 시스템을 통과하는 이벤트를 자동으로 백업할 수 있습니다.

이 파이프라인은 Amazon SNS 주제에서 전달되는 이벤트를 버퍼링하는 Amazon SQS 대기열, 대기열에서 이러한 이벤트를 자동으로 폴링하여 스트림으로 푸시하는 AWS Lambda 함수, 스트림에서 로드된 이벤트를 내구성 있게 백업하는 Amazon S3 버킷으로 구성됩니다. Amazon SNS 

![\[Amazon SNS 주제에서 이벤트를 처리하고 백업하도록 설계된 Fork-Event-Storage-Backup-Pipeline입니다. 흐름은 이벤트가 Amazon SQS 대기열로 팬아웃되는 Amazon SNS Amazon SQS 주제로 시작됩니다. 그런 다음 이러한 필터링된 이벤트는 Lambda 함수에 의해 처리되어 Data Firehose로 전달됩니다. Firehose 스트림은 이벤트를 Amazon S3 백업 버킷에 로드하기 전에 이벤트를 버퍼링, 변환 및 압축하는 역할을 합니다. 마지막으로 Amazon Athena를 사용하여 저장된 데이터를 쿼리할 수 있습니다. 이 다이어그램은 일련의 아이콘과 화살표를 사용하여 한 서비스에서 다음 서비스로의 흐름을 보여주며 파이프라인의 각 구성 요소에 명확하게 레이블을 지정합니다.\]](http://docs.aws.amazon.com/ko_kr/sns/latest/dg/images/sns-fork-event-storage-and-backup-pipeline.png)


Firehose 스트림의 동작을 미세 조정하려면 버킷으로 로드하기 전에 이벤트를 버퍼링, 변환 및 압축하도록 구성할 수 있습니다. 이벤트가 로드될 때 Amazon Athena를 사용하여 표준 SQL 쿼리로 버킷을 쿼리할 수 있습니다. 또한 기존 Amazon S3 버킷을 재사용하거나 새 버킷을 생성하도록 파이프라인을 구성할 수 있습니다.

### 이벤트 검색 및 분석 파이프라인
<a name="sns-fork-event-search-and-analytics-pipeline"></a>

다음 다이어그램은 [이벤트 검색 및 분석 파이프라인](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-event-search-analytics-pipeline)입니다. 이 파이프라인에서 Amazon SNS 주제를 구독하여 검색 도메인에서 시스템을 통과하는 이벤트를 인덱싱한 후 이들 이벤트에 대해 분석을 실행할 수 있습니다.

이 파이프라인은 Amazon SNS 주제에서 전달된 이벤트를 버퍼링하는 Amazon SQS 대기열, 대기열에서 이벤트를 폴링하여 스트림으로 푸시하는 AWS Lambda 함수, Firehose 스트림에서 로드한 이벤트를 인덱싱하는 Amazon OpenSearch Service 도메인, 검색 도메인에서 인덱싱할 수 없는 배달 못한 편지 이벤트를 저장하는 Amazon S3 버킷으로 구성됩니다. Amazon SNS 

![\[AWS 아키텍처 내의 이벤트 검색 및 분석 파이프라인입니다. 모든 이벤트를 수신하는 Amazon SNS 주제와 함께 왼쪽에서 시작됩니다. 그런 다음 이러한 이벤트는 '필터링된 이벤트 팬아웃'을 나타내는 점선을 통해 Amazon SQS 대기열로 퍼널링됩니다. 대기열에서 이벤트는 Lambda 함수에 의해 처리된 다음 Data Firehose 스트림으로 전달됩니다. Data Firehose는 이벤트를 두 대상으로 보냅니다. 한 경로는 인덱싱을 위해 Amazon Elasticsearch Service로 연결되고, 다른 경로는 처리할 수 없거나 “dead-letter” 이벤트를 Amazon S3 데드 레터 버킷으로 보냅니다. 맨 오른쪽에서 Elasticsearch Service의 출력은 분석 및 시각화를 위해 Kibana 대시보드로 공급됩니다. 전체 흐름은 수평으로 배치되며 각 구성 요소는 데이터 흐름 방향을 보여주는 줄로 연결됩니다.\]](http://docs.aws.amazon.com/ko_kr/sns/latest/dg/images/sns-fork-event-search-and-analytics-pipeline.png)


이벤트 버퍼링, 변환 및 압축에서 Firehose 스트림을 미세 조정하기 위해 이 파이프라인을 구성할 수 있습니다.

파이프라인이의 기존 OpenSearch 도메인을 재사용할지 AWS 계정 아니면 새 도메인을 생성할지도 구성할 수 있습니다. 검색 도메인에서 이벤트가 인덱싱될 때 Kibana를 사용하여 이벤트에 대한 분석을 실행하고 시각적 대시보드를 실시간으로 업데이트할 수 있습니다.

### 이벤트 다시 보기 파이프라인
<a name="sns-fork-event-replay-pipeline"></a>

다음 다이어그램은 [이벤트 다시 보기 파이프라인](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-event-replay-pipeline)입니다. 시스템에서 지난 14일간 처리한 이벤트를 기록하려면 이 파이프라인에서 Amazon SNS 주제를 구독한 후 이벤트를 다시 처리할 수 있습니다(예를 들어 플랫폼이 장애로부터 복구해야 할 경우).

이 파이프라인은 Amazon SNS 주제에서 전달되는 이벤트를 버퍼링하는 Amazon SQS Amazon SNS 대기열과 대기열에서 이벤트를 폴링하고 일반 이벤트 처리 파이프라인으로 리드라이브하는 AWS Lambda 함수로 구성되며,이 또한 주제를 구독합니다.

![\[순서도 형식의 이벤트 재생 파이프라인입니다. 왼쪽에서 오른쪽으로, 필터링된 이벤트를 두 개의 병렬 프로세스에 배포하는 Amazon SNS 주제로 시작합니다. 상위 흐름은 이벤트를 처리하는 Amazon SQS 대기열을 포함하는 정규 이벤트 처리 파이프라인을 나타냅니다. 'fork-event-replay-pipeline'으로 레이블이 지정된 하위 흐름에는 Lambda 재생 함수에 의해 처리되기 전에 이벤트가 일시적으로 저장되는 Amazon SQS 재생 대기열이 포함됩니다. 이 Lambda 함수는 재생 기능이 활성화 또는 비활성화되었는지 여부에 따라 이벤트를 일반 이벤트 처리 파이프라인으로 재구동하거나 재생을 위해 이벤트를 보류할 수 있는 기능이 있습니다. 또한 다이어그램은 연산자가 이벤트 재생 기능을 활성화하거나 비활성화할 수 있는 제어 권한이 있음을 나타냅니다.\]](http://docs.aws.amazon.com/ko_kr/sns/latest/dg/images/sns-fork-event-replay-pipeline.png)


**참고**  
기본적으로 다시 보기 함수는 비활성화되어 이벤트를 리드라이브하지 않습니다. 이벤트를 다시 처리해야 할 경우 AWS Lambda 다시 보기 함수용 이벤트 소스로 Amazon SQS 다시 보기 대기열을 활성화해야 합니다.

## AWS Event Fork 파이프라인 배포
<a name="deploying-sns-fork-pipelines"></a>

[AWS Event Fork Pipelines 제품군](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines)(사용자 **지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시** 선택)은 [AWS Lambda 콘솔](https://console.aws.amazon.com/lambda/)을 사용하여 수동으로 배포하고 테스트할 수 AWS Serverless Application Repository있는의 퍼블릭 애플리케이션 그룹으로 사용할 수 있습니다. AWS Lambda 콘솔을 사용하여 파이프라인을 배포하는 방법에 대한 자세한 내용은 섹션을 참조하세요[AWS Event Fork Pipelines에서 Amazon SNS 주제 구독](sns-subscribe-event-fork-pipelines.md).

프로덕션 시나리오에서는 전체 애플리케이션의 AWS SAM 템플릿 내에 AWS Event Fork Pipelines을 포함하는 것이 좋습니다. 중첩 애플리케이션 기능을 사용하면 중첩 애플리케이션의 AWS SAR `ApplicationId` 및를 참조하여 `[AWS::Serverless::Application](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-application)` AWS SAM 템플릿에 리소스를 추가하여이 작업을 수행할 `SemanticVersion` 수 있습니다.

예를 들어 AWS SAM 템플릿의 `Resources` 섹션에 다음 YAML 코드 조각을 추가하여 이벤트 스토리지 및 백업 파이프라인을 중첩 애플리케이션으로 사용할 수 있습니다.

```
Backup:   
    Type: AWS::Serverless::Application
  Properties:
    Location:
      ApplicationId: arn:aws:serverlessrepo:us-east-2:123456789012:applications/fork-event-storage-backup-pipeline
      SemanticVersion: 1.0.0
    Parameters: 
      #The ARN of the Amazon SNS topic whose messages should be backed up to the Amazon S3 bucket.
      TopicArn: !Ref MySNSTopic
```

파라미터 값을 지정할 때 AWS CloudFormation 내장 함수를 사용하여 템플릿의 다른 리소스를 참조할 수 있습니다. 예를 들어 위의 YAML 코드 조각에서 `TopicArn` 파라미터는 AWS SAM 템플릿의 다른 곳에 `MySNSTopic`정의된 `[AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)` 리소스를 참조합니다. 자세한 정보는 *AWS CloudFormation 사용 설명서*의 [내장 함수 참조](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html)를 확인하세요.

**참고**  
 AWS SAR 애플리케이션의 AWS Lambda 콘솔 페이지에는 AWS SAR 애플리케이션을 클립보드에 중첩하는 데 필요한 YAML을 복사하는 **SAM 리소스로 복사** 버튼이 포함되어 있습니다.

# Amazon SNS Event Fork Pipelines 샘플 애플리케이션 배포 및 테스트
<a name="sns-deploy-test-fork-pipelines-sample-application"></a>

이벤트 기반 애플리케이션의 개발을 가속화하기 위해 AWS Event Fork Pipelines 기반 이벤트 처리 파이프라인에서 Amazon SNS 주제를 구독할 수 있습니다. AWS Event Fork Pipelines은 [AWS 서버리스 애플리케이션 모델](https://aws.amazon.com/serverless/sam/)(AWS SAM)을 기반으로 하는 오픈 소스 [중첩](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) 애플리케이션 제품군으로, [AWS Event Fork Pipelines 제품군](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines)(사용자 **지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시** 선택)에서 AWS 계정에 직접 배포할 수 있습니다. 자세한 내용은 [AWS Event Fork Pipelines 작동 방식](sns-fork-pipeline-as-subscriber.md#how-sns-fork-works) 단원을 참조하십시오.

이 페이지에서는 AWS Management Console 를 사용하여 AWS Event Fork Pipelines 샘플 애플리케이션을 배포하고 테스트하는 방법을 보여줍니다.

**중요**  
 AWS Event Fork Pipelines 샘플 애플리케이션 배포를 완료한 후 원치 않는 비용이 발생하지 않도록 CloudFormation 스택을 삭제합니다. 자세한 정보는 *AWS CloudFormation 사용 설명서*의 [CloudFormation 콘솔에서 스택 삭제](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)를 참조하세요.

# AWS Event Fork Pipelines 사용 사례 예제
<a name="example-sns-fork-use-case"></a>

다음 시나리오에서는 Event Fork Pipelines을 사용하는 AWS 이벤트 기반 서버리스 전자 상거래 애플리케이션을 설명합니다. 에서이 [예제 전자 상거래 애플리케이션을](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-example-ecommerce-checkout-api) 사용한 AWS Serverless Application Repository 다음 AWS Lambda 콘솔을 AWS 계정 사용하여에 배포할 수 있습니다. 콘솔에서 이를 테스트하고 GitHub에서 소스 코드를 검사할 수 있습니다.

![\[AWS 서비스를 통합하는 서버리스 전자 상거래 애플리케이션의 아키텍처입니다. 이 그림은 API Gateway를 통해 주문을 하는 전자 상거래 사용자의 흐름을 주문 스토리지, 검색 분석 및 재생을 포함한 다양한 처리 파이프라인으로 묘사하여 Amazon SNS, Lambda, Amazon SQS, DynamoDB 및 Kibana를 통해 이벤트를 관리하고 분석하는 방법을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/sns/latest/dg/images/sns-fork-example-use-case.png)


이 전자 상거래 애플리케이션은 API Gateway에서 호스팅하고 AWS Lambda 함수에서 지원하는 RESTful API를 통해 구매자로부터 주문을 받습니다`CheckoutApiBackendFunction`. 이 함수는 모든 수신된 주문을 `CheckoutEventsTopic`이라는 Amazon SNS 주제 에 게시하고, 이 주제는 주문을 4가지 파이프라인으로 분산합니다.

첫 번째 파이프라인은 전자 상거래 애플리케이션의 소유자가 설계 및 구현한 정규 체크아웃 처리 파이프라인입니다. 이 파이프라인에는 수신된 모든 주문을 버퍼링`CheckoutQueue`하는 Amazon SQS 대기열, 이러한 주문을 처리하기 위해 대기열을 폴링`CheckoutFunction`하는 라는 AWS Lambda 함수, 제출된 모든 주문을 안전하게 저장하는 DynamoDB 테이블`CheckoutTable`이 있습니다.

## AWS Event Fork 파이프라인 적용
<a name="applying-sns-fork-pipelines"></a>

전자 상거래 애플리케이션의 구성 요소가 핵심 비즈니스 로직을 처리합니다. 그러나 전자 상거래 애플리케이션 소유자도 다음을 처리해야 합니다.
+ **규정 준수**—안전한 압축 백업(저장 시 암호화) 및 민감한 정보의 폐기
+ **복원성**—이행 프로세스 중단 시 최근 주문 다시 보기
+ **검색 가능성**—접수된 주문에 대한 분석 실행 및 지표 생성

애플리케이션 소유자는이 이벤트 처리 로직을 구현하는 대신 AWS Event Fork Pipelines에서 `CheckoutEventsTopic` Amazon SNS 주제를 구독할 수 있습니다.
+ [이벤트 저장 및 백업 파이프라인](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline)은 데이터를 변환하여 신용카드 세부 정보를 제거하고, 데이터를 60초간 버퍼링하고, GZIP을 사용하여 데이터를 압축하고, Amazon S3용 기본 고객 관리형 키를 사용하여 암호화하도록 구성되어 있습니다. 이 키는 AWS Key Management Service ()에서 관리 AWS 및 구동됩니다AWS KMS.

  자세한 정보는 *Amazon Data Firehose 개발자 안내서*의 [대상에 대해 Amazon S3 선택](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3), [Amazon Data Firehose 데이터 변환](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) 및 [설정 구성](https://docs.aws.amazon.com/firehose/latest/dev/create-configure.html)을 참조하세요.
+ [이벤트 검색 및 분석 파이프라인](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline)은 인덱스 재시도 지속시간 30초, 검색 도메인에서 인덱싱되지 않은 주문을 저장할 버킷, 인덱싱할 주문을 제한하는 필터 정책으로 구성되어 있습니다.

  자세한 정보는 *Amazon Data Firehose 개발자 가이드*의 [대상에 대한 OpenSearch Service 선택](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-elasticsearch)을 참조하세요.
+ [이벤트 다시 보기 파이프라인](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline)은 전자 상거래 애플리케이션 소유자가 설계 및 구현한 일반 체크아웃 처리 파이프라인의 Amazon SQS 대기열 부분으로 구성되어 있습니다.

  자세한 정보는 *Amazon Simple Queue Service 개발자 안내서*의 [대기열 이름 및 URL](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-general-identifiers.html#queue-name-url)을 참조하세요.

다음 JSON filter 필터 정책은 이벤트 검색 및 분석 파이프라인의 구성에 설정되었습니다. 수신 주문 중 전체 금액이 \$1100 이상인 주문만 일치됩니다. 자세한 내용은 [Amazon SNS 메시지 필터링](sns-message-filtering.md) 단원을 참조하십시오.

```
{				
   "amount": [{ "numeric": [ ">=", 100 ] }]
}
```

전자 상거래 애플리케이션 소유자는 AWS Event Fork Pipelines 패턴을 사용하여 이벤트 처리를 위한 차별화되지 않는 로직 코딩을 따르는 개발 오버헤드를 피할 수 있습니다. 대신에서 AWS Serverless Application Repository 로 직접 AWS Event Fork Pipelines을 배포할 수 있습니다 AWS 계정.

# 1단계: 샘플 Amazon SNS 애플리케이션 배포
<a name="deploy-sample-application"></a>

1. [AWS Lambda 콘솔](https://console.aws.amazon.com/lambda/)에 로그인합니다.

1. 탐색 창에서 **함수**를 선택한 후 **함수 생성**을 선택합니다.

1. **함수 생성** 페이지에서 다음을 수행합니다.

   1. **서버리스 앱 리포지토리 찾아보기**, **퍼블릭 애플리케이션**, **사용자 지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시**를 선택합니다.

   1. `fork-example-ecommerce-checkout-api`을 검색하여 이 애플리케이션을 선택합니다.

1. **fork-example-ecommerce-checkout-api** 페이지에서 다음을 수행합니다.

   1. **Application settings(애플리케이션 설정)** 섹션에서 **애플리케이션 이름**을 입력합니다(예: `fork-example-ecommerce-my-app`).
**참고**  
나중에 손쉽게 리소스를 찾을 수 있도록 접두사 `fork-example-ecommerce`를 유지하세요.
각 배포에서 애플리케이션 이름이 고유해야 합니다. 애플리케이션 이름을 재사용하면 배포는 (새 스택을 생성하는 대신) 이전에 배포된 CloudFormation 스택만 업데이트합니다.

   1. (선택 사항) 애플리케이션의 Lambda 함수 실행을 위해 다음 **LogLevel** 설정 중 하나를 입력합니다.
      + `DEBUG`
      + `ERROR`
      + `INFO`(기본값)
      + `WARNING`

1. **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications.(본인은 이 앱이 사용자 지정 IAM 역할, 리소스 정책을 생성하고 중첩 애플리케이션을 배포함을 확인합니다.)**를 선택하고 페이지 맨 아래에서 **배포**를 선택합니다.

**Deployment status for fork-example-ecommerce-*my-app*(fork-example-ecommerce-my-app 배포 상태)** 페이지에서 Lambda가 **Your application is being deployed(애플리케이션을 배포 중)** 상태를 표시합니다.

**리소스** 섹션에서는 스택 생성을 CloudFormation 시작하고 각 리소스에 대한 **CREATE\$1IN\$1PROGRESS** 상태를 표시합니다. 프로세스가 완료되면 **CREATE\$1COMPLETE** 상태가 CloudFormation 표시됩니다.

**참고**  
모든 리소스를 배포하는 데 20\$130분 정도 걸릴 수 있습니다.

배포가 완료되면 Lambda가 **Your application has been deployed(애플리케이션이 배포됨)** 상태를 표시합니다.

# 2단계: SNS 연결 샘플 애플리케이션 실행
<a name="execute-sample-application"></a>

1.  AWS Lambda 콘솔의 탐색 패널에서 **애플리케이션을** 선택합니다.

1. **애플리케이션** 페이지의 검색란에서 `serverlessrepo-fork-example-ecommerce-my-app`을 검색하여 이 애플리케이션을 선택합니다.

1. **리소스** 섹션에서 다음을 수행합니다.

   1. 유형이 **ApiGateway RestApi**인 리소스를 찾으려면 **유형**(예: `ServerlessRestApi`)별로 리소스를 정렬한 다음 리소스를 확장합니다.

   1. 유형이 각각 **ApiGateway Deployment** 및 **ApiGateway Stage**인 2개의 중첩 리소스가 표시됩니다.

   1. **Prod API endpoint(Prod API 엔드포인트)** 링크를 복사하고 여기에 `/checkout`를 추가합니다. 예: 

      ```
      https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
      ```

1. 다음 JSON을 `test_event.json` 파일에 복사합니다.

   ```
   {
      "id": 15311,
      "date": "2019-03-25T23:41:11-08:00",
      "status": "confirmed",
      "customer": {
         "id": 65144,		
   	 "quantity": 2,
         "price": 25.00,
         "subtotal": 50.00
      }]
   }
   ```

1. HTTPS 요청을 API 엔드포인트로 전송하려면 `curl` 명령을 실행하여 샘플 이벤트 페이로드를 입력으로 전달합니다. 예:

   ```
   curl -d "$(cat test_event.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   API가 다음과 같이 실행 성공을 나타내는 빈 응답을 반환합니다.

   ```
   { }
   ```

# 3단계: Amazon SNS 애플리케이션 및 파이프라인 성능 확인
<a name="verify-sample-application-pipelines"></a>

## 1단계: 샘플 체크아웃 애플리케이션의 실행을 확인
<a name="verify-execution-checkout-pipeline"></a>

1. [Amazon DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb/)에 로그인합니다.

1. 탐색 창에서 **테이블**을 선택합니다.

1. `serverlessrepo-fork-example`을 검색하고 `CheckoutTable`을 선택합니다.

1. 테이블 세부 정보에서 **항목**을 선택한 다음 생성된 항목을 선택합니다.

   저장된 속성이 표시됩니다.

## 2단계: 이벤트 저장 및 백업 파이프라인의 실행을 확인
<a name="verify-execution-event-storage-backup-pipeline"></a>

1. [Amazon S3 콘솔](https://console.aws.amazon.com/s3/)에 로그인합니다.

1. 탐색 창에서 **버킷**을 선택합니다.

1. `serverlessrepo-fork-example`을 검색하고 `CheckoutBucket`을 선택합니다.

1. 확장명이 `.gz`인 파일을 찾을 때까지 디렉터리 계층을 탐색합니다.

1. 파일을 다운로드하려면 **작업**, **열기**를 선택합니다.

1. 이 파이프라인은 규정 준수를 위해 신용카드 정보를 폐기하는 Lambda 함수로 구성되어 있습니다.

   저장된 JSON 페이로드가 신용카드 정보를 포함하지 않는지 확인하려면 파일을 압축합니다.

## 3단계: 이벤트 검색 및 분석 파이프라인의 실행을 확인
<a name="verify-execution-event-search-analytics-pipeline"></a>

1. [OpenSearch Service 콘솔](https://console.aws.amazon.com/aos/)에 로그인합니다.

1. 탐색 창의 **My domains(내 도메인)**에서 접두사가 `serverl-analyt`인 도메인을 선택합니다.

1. 이 파이프라인은 숫자 일치 조건을 설정하는 Amazon SNS 구독 필터 정책으로 구성되어 있습니다.

   이벤트가 금액이 USD \$1100를 초과하는 주문을 참조하기 때문에 인덱싱되는지 확인하려면, **serverl-analyt-*abcdefgh1ijk*** 페이지에서 **Indices(인덱스)**, **checkout\$1events(체크아웃 이벤트)**를 선택합니다.

## 4단계: 이벤트 다시 보기 애플리케이션의 실행을 확인
<a name="verify-execution-event-replay-pipeline"></a>

1. [Amazon SQS 콘솔](https://console.aws.amazon.com/sqs/)에 로그인합니다.

1. 대기열 목록에서 `serverlessrepo-fork-example`을 검색하고 `ReplayQueue`를 선택합니다.

1. [**메시지 전송 및 수신(Send and receive messages)**]을 선택합니다.

1. **Send and receive messages in fork-example-ecommerce-*my-app*...ReplayP-ReplayQueue-*123ABCD4E5F6***(fork-example-ecommerce-my-app...ReplayP-ReplayQueue-123ABCD4E5F6에서 메시지 보내기 및 받기) 대화 상자에서 **Poll for messages**(메시지 폴링)를 선택합니다.

1. 이벤트가 대기 상태로 전환되는지 확인하려면 대기열에 표시되는 메시지 옆의 **추가 정보**를 선택합니다.

# 4단계: 문제를 시뮬레이션하고 복구를 위해 이벤트를 다시 보기
<a name="simulate-issue-replay-events-for-recovery"></a>

## 1단계: 시뮬레이션된 문제를 활성화하고 두 번째 API 요청을 전송
<a name="enable-simulated-issue-send-second-api-request"></a>

1. [AWS Lambda 콘솔](https://console.aws.amazon.com/lambda/)에 로그인합니다.

1. 탐색 창에서 **함수**를 선택합니다.

1. `serverlessrepo-fork-example`을 검색하고 `CheckoutFunction`을 선택합니다.

1. **fork-example-ecommerce-*my-app*-CheckoutFunction-*ABCDEF*...** 페이지의 **환경 변수** 섹션에서 **BUG\$1ENABLED** 변수를 **true**로 설정하고 **저장**을 선택합니다.

1. 다음 JSON을 `test_event_2.json` 파일에 복사합니다.

   ```
   {
   	   "id": 9917,
   	   "date": "2019-03-26T21:11:10-08:00",
   	   "status": "confirmed",
   	   "customer": {
   	      "id": 56999,
   "quantity": 1,
   	      "price": 75.00,
   	      "subtotal": 75.00
   	   }]
   	}
   ```

1. HTTPS 요청을 API 엔드포인트로 전송하려면 `curl` 명령을 실행하여 샘플 이벤트 페이로드를 입력으로 전달합니다. 예:

   ```
   curl -d "$(cat test_event_2.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   API가 다음과 같이 실행 성공을 나타내는 빈 응답을 반환합니다.

   ```
   { }
   ```

## 2단계: 시뮬레이션된 데이터 손상 확인
<a name="verify-simulated-data-corruption"></a>

1. [Amazon DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb/)에 로그인합니다.

1. 탐색 창에서 **테이블**을 선택합니다.

1. `serverlessrepo-fork-example`을 검색하고 `CheckoutTable`을 선택합니다.

1. 테이블 세부 정보에서 **항목**을 선택한 다음 생성된 항목을 선택합니다.

   저장된 속성이 표시되고 일부가 **CORRUPTED\$1(손상됨\$1)**으로 표시됩니다.

## 3단계: 시뮬레이션된 문제 비활성화
<a name="disable-simulated-issue"></a>

1. [AWS Lambda 콘솔](https://console.aws.amazon.com/lambda/)에 로그인합니다.

1. 탐색 창에서 **함수**를 선택합니다.

1. `serverlessrepo-fork-example`을 검색하고 `CheckoutFunction`을 선택합니다.

1. **fork-example-ecommerce-*my-app*-CheckoutFunction-*ABCDEF*...** 페이지의 **환경 변수** 섹션에서 **BUG\$1ENABLED** 변수를 **false**로 설정하고 **저장**을 선택합니다.

## 4단계: 문제로부터 복구하기 위해 다시 보기 활성화
<a name="enable-replay-recover-from-simulated-issue"></a>

1.  AWS Lambda 콘솔의 탐색 패널에서 **함수**를 선택합니다.

1. `serverlessrepo-fork-example`을 검색하고 `ReplayFunction`을 선택합니다.

1. **Designer(디자이너)** 섹션을 확장하고, **SQS** 타일을 선택한 다음, **SQS** 섹션에서 **활성**을 선택합니다.
**참고**  
Amazon SQS 이벤트 소스 트리거가 활성화되려면 약 1분 정도 걸립니다.

1. **저장**을 선택합니다.

1. 복구된 속성을 보려면 Amazon DynamoDB 콘솔로 돌아갑니다.

1. 재생을 비활성화하려면 AWS Lambda 콘솔로 돌아가에 대한 Amazon SQS 이벤트 소스 트리거를 비활성화합니다`ReplayFunction`.

# AWS Event Fork Pipelines에서 Amazon SNS 주제 구독
<a name="sns-subscribe-event-fork-pipelines"></a>

이벤트 기반 애플리케이션의 개발을 가속화하기 위해 AWS Event Fork Pipelines 기반 이벤트 처리 파이프라인에서 Amazon SNS 주제를 구독할 수 있습니다. AWS Event Fork Pipelines은 [AWS 서버리스 애플리케이션 모델](https://aws.amazon.com/serverless/sam/)(AWS SAM)을 기반으로 하는 오픈 소스 [중첩](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) 애플리케이션 제품군으로, [AWS Event Fork Pipelines 제품군](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines)(사용자 **지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시** 선택)에서 AWS 계정에 직접 배포할 수 있습니다. 자세한 내용은 [AWS Event Fork Pipelines 작동 방식](sns-fork-pipeline-as-subscriber.md#how-sns-fork-works) 단원을 참조하십시오.

이 섹션에서는를 사용하여 파이프라인 AWS Management Console 을 배포한 다음 AWS Event Fork Pipelines에서 Amazon SNS 주제를 구독하는 방법을 보여줍니다. 시작하기 전에 [Amazon SNS 주제를 생성](sns-create-topic.md)합니다.

파이프라인을 구성하는 리소스를 삭제하려면 AWS Lambda 콘솔의 **애플리케이션** 페이지에서 파이프라인을 찾아 **SAM 템플릿 섹션을** 확장하고 **CloudFormation 스택**을 선택한 다음 **기타 작업**, **스택 삭제를** 선택합니다.

# 이벤트 스토리지 및 백업 파이프라인을 Amazon SNS에 배포 및 구독
<a name="deploy-event-storage-backup-pipeline"></a>


|  | 
| --- |
| 이벤트 아카이빙 및 분석을 위해 Amazon SNS는 이제 Amazon Data Firehose와의 기본 통합 기능을 사용할 것을 권장합니다. Firehose 전송 스트림에서 SNS 주제를 구독하여 Amazon Simple Storage Service(Amazon S3) 버킷, Amazon Redshift 테이블, Amazon OpenSearch Service(OpenSearch Service) 등과 같은 아카이브 및 분석 엔드포인트에 알림을 보낼 수 있습니다. Firehose 전송 스트림에서 Amazon SNS를 사용하는 것은 AWS Lambda 함수를 사용할 필요가 없는 완전 관리형 코드 없는 솔루션입니다. 자세한 내용은 [Firehose 전송 스트림으로 팬아웃](sns-firehose-as-subscriber.md) 단원을 참조하십시오. | 

이 페이지에서는 [이벤트 저장 및 백업 파이프라인](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline)을 배포하여 Amazon SNS 주제를 구독하는 방법을 보여줍니다. 이 프로세스는 파이프라인과 연결된 AWS SAM 템플릿을 자동으로 CloudFormation 스택으로 변환한 다음 스택을에 배포합니다 AWS 계정. 또한 이 프로세스는 이벤트 저장 및 백업 파이프라인을 구성하는 다음과 같은 리소스 세트를 생성하고 구성합니다.
+ Amazon SQS 대기열
+ Lambda 함수
+ Firehose 전송 스트림
+ Amazon S3 백업 버킷

Amazon S3 버킷을 대상으로 하여 스트림을 구성하는 방법에 대한 자세한 정보는 *Amazon Data Firehose API 참조*의 `[S3DestinationConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_S3DestinationConfiguration.html)` 섹션에서 확인하세요.

이벤트 변환 및 이벤트 버퍼링, 이벤트 압축 및 이벤트 암호화 구성에 대한 자세한 정보는 *Amazon Data Firehose 개발자 안내서*의 [전송 스트림 생성](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) 섹션을 참조하세요.

이벤트 필터링에 대한 자세한 정보는 이 설명서의 [Amazon SNS 구독 필터 정책](sns-subscription-filter-policies.md)에서 확인하세요.

1. [AWS Lambda 콘솔](https://console.aws.amazon.com/lambda/)에 로그인합니다.

1. 탐색 창에서 **함수**를 선택한 후 **함수 생성**을 선택합니다.

1. **함수 생성** 페이지에서 다음을 수행합니다.

   1. **서버리스 앱 리포지토리 찾아보기**, **퍼블릭 애플리케이션**, **사용자 지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시**를 선택합니다.

   1. `fork-event-storage-backup-pipeline`을 검색하여 이 애플리케이션을 선택합니다.

1. **fork-event-storage-backup-pipeline** 페이지에서 다음을 수행합니다.

   1. **Application settings(애플리케이션 설정)** 섹션에서 **애플리케이션 이름**을 입력합니다(예: `my-app-backup`).
**참고**  
각 배포에서 애플리케이션 이름이 고유해야 합니다. 애플리케이션 이름을 재사용하면 배포는 (새 스택을 생성하는 대신) 이전에 배포된 CloudFormation 스택만 업데이트합니다.

   1. (선택 사항) **BucketArn**에 수신 이벤트가 로드될 Amazon S3 버킷의 ARN을 입력합니다. 값을 입력하지 않으면 AWS 계정에 새 Amazon S3 버킷이 생성됩니다.

   1. (선택 사항) **DataTransformationFunctionArn**에 수신 이벤트를 변환할 Lambda 함수의 ARN을 입력합니다. 값을 입력하지 않을 경우 데이터 변환이 비활성화됩니다.

   1. (선택 사항) 애플리케이션의 Lambda 함수 실행을 위해 다음 **LogLevel** 설정 중 하나를 입력합니다.
      + `DEBUG`
      + `ERROR`
      + `INFO`(기본값)
      + `WARNING`

   1. **TopicArn**에 이 포크 파이프라인 인스턴스가 구독할 Amazon SNS 주제의 ARN을 입력합니다.

   1. (선택 사항) **StreamBufferingIntervalInSeconds** 및 **StreamBufferingSizeInMBs**에 수신 이벤트 버퍼링을 구성하기 위한 값을 입력합니다. 값을 입력하지 않을 경우 300초 및 5MB가 사용됩니다.

   1. (선택 사항) 수신 이벤트를 압축하기 위한 다음 **StreamCompressionFormat** 설정 중 하나를 입력합니다.
      + `GZIP`
      + `SNAPPY`
      + `UNCOMPRESSED`(기본값)
      + `ZIP`

   1. (선택 사항) **StreamPrefix**에 Amazon S3 백업 버킷에 저장된 파일을 명명할 문자열 접두사를 입력합니다. 값을 입력하지 않을 경우 접두사가 사용되지 않습니다.

   1. (선택 사항) **SubscriptionFilterPolicy**에 수신 이벤트를 필터링하는 데 사용할 Amazon SNS 구독 필터 정책을 JSON 형식으로 입력합니다. 이 필터 정책은 OpenSearch Service 인덱스에 인덱싱할 이벤트를 결정합니다. 값을 입력하지 않을 경우 필터링이 사용되지 않습니다(모든 이벤트가 인덱싱됨).

   1. (선택 사항) **SubscriptionFilterPolicyScope**에 `MessageBody` 또는 `MessageAttributes` 문자열을 입력하거나 페이로드 기반 또는 속성 기반 메시지 필터링을 활성화합니다.

   1. **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications.(본인은 이 앱이 사용자 지정 IAM 역할, 리소스 정책을 생성하고 중첩 애플리케이션을 배포함을 확인합니다.)**를 선택하고 **배포**를 선택합니다.

**Deployment status for *my-app*(my-app 배포 상태)** 페이지에서 Lambda가 **Your application is being deployed(애플리케이션을 배포 중)** 상태를 표시합니다.

**리소스** 섹션에서는 스택 생성을 CloudFormation 시작하고 각 리소스에 대한 **CREATE\$1IN\$1PROGRESS** 상태를 표시합니다. 프로세스가 완료되면 **CREATE\$1COMPLETE** 상태가 CloudFormation 표시됩니다.

배포가 완료되면 Lambda가 **Your application has been deployed(애플리케이션이 배포됨)** 상태를 표시합니다.

Amazon SNS 주제에 게시되는 메시지는 이벤트 저장 및 백업 파이프라인에 의해 프로비저닝되는 Amazon S3 백업 버킷에 자동으로 저장됩니다.

# 이벤트 검색 및 분석 파이프라인을 Amazon SNS에 배포 및 구독
<a name="deploy-event-search-analytics-pipeline"></a>


|  | 
| --- |
| 이벤트 아카이빙 및 분석을 위해 Amazon SNS는 이제 Amazon Data Firehose와의 기본 통합 기능을 사용할 것을 권장합니다. Firehose 전송 스트림에서 SNS 주제를 구독하여 Amazon Simple Storage Service(Amazon S3) 버킷, Amazon Redshift 테이블, Amazon OpenSearch Service(OpenSearch Service) 등과 같은 아카이브 및 분석 엔드포인트에 알림을 보낼 수 있습니다. Firehose 전송 스트림에서 Amazon SNS를 사용하는 것은 AWS Lambda 함수를 사용할 필요가 없는 완전 관리형 코드 없는 솔루션입니다. 자세한 내용은 [Firehose 전송 스트림으로 팬아웃](sns-firehose-as-subscriber.md) 단원을 참조하십시오. | 

이 페이지에서는 [이벤트 검색 및 분석 파이프라인](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline)을 배포하여 Amazon SNS 주제를 구독 설정하는 방법을 보여줍니다. 이 프로세스는 파이프라인과 연결된 AWS SAM 템플릿을 자동으로 CloudFormation 스택으로 변환한 다음 스택을에 배포합니다 AWS 계정. 또한 이 프로세스는 이벤트 검색 및 분석 파이프라인을 구성하는 다음과 같은 리소스 세트를 생성하고 구성합니다.
+ Amazon SQS 대기열
+ Lambda 함수
+ Firehose 전송 스트림
+ Amazon OpenSearch Service 도메인
+ Amazon S3 배달 못한 편지 버킷

인덱스를 대상으로 하여 스트림을 구성하는 방법에 대한 자세한 정보는 *Amazon Data Firehose API 참조*의 `[ElasticsearchDestinationConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ElasticsearchDestinationConfiguration.html)` 섹션에서 참조하세요.

이벤트 변환 및 이벤트 버퍼링, 이벤트 압축 및 이벤트 암호화 구성에 대한 자세한 정보는 *Amazon Data Firehose 개발자 안내서*의 [전송 스트림 생성](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) 섹션을 참조하세요.

이벤트 필터링에 대한 자세한 정보는 이 설명서의 [Amazon SNS 구독 필터 정책](sns-subscription-filter-policies.md)에서 확인하세요.

1. [AWS Lambda 콘솔](https://console.aws.amazon.com/lambda/)에 로그인합니다.

1. 탐색 창에서 **함수**를 선택한 후 **함수 생성**을 선택합니다.

1. **함수 생성** 페이지에서 다음을 수행합니다.

   1. **서버리스 앱 리포지토리 찾아보기**, **퍼블릭 애플리케이션**, **사용자 지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시**를 선택합니다.

   1. `fork-event-search-analytics-pipeline`을 검색하여 이 애플리케이션을 선택합니다.

1. **fork-event-search-analytics-pipeline** 페이지에서 다음을 수행합니다.

   1. **Application settings(애플리케이션 설정)** 섹션에서 **애플리케이션 이름**을 입력합니다(예: `my-app-search`).
**참고**  
각 배포에서 애플리케이션 이름이 고유해야 합니다. 애플리케이션 이름을 재사용하면 배포는 (새 스택을 생성하는 대신) 이전에 배포된 CloudFormation 스택만 업데이트합니다.

   1. (선택 사항) **DataTransformationFunctionArn**에 수신 이벤트를 변환하는 데 사용할 Lambda 함수의 ARN을 입력합니다. 값을 입력하지 않을 경우 데이터 변환이 비활성화됩니다.

   1. (선택 사항) 애플리케이션의 Lambda 함수 실행을 위해 다음 **LogLevel** 설정 중 하나를 입력합니다.
      + `DEBUG`
      + `ERROR`
      + `INFO`(기본값)
      + `WARNING`

   1. (선택 사항) **SearchDomainArn**에 필요한 컴퓨팅 및 스토리지 기능을 구성하는 클러스터인 OpenSearch Service 도메인의 ARN을 입력합니다. 값을 입력하지 않을 경우 기본 구성으로 새 도메인이 생성됩니다.

   1. **TopicArn**에 이 포크 파이프라인 인스턴스가 구독할 Amazon SNS 주제의 ARN을 입력합니다.

   1. **SearchIndexName**에 이벤트 검색 및 분석용 OpenSearch Service 인덱스의 이름을 입력합니다.
**참고**  
다음 할당량이 인덱스 이름에 적용됩니다.  
대문자를 포함할 수 없음
다음 문자를 포함할 수 없음: `\ / * ? " < > | ` , #`
다음 문자로 시작할 수 없음: `- + _`
다음과 같을 수 없음: `. ..`
80자를 초과할 수 없음
255바이트를 초과할 수 없음
콜론을 포함할 수 없음(OpenSearch Service 7.0 이후)

   1. (선택 사항) OpenSearch Service 인덱스 순환 기간에 대해 다음 **SearchIndexRotationPeriod** 설정 중 하나를 입력합니다.
      + `NoRotation`(기본값)
      + `OneDay`
      + `OneHour`
      + `OneMonth`
      + `OneWeek`

      인덱스 교체는 오래된 데이터를 만료시킬 수 있도록 인덱스 이름에 타임스탬프를 추가합니다.

   1. **SearchTypeName**에 인덱스에서 이벤트를 구성하는 데 사용할 OpenSearch Service 유형의 이름을 입력합니다.
**참고**  
OpenSearch Service 유형 이름은 null 바이트를 제외한 모든 문자를 포함할 수 있으나 `_`로 시작할 수는 없습니다.
OpenSearch Service 6.x의 경우 인덱스당 한 유형만 가능합니다. 다른 유형을 보유한 기존 인덱스에 새 유형을 지정하면 Firehose가 런타임 오류를 반환합니다.

   1. (선택 사항) **StreamBufferingIntervalInSeconds** 및 **StreamBufferingSizeInMBs**에 수신 이벤트 버퍼링을 구성하기 위한 값을 입력합니다. 값을 입력하지 않을 경우 300초 및 5MB가 사용됩니다.

   1. (선택 사항) 수신 이벤트를 압축하기 위한 다음 **StreamCompressionFormat** 설정 중 하나를 입력합니다.
      + `GZIP`
      + `SNAPPY`
      + `UNCOMPRESSED`(기본값)
      + `ZIP`

   1. (선택 사항) **StreamPrefix**에 Amazon S3 배달 못한 편지 버킷에 저장된 파일을 명명할 문자열 접두사를 입력합니다. 값을 입력하지 않을 경우 접두사가 사용되지 않습니다.

   1. (선택 사항) **StreamRetryDurationInSecons**에 Firehose가 OpenSearch Service 인덱스에서 이벤트를 인덱싱할 수 없을 경우 재시도 지속 시간을 입력합니다. 값을 입력하지 않을 경우 300초가 사용됩니다.

   1. (선택 사항) **SubscriptionFilterPolicy**에 수신 이벤트를 필터링하는 데 사용할 Amazon SNS 구독 필터 정책을 JSON 형식으로 입력합니다. 이 필터 정책은 OpenSearch Service 인덱스에 인덱싱할 이벤트를 결정합니다. 값을 입력하지 않을 경우 필터링이 사용되지 않습니다(모든 이벤트가 인덱싱됨).

   1. **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications.(본인은 이 앱이 사용자 지정 IAM 역할, 리소스 정책을 생성하고 중첩 애플리케이션을 배포함을 확인합니다.)**를 선택하고 **배포**를 선택합니다.

**Deployment status for *my-app-search*(my-app-search 배포 상태)** 페이지에서 Lambda가 **Your application is being deployed(애플리케이션을 배포 중)** 상태를 표시합니다.

**리소스** 섹션에서는 스택 생성을 CloudFormation 시작하고 각 리소스에 대한 **CREATE\$1IN\$1PROGRESS** 상태를 표시합니다. 프로세스가 완료되면 **CREATE\$1COMPLETE** 상태가 CloudFormation 표시됩니다.

배포가 완료되면 Lambda가 **Your application has been deployed(애플리케이션이 배포됨)** 상태를 표시합니다.

Amazon SNS 주제에 게시되는 메시지는 이벤트 검색 및 분석 파이프라인에 의해 프로비저닝되는 OpenSearch Service 인덱스에 자동으로 인덱싱됩니다. 파이프라인이 이벤트를 인덱싱할 수 없을 경우 해당 이벤트가 Amazon S3 배달 못한 편지 버킷에 저장됩니다.

# Amazon SNS와 통합하여 이벤트 재전송 파이프라인 배포
<a name="deploy-event-replay-pipeline"></a>

이 페이지에서는 [이벤트 다시 보기 파이프라인](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline)을 배포하여 Amazon SNS 주제를 구독 설정하는 방법을 보여줍니다. 이 프로세스는 파이프라인과 연결된 AWS SAM 템플릿을 자동으로 CloudFormation 스택으로 변환한 다음 스택을에 배포합니다 AWS 계정. 또한 이 프로세스는 Amazon SQS 대기열 및 Lambda 함수 등 이벤트 다시 보기 파이프라인을 구성하는 리소스 세트를 생성하고 구성합니다.

이벤트 필터링에 대한 자세한 정보는 이 설명서의 [Amazon SNS 구독 필터 정책](sns-subscription-filter-policies.md)에서 확인하세요.

1. [AWS Lambda 콘솔](https://console.aws.amazon.com/lambda/)에 로그인합니다.

1. 탐색 창에서 **함수**를 선택한 후 **함수 생성**을 선택합니다.

1. **함수 생성** 페이지에서 다음을 수행합니다.

   1. **서버리스 앱 리포지토리 찾아보기**, **퍼블릭 애플리케이션**, **사용자 지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시**를 선택합니다.

   1. `fork-event-replay-pipeline`을 검색하여 이 애플리케이션을 선택합니다.

1. **fork-event-replay-pipeline** 페이지에서 다음을 수행합니다.

   1. **Application settings(애플리케이션 설정)** 섹션에서 **애플리케이션 이름**을 입력합니다(예: `my-app-replay`).
**참고**  
각 배포에서 애플리케이션 이름이 고유해야 합니다. 애플리케이션 이름을 재사용하면 배포는 (새 스택을 생성하는 대신) 이전에 배포된 CloudFormation 스택만 업데이트합니다.

   1. (선택 사항) 애플리케이션의 Lambda 함수 실행을 위해 다음 **LogLevel** 설정 중 하나를 입력합니다.
      + `DEBUG`
      + `ERROR`
      + `INFO`(기본값)
      + `WARNING`

   1. (선택 사항) **ReplayQueueRetentionPeriodInSeconds**에 Amazon SQS 다시 보기 대기열이 메시지를 유지하는 시간을 초 단위로 입력합니다. 값을 입력하지 않을 경우 1,209,600초(14일)가 사용됩니다.

   1. **TopicArn**에 이 포크 파이프라인 인스턴스가 구독할 Amazon SNS 주제의 ARN을 입력합니다.

   1. **DestinationQueueName**에 Lambda 다시 보기 함수가 메시지를 전달할 Amazon SQS 대기열의 이름을 입력합니다.

   1. (선택 사항) **SubscriptionFilterPolicy**에 수신 이벤트를 필터링하는 데 사용할 Amazon SNS 구독 필터 정책을 JSON 형식으로 입력합니다. 이 필터 정책은 다시 보기를 위해 버퍼링할 이벤트를 결정합니다. 값을 입력하지 않을 경우 필터링이 사용되지 않습니다(모든 이벤트가 버퍼링됨).

   1. **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications.(본인은 이 앱이 사용자 지정 IAM 역할, 리소스 정책을 생성하고 중첩 애플리케이션을 배포함을 확인합니다.)**를 선택하고 **배포**를 선택합니다.

**Deployment status for *my-app-replay*(my-app-replay 배포 상태)** 페이지에서 Lambda가 **Your application is being deployed(애플리케이션을 배포 중)** 상태를 표시합니다.

**리소스** 섹션에서는 스택 생성을 CloudFormation 시작하고 각 리소스에 대한 **CREATE\$1IN\$1PROGRESS** 상태를 표시합니다. 프로세스가 완료되면 **CREATE\$1COMPLETE** 상태가 CloudFormation 표시됩니다.

배포가 완료되면 Lambda가 **Your application has been deployed(애플리케이션이 배포됨)** 상태를 표시합니다.

Amazon SNS 주제에 게시되는 메시지는 이벤트 다시 보기 파이프라인에 의해 프로비저닝되는 Amazon SQS 대기열에서 다시 보기를 위해 자동으로 버퍼링됩니다.

**참고**  
기본적으로 다시 보기는 비활성화됩니다. 다시 보기를 활성화하려면 Lambda 콘솔에서 해당 함수의 페이지로 이동하여 **Designer(디자이너)** 섹션을 확장하고, **SQS** 타일을 선택한 다음, **SQS** 섹션에서 **활성**을 선택합니다.