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

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

为游戏会话放置设置事件通知

您可以使用事件通知来监控单个放置请求的状态。我们建议为所有具有高容量投放活动的游戏设置事件通知。

有两个选项可用于设置事件通知。

  • 让亚马逊使用队列向亚马逊简单通知服务 (Amazon SNS) 主题GameLift发布事件通知。

  • 使用自动发布的亚马逊EventBridge活动及其工具套件来管理事件。

有关亚马逊发出的游戏会话投放事件的列表GameLift,请参阅游戏会话放置活动

设置 SNS 主题

GameLift要让亚马逊将游戏会话队列生成的所有事件发布到某个主题,请将通知目标字段设置为主题。

为亚马逊GameLift事件通知设置 SNS 主题
  1. 访问 https://console.aws.amazon.com/sns/v3/home,登录 Amazon Web Services Management Console 并打开 Amazon SNS 控制台。

  2. 在 SNS 主题页面上,选择创建主题,然后按照说明创建您的主题。

  3. 在 “访问策略” 下,执行以下操作:

    1. 选择 “高级” 方法。

    2. 将 JSON 对象的以下粗体部分添加到现有策略中。

      { "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:gamesessionqueue/your_queue_name" } } } ] }
    3. (可选)通过向资源策略添加条件,为主题添加额外的访问控制。

  4. 选择 Create topic(创建主题)

  5. 创建 SNS 主题后,在队列创建期间将其添加到队列中,或者编辑现有队列将其添加。

使用服务器端加密设置 SNS 主题

使用服务器端加密 (SSE),您可以在加密主题中存储敏感数据。SSE 使用在 Amazon Key Management Service (Amazon KMS) 中管理的密钥保护 Amazon SNS 主题中的消息内容。有关使用 Amazon SNS 进行服务器端加密的更多信息,请参阅《亚马逊简单通知服务开发者指南》中的静态加密。

要设置具有服务器端加密的 SNS 主题,请查看以下主题:

创建 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

亚马逊GameLift会自动将所有游戏会话投放活动发布到EventBridge。EventBridge您可以使用设置规则,将事件路由到目标进行处理。例如,您可以设置一个规则,将事件路由PlacementFulfilled到处理连接到游戏会话之前的任务的Amazon Lambda函数。有关的更多信息EventBridge,请参阅什么是亚马逊EventBridge?亚马逊EventBridge用户指南中。

以下是一些用于亚马逊GameLift队列的EventBridge规则示例:

匹配来自所有亚马逊GameLift队列的事件

{ "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" ] }