

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

# FlexMatch 이벤트 알림 설정
<a name="match-notification"></a>

이벤트 알림을 사용하여 개별 매치메이킹 요청 상태를 추적할 수 있습니다. 프로덕션 중인 게임이나 대량의 매치메이킹 활동이 있는 프로덕션 전 게임에서는 이벤트 알림을 사용해야 합니다.

이벤트 알림을 설정하는 데는 두 가지 옵션이 있습니다.
+ 매치메이커는 Amazon Simple Notification Service(SNS) 주제에 이벤트 알림을 게시하도록 합니다.
+ 자동으로 게시된 Amazon EventBridge 이벤트 및 이벤트 관리 도구 모음을 사용합니다.

Amazon GameLift Servers가 내보내는 FlexMatch 이벤트 목록을 보려면 [FlexMatch 매치메이킹 이벤트](match-events.md) 섹션을 참조하세요.

**중요**  
대용량 매치메이킹 시스템의 경우 FIFO 주제 대신 표준(비 FIFO) Amazon SNS 주제를 사용하는 것이 좋습니다. FIFO 주제는 표준 주제보다 게시 제한이 적기 때문에 높은 로드 시 스로틀링 예외가 발생할 수 있습니다. FIFO 주제에 스로틀링이 발생하면 FlexMatch 알림이 손실될 수 있습니다.

**참고**  
 Amazon GameLift Servers는 기본 제공 재시도 로직을 사용하여 Amazon SNS 전송 실패 및 제한을 자동으로 처리합니다. Amazon SNS가 제한 오류 또는 임시 실패를 반환하면 Amazon GameLift Servers는 시도 간 점진적 지연으로 알림 전송을 재시도합니다. 이렇게 하면 이벤트 알림이 안정적으로 전달됩니다. 그러나 모든 재시도 후에도 실패가 지속되거나 권한 부여 실패 또는 주제 누락과 같은 재시도할 수 없는 오류가 발생하는 경우 알림이 손실될 수 있습니다.

