请参阅设置游戏会话置放通知。
您可以使用Events 来监控各个放置请求的状态。我们建议为所有有大量投放活动的游戏设置事件通知。
有两个选项可用于设置事件通知。
-
让 Amazon GameLift Servers 使用队列向 Amazon Simple Notification Service(Amazon SNS)主题发布事件通知。
-
使用自动发布的 Amazon EventBridge 赛事及其工具套件来管理事件。
有关 Amazon GameLift Servers 发出的游戏会话放置事件的列表,请参阅游戏会话放置事件。
重要
对于高吞吐量放置系统,我们建议使用标准(非 FIFO)Amazon SNS 主题,而不是 FIFO 主题。FIFO 主题的发布限制低于标准主题,这可能会导致在高负载期间出现节流异常。如果您在使用 FIFO 主题时遇到节流,则可能会丢失队列放置通知。
设置 SNS 主题。
要让 Amazon GameLift Servers 将游戏会话队列生成的所有事件发布到某个主题,请将通知目标字段设置为主题。
为 Amazon GameLift Servers 事件通知设置 SNS 主题
访问 https://console.aws.amazon.com/sns/v3/home
,登录 Amazon Web Services 管理控制台 并打开 Amazon SNS 控制台。 -
在 SNS 主题页面,选择创建主题,然后按照说明创建主题。
-
在 Create Policy(创建策略)下,执行以下操作。
-
选择高级方法。
-
将以粗体显示的 JSON 数据块添加到现有策略。
-
(可选)通过向资源策略添加条件,为主题添加其他访问控制。
-
-
选择创建主题。
-
创建 SNS 主题后,在创建队列时将其添加到队列中,或者编辑现有队列以将其添加。
使用服务器端加密设置 Amazon SNS 主题
借助服务器端加密(SSE),您可以采用加密主题的方式存储敏感数据。SSE 使用 Amazon Key Management Service(Amazon KMS)中托管的密钥保护 Amazon SNS 主题中消息的内容。有关 Amazon S3 如何执行加密的更多信息,请参阅 Amazon Simple Storage Service 开发人员指南中的使用服务器端加密保护数据。
要使用服务器端加密设置 SNS 主题,请查看下面的主题:
-
《Amazon Key Management Service 开发人员指南》中的创建密钥。
-
将 S imple 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:gamesessionqueue/your_queue_name" }, "StringEquals": { "kms:EncryptionContext:aws:sns:topicArn": "arn:aws:sns:your_region:your_account:your_sns_topic_name" } } }
设置EventBridge
Amazon GameLift Servers 会自动将所有游戏会话放置事件发布到 EventBridge。使用 EventBridge,您可以设置规则将事件路由到目标进行处理。例如,您可以设置一条规则,将事件路由PlacementFulfilled到一个处理连接到游戏会话之前的任务的Amazon Lambda函数。有关 EventBridge 的更多信息,请参阅 Amazon EventBridge 用户指南中的 Amazon EventBridge 入门。
以下是一些适用于 Amazon GameLift Servers 队列的 EventBridge 规则示例:
匹配来自所有 Amazon GameLift Servers 队列的事件
{ "source": [ "aws.gamelift" ], "detail-type": [ "GameLift Queue Placement Event" ] }
匹配特定队列中的事件
{ "source": [ "aws.gamelift" ], "detail-type": [ "GameLift Queue Placement Event" ], "resources": [ "arn:aws:gamelift:your_region:your_account:gamesessionqueue/your_queue_name" ] }