设置 FlexMatch 事件通知 - Amazon GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置 FlexMatch 事件通知

如果您在游戏中使用 FlexMatch 对战,您需要一种方法来跟踪单独对战请求的状态并相应采取操作。有时候,例如当玩家需要接受建议的对战游戏时,这些操作非常注重时间。实施事件通知是跟踪对战事件的快速有效的方法。所有投入实际生产的游戏,或具有大量对战活动的预生产中的游戏都应使用事件通知。

有两个选项可用于设置事件通知。您可以使用 Amazon CloudWatch Events,其中包括一套工具,可用于管理事件和对其采取行动。此外,您可以设置自己的 SNS 主题并将其附加到您的对战构建器,以用于直接接收对战事件通知。

查看由 Amazon GameLift vents 发出的 FlexMatch 事件列表FlexMatch 事件.

设置 CloudWatch Events

Amazon GameLift 自动将所有对战事件发送到 CloudWatch 事件。使用 CloudWatch Events,您可以设置规则,让对战事件路由到一系列目标以进行路由,包括 SNS 主题和其他Amazon服务进行处理。例如,您可以设置一个规则,将事件“PotentialMatchCreated”路由到处理玩家接受情况的 Amazon Lambda 函数。有关如何使用 CloudWatch 事件的更多信息,请参阅开始使用指南,其中包括教程集合。

如果您在配置您的对战构建器时计划使用 CloudWatch Events,可以将通知目标字段留空;如果您希望使用两个选项,则参考 SNS 主题。

要访问 CloudWatch 事件中的 Amazon GameLift 匹配活动,请转到Amazon CloudWatch 控制台并打开事件. 请确保您所在的区域是设置自己的对战配置的区域。有关获取帐户凭证来访问 CloudWatch 事件的更多信息,请参阅登录 Amazon CloudWatch 控制台. 每个对战事件由服务 (GameLift)、对战名称和对战票证标识。

设置 SNS 主题

您可以要求 Amazon GameLift 将 FlexMatch 对战构建器生成的所有事件发布到 Amazon Simple Notification Service (SNS) 主题。配置对战构建器时,将通知目标字段设置为 SNS 主题 ARN。

为 Amazon GameLift 事件通知设置 SNS 主题

  1. 转至Amazon Simple Notification Service 控制台.

  2. 创建主题。 在 SNS 控制面板中,选择 Create topic (创建主题),然后按照说明创建主题。创建主题之后,控制台自动打开新主题的 Topic details 页面。

  3. 允许 Amazon GameLift 发布到主题。 如果您尚未打开主题的“Topic Details”页面,请在导航栏中选择“Topics”,然后单击主题 ARN 以打开它。选择主题操作 Edit topic policy,然后转到 Advanced view tab

    将以下加粗的语法添加到现有策略的结尾。(为清晰起见显示了整个策略。)

    { "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", "SNS:Receive" ], "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_matchmaking_configuration_name" } } ] }

为 Lambda 设置权限

您可以要求 Amazon GameLift 将 FlexMatch 对战构建器生成的所有事件发布到 Amazon Simple Notification Service (SNS) 主题。您可以为每个 Amazon SNS 主题触发 Lambda。配置对战构建器时,将通知目标字段设置为 SNS 主题 ARN。

这些区域有:Amazon CloudFormation下面的信息将配置在每个 Amazon SNS 主题上触发的 Lambda。它还配置了一个主题,以使 GameLift 能够在您的账户中编写 Amazon SNS。最后,它为所有 Amazon SNS 设置 Lambda 权限,以触发 Lambda。

FlexMatchEventTopic: Type: "AWS::SNS::Topic" Properties: KmsMasterKeyId: alias/aws/sns #Enables server-side encryption on the topic using Amazon-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