**Topics**
+ [EventBridge 이벤트 설정](#match-notification-cwe)
+ [자습서: Amazon SNS 주제 설정](match-notification-sns.md)
+ [SNS 주제에 서버 측 암호화 설정](queue-notification-sns-sse.md)
+ [Lambda 함수를 호출하기 위해 주제 구독 구성](match-notification-lambda.md)

## EventBridge 이벤트 설정
<a name="match-notification-cwe"></a>

Amazon GameLift Servers는 모든 매치메이킹 이벤트를 Amazon EventBridge에 자동으로 게시합니다. EventBridge를 사용하면 매치메이킹 이벤트를 처리 대상으로 라우팅하도록 규칙을 설정할 수 있습니다. 예를 들어 "PotentialMatchCreated" 이벤트를 플레이어 수락을 처리하는 AWS Lambda 함수로 라우팅하는 규칙을 설정할 수 있습니다. 자세한 내용은 [Amazon EventBridge란 무엇인가요?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 섹션을 참조하세요.

**참고**  
매치메이커를 구성할 때 알림 대상 필드를 비워 두거나 EventBridge와 Amazon SNS를 모두 사용하려면 SNS 주제를 참조하세요.

# 자습서: Amazon SNS 주제 설정
<a name="match-notification-sns"></a>

Amazon GameLift Servers가 FlexMatch 매치메이커가 생성하는 모든 이벤트를 Amazon SNS 주제에 게시하도록 할 수 있습니다.

**Amazon GameLift Servers 이벤트 알림에 대한 SNS 주제를 생성하려면**

1. [Amazon SNS 콘솔](https://console.aws.amazon.com/sns)을 엽니다.

1. 탐색 창에서 **주제**를 선택합니다.

1. **주제** 페이지에서 **주제 생성**을 선택합니다.

1. 콘솔에서 주제를 생성합니다. 자세한 내용은 *Amazon Simple Notification Service 개발자 가이드*의 [AWS Management Console을 사용하여 주제를 생성하려면](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html#create-topic-aws-console)을 참조하세요.

1. 주제에 대한 **세부 정보** 페이지에서 **편집**을 선택합니다.

1. (선택 사항) 해당 주제의 **편집** 페이지에서 **액세스 정책**을 확장한 후, 다음 AWS Identity and Access Management (IAM) 정책문에서 굵은 구문을 기존 정책 끝에 추가합니다. (명확성을 위해 전체 정책이 여기에 표시됩니다.) 자체 SNS 주제 및 Amazon GameLift Servers 매치메이킹 구성에 대해서는 반드시 Amazon 리소스 이름(ARN) 세부 정보를 사용합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Id": "__default_policy_ID",
     "Statement": [
       {
         "Sid": "__default_statement_ID",
         "Effect": "Allow",
         "Principal": {
           "AWS": "*"
         },
         "Action": [
           "SNS:GetTopicAttributes",
           "SNS:SetTopicAttributes",
           "SNS:AddPermission",
           "SNS:RemovePermission",
           "SNS:DeleteTopic",
           "SNS:Subscribe",
           "SNS:ListSubscriptionsByTopic",
           "SNS:Publish"
         ],
         "Resource": "arn:aws:sns:us-east-1:111122223333:your_topic_name",
         "Condition": {
           "StringEquals": {
           "AWS:SourceAccount": "111122223333"
           }
         }
       },
       {
         "Sid": "__console_pub_0",
         "Effect": "Allow",
         "Principal": {
           "Service": "gamelift.amazonaws.com"
         },
         "Action": "SNS:Publish",
         "Resource": "arn:aws:sns:us-east-1:111122223333:your_topic_name",
         "Condition": {
           "ArnLike": {
           "aws:SourceArn": "arn:aws:gamelift:us-east-1:111122223333:matchmakingconfiguration/your_configuration_name"
           }
         }
       }
     ]
   }
   ```

------

1. **변경 사항 저장**을 선택합니다.

# SNS 주제에 서버 측 암호화 설정
<a name="queue-notification-sns-sse"></a>

서버 측 암호화(SSE)를 사용하면 암호화된 주제에서 민감한 데이터를 저장할 수 있습니다. SSE는 AWS Key Management Service ()에서 관리되는 키를 사용하여 Amazon SNS 주제의 메시지 내용을 보호합니다AWS KMS. Amazon SNS를 포함한 서버 측 암호화에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 가이드*의 [저장 시 암호화](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html)를 참조하세요.

SNS 주제에 서버 측 암호화를 설정하려면 다음 주제를 검토합니다.
+ *AWS Key Management Service 개발자 가이드*의 [키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)
+ *Amazon Simple Notification Service 개발자 가이드*의 [주제 SSE 활성화](https://docs.aws.amazon.com/sns/latest/dg/sns-enable-encryption-for-topic.html)

KMS 키를 생성할 때는 다음 KMS 키 정책을 사용합니다.

```
{ 
  "Effect": "Allow", 
  "Principal": { 
    "Service": "gamelift.amazonaws.com" 
  },
  "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey"
  ],
  "Resource": "*",
  "Condition": {
      "ArnLike": { 
        "aws:SourceArn": "arn:aws:gamelift:your_region:your_account:matchmakingconfiguration/your_configuration_name" 
      },
      "StringEquals": { 
        "kms:EncryptionContext:aws:sns:topicArn": "arn:aws:sns:your_region:your_account:your_sns_topic_name" 
      }
  }
}
```

# Lambda 함수를 호출하기 위해 주제 구독 구성
<a name="match-notification-lambda"></a>

Amazon SNS 주제에 게시된 이벤트 알림을 사용하여 Lambda 함수를 호출할 수 있습니다. 매치메이커를 구성할 때는 알림 대상을 SNS 주제의 ARN으로 설정해야 합니다.

다음 AWS CloudFormation 템플릿은 라는 SNS 주제에 대한 구독을 구성`MyFlexMatchEventTopic`하여 라는 Lambda 함수를 호출합니다`FlexMatchEventHandlerLambdaFunction`. 템플릿은 Amazon GameLift Servers가 SNS 주제에 글을 쓸 수 있도록 허용하는 IAM 권한 정책을 생성합니다. 그런 다음 템플릿은 SNS 주제에 Lambda 함수를 호출할 권한을 추가합니다.

```
FlexMatchEventTopic:
  Type: "AWS::SNS::Topic"
  Properties:
    KmsMasterKeyId: alias/aws/sns #Enables server-side encryption on the topic using an AWS managed key 
    Subscription:
      - Endpoint: !GetAtt FlexMatchEventHandlerLambdaFunction.Arn
        Protocol: lambda
    TopicName: MyFlexMatchEventTopic

FlexMatchEventTopicPolicy:
  Type: "AWS::SNS::TopicPolicy"
  DependsOn: FlexMatchEventTopic
  Properties:
    PolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Principal:
            Service: gamelift.amazonaws.com
          Action:
            - "sns:Publish"
          Resource: !Ref FlexMatchEventTopic
    Topics:
      - Ref: FlexMatchEventTopic

FlexMatchEventHandlerLambdaPermission:
  Type: "AWS::Lambda::Permission"
  Properties:
    Action: "lambda:InvokeFunction"
    FunctionName: !Ref FlexMatchEventHandlerLambdaFunction
    Principal: sns.amazonaws.com
    SourceArn: !Ref FlexMatchEventTopic
```