本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置 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 SNS 主题
您可以有 GameLift 发布所有事件 FlexMatch 对战生成Amazon SNSNS主题。
创建 SNS 主题 GameLift 事件通知
-
打开 Amazon SNS 控制台
。 -
在导航窗格中,选择 Topics (主题)。
-
在 Topics(主页)页面上,选择 Create topic(创建主题)。
-
在 控制台中,创建一个主题。有关更多信息,请参阅 。使用 创建主题Amazon Web Services Management Console中的Amazon Simple Notificat.
-
在存储库的详细信息页面,选择编辑.
-
在存储库的编辑您的主题页面,展开访问策略-可选的,然后从下面添加粗体语法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
" } } } ] } -
选择 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