FlexMatch イベント通知をセットアップする - Amazon GameLift

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

FlexMatch イベント通知をセットアップする

イベント通知を使用して、個々のマッチメーキングリクエストのステータスを追跡できます。本番環境のすべてのゲーム、または大量のマッチメーキングアクティビティがある本番前の環境では、イベント通知を使用する必要があります。

イベント通知を設定するためには二つのオプションがあります。

  • マッチメーカーに Amazon Simple Notification Service (Amazon SNS) トピックにイベント通知をパブリッシュさせます。

  • 自動的にパブリッシュされる Amazon EventBridge イベントとイベント管理ツール一式を使用します。

Amazon GameLift が発行する FlexMatch イベントのリストについては、「FlexMatch マッチメーキングイベント」を参照してください。

EventBridge イベントをセットアップする

Amazon GameLift はすべてのマッチメーキングイベントを自動的に Amazon EventBridge に発行します。EventBridge を使用すると、イベントを処理するために、ターゲットにイベントをルーティングするルールを設定できます。例えば、「PotentialMatchCreated」イベントを、プレイヤーの承諾を処理する AWS Lambda 関数にルーティングするルールを設定できます。詳細については、「Amazon EventBridge とは」を参照してください。

注記

マッチメーカーの設定時に、通知ターゲットのフィールドは空にするか、または EventBridge と Amazon SNS の両方を使用する場合は、SNS トピックを参照します。

Amazon SNS トピックを設定する

Amazon GameLift に FlexMatch マッチメーカーが生成するすべてのイベントを Amazon SNS トピックにパブリッシュさせることができます。

Amazon GameLift イベント通知用 SNS トピックを作成するには
  1. [Amazon SNS console] (Amazon SNS コンソール) を開きます。

  2. ナビゲーションペインで、[トピック] を選択します。

  3. [トピック] ページで、[トピックの作成] を選択します。

  4. コンソールでトピックを作成します。詳細については、Amazon Simple Notification Service 開発者ガイドの「AWS Management Console を使用してトピックを作成するには」を参照してください。

  5. トピックの [詳細] ページで、[編集] を選択します。

  6. (オプション) トピックの [編集] ページで [アクセスポリシー] を展開し、次の AWS Identity and Access Management (IAM) ポリシーステートメントの太字の構文を既存のポリシーの末尾に追加します。(ここではわかりやすいようにポリシー全体を示しています。) 独自の SNS トピックと Amazon GameLift のマッチメーキング設定には、Amazon リソースネーム (ARN) の詳細を必ず使用してください。

    { "Version": "2008-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:your_region:your_account:your_topic_name", "Condition": { "StringEquals": { "AWS:SourceAccount": "your_account" } } }, { "Sid": "__console_pub_0", "Effect": "Allow", "Principal": { "Service": "gamelift.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:your_region:your_account:your_topic_name", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:gamelift:your_region:your_account:matchmakingconfiguration/your_configuration_name" } } } ] }
  7. [Save changes] (変更の保存) をクリックします。

サーバー側の暗号化を使用して SNS トピックをセットアップする

サーバー側の暗号化 (SSE) を使用して、暗号化されたトピックに機密データを保管できます。SSE では、AWS Key Management Service (AWS KMS) で管理されているキーを使用して、Amazon SNS キュー内のメッセージの内容が保護されます。Amazon SNS によるサーバー側の暗号化の詳細については、Amazon Simple Storage Service 開発者ガイドの「保管時の暗号化」を参照してください。

サーバー側の暗号化を使用して SNS トピックを設定する方法については、以下のトピックを確認してください。

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 関数を呼び出す

Amazon SNS トピックに発行されたイベント通知を使用して Lambda 関数を呼び出すことができます。マッチメーカーの設定時に、必ず通知ターゲットを SNS トピックの ARN に設定します。

次の AWS CloudFormation テンプレートは、MyFlexMatchEventTopic という名前の SNS トピックへのサブスクリプションを設定して、FlexMatchEventHandlerLambdaFunction という名前の Lambda 関数を呼び出します。このテンプレートは、Amazon GameLift が 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