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

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

设置 FlexMatch 事件通知

如果您使用的是 GameLift FlexMatch 对战,您需要一种方法来跟踪单独对战请求的状态。实施事件通知是跟踪对战事件的快速有效的方法。所有投入实际生产的游戏,或具有大量对战活动的预生产中的游戏都应使用事件通知。

有两个选项可用于设置事件通知。你可以使用亚马逊 CloudWatch Events,其中包括一套工具,可用于管理事件和对其采取行动。要么, 您可以设置自己的Amazon Simple Notification Service (Amazon SNS) 主题并配置您的对战构建器,让对战事件通知直接发送到主题。

要查看 FlexMatch 那些事件 GameLift 发射,请参阅FlexMatch 对战事件.

设置 CloudWatch 事件

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

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

您可以访问 GameLift 对战 CloudWatch 中的事件CloudWatch 控制台. 有关更多信息,请参阅 。登录 Amazon CloudWatch 控制台. CloudWatch 事件标识每个对接会服务事件 (GameLift), 对战名称和对战票证书。

设置 Amazon SNS 主题

您可以有 GameLift 发布所有事件 FlexMatch 对战生成Amazon SNSNS主题。

创建 SNS 主题 GameLift 事件通知

  1. 打开 Amazon SNS 控制台

  2. 在导航窗格中,选择 Topics (主题)

  3. Topics(主页)页面上,选择 Create topic(创建主题)。

  4. 在 控制台中,创建一个主题。有关更多信息,请参阅 。使用 创建主题Amazon Web Services Management Console中的Amazon Simple Notificat.

  5. 在存储库的详细信息页面,选择编辑.

  6. 在存储库的编辑您的主题页面,展开访问策略-可选的,然后从下面添加粗体语法Amazon Identity and Access Management(IAM) 策略声明到现有策略的结尾。(为清晰起见此处显示了整个策略。) 确保将Amazon Resource Name (ARN) 详细信息用于您自己的 SNS 主题和 GameLift 对战。

    { "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_matchmaking_configuration_name" } } } ] }
  7. 选择 Save changes(保存更改)。

配置主题订阅以调用 Lambda 函数

您可以使用发布到 Amazon SNS 主题的事件通知调用 Lambda 函数。配置对战构建器时,请务必将通知目标设置为 SNS 主题的 ARN。

以下Amazon CloudFormation模板配置对名为的 SNS 主题的订阅MyFlexMatchEventTopic调用 Lambda 函数FlexMatchEventHandlerLambdaFunction. 该模板创建了一个 IAM 权限策略,该策略允许 GameLift 写到 SNS 主题。最后,它为 SNS 主题添加 Lambda 函数调用 Lambda 函数的权限。

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