本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置FlexMatch事件通知
您可以使用事件通知来跟踪单个配对请求的状态。所有在制作中或在预制阶段有大量配对活动的游戏都应使用事件通知。
有两个选项可用于设置事件通知。
-
让您的媒人向亚马逊简单通知服务 (Amazon SNS) 主题发布事件通知。
-
使用自动发布的亚马逊EventBridge活动及其工具套件来管理事件。
有关亚马逊GameLift发出FlexMatch的事件的列表,请参阅FlexMatch配对活动。
设置EventBridge活动
亚马逊GameLift会自动将所有配对活动发布到亚马逊EventBridge. 使用EventBridge,您可以设置规则,将配对事件路由到目标进行处理。例如,您可以设置规则,将事件 “PotentialMatchCreated” 路由到处理玩家接受情况的Amazon Lambda函数。有关更多信息,请参阅什么是亚马逊EventBridge?
注意
配置媒人时,如果您想同时使用EventBridge和 Amazon SNS,请将通知目标字段留空,或者引用 SNS 主题。
设置亚马逊 SNS 主题
您可以让亚马逊GameLift将FlexMatch媒人生成的所有事件发布到亚马逊 SNS 话题。
为亚马逊GameLift事件通知创建 SNS 主题
-
打开 Amazon SNS 控制台
。 -
在导航窗格中,选择 Topics (主题)。
-
在 Topics(主页)页面上,选择 Create topic(创建主题)。
-
在 控制台中,创建一个主题。有关更多信息,请参阅使用亚马逊简单通知服务开发者指南Amazon Web Services Management Console中的创建主题。
-
在您的主题的详细信息页面上,选择编辑。
-
(可选)在主题的编辑页面上,展开访问策略,然后将以下 Amazon Identity and Access Management (IAM) 政策声明中的粗体语法添加到现有策略的末尾。(为清楚起见,此处显示了整个政策。) 请务必使用您自己的 SNS 主题和亚马逊GameLift配对配置的亚马逊资源名称 (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
" } } } ] } -
选择保存更改。
使用服务器端加密设置 SNS 主题
您可以使用服务器端加密 (SSE) 在加密主题中存储敏感数据。SSE 使用 Amazon Key Management Service (Amazon KMS) 中托管的密钥保护 Amazon SNS 主题中消息的内容。有关使用 Amazon SNS 进行服务器端加密的更多信息,请参阅《亚马逊简单通知服务开发者指南》中的静态加密。
要设置具有服务器端加密的 SNS 主题,请查看以下主题:
-
在Amazon Key Management Service开发者指南中@@ 创建密钥
创建 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。
以下Amazon CloudFormation模板配置了对名为的 SNS 主题的订阅,MyFlexMatchEventTopic
以调用名为的 Lambda 函数。FlexMatchEventHandlerLambdaFunction
该模板创建了一个 IAM 权限策略,GameLift允许亚马逊写入 SNS 主题。然后,该模板为 SNS 主题添加了调用 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