翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 トピックを作成するには
-
[Amazon SNS console]
(Amazon SNS コンソール) を開きます。 -
ナビゲーションペインで、[トピック] を選択します。
-
[トピック] ページで、[トピックの作成] を選択します。
-
コンソールでトピックを作成します。詳細については、Amazon Simple Notification Service 開発者ガイドの「AWS Management Console を使用してトピックを作成するには」を参照してください。
-
トピックの [詳細] ページで、[編集] を選択します。
-
(オプション) トピックの [編集] ページで [アクセスポリシー] を展開し、次の 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
" } } } ] } -
[Save changes] (変更の保存) をクリックします。
サーバー側の暗号化を使用して SNS トピックをセットアップする
サーバー側の暗号化 (SSE) を使用して、暗号化されたトピックに機密データを保管できます。SSE では、AWS Key Management Service (AWS KMS) で管理されているキーを使用して、Amazon SNS キュー内のメッセージの内容が保護されます。Amazon SNS によるサーバー側の暗号化の詳細については、Amazon Simple Storage Service 開発者ガイドの「保管時の暗号化」を参照してください。
サーバー側の暗号化を使用して SNS トピックを設定する方法については、以下のトピックを確認してください。
-
AWS Key Management Service デベロッパーガイドの「キーの作成」。
-
Amazon Simple Notification Service 開発者ガイドの「トピックの SSE を有効にする」
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