設定FlexMatch事件通知 - Amazon GameLift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定FlexMatch事件通知

您可以使用活動通知來追蹤個別配對要求的狀態。所有正在製作中或在製作中進行大量配對活動的遊戲都應使用事件通知。

設定事件通知有兩種選項。

  • 讓您的分房系統將活動通知發佈至亞馬遜簡易通知服務 (Amazon SNS) 主題。

  • 使用自動發佈的 Amazon EventBridge 事件及其工具套件來管理事件。

如需 Amazon GameLift 發出的FlexMatch事件清單,請參閱FlexMatch配對活動

設定EventBridge活動

亞馬遜GameLift會自動將所有配對活動發佈到亞馬遜EventBridge。使用EventBridge,您可以設定規則,將配對事件路由至目標進行處理。例如,您可以設定規則,將事件 "PotentialMatchCreated" 路由到處理玩家接受的AWS Lambda函數。如需詳細資訊,請參閱什麼是 AmazonEventBridge?

注意

設定配對系統時,請將通知目標欄位保持空白,或者如果您要同EventBridge時使用 Amazon SNS,請參考 SNS 主題。

設置亞馬遜 SNS 主題

您可以讓亞馬遜將FlexMatch分房系統產生的所有事件GameLift發佈到 Amazon SNS 主題。

若要為亞馬遜GameLift事件通知建立 SNS 主題
  1. 開啟 Amazon SNS 主控台

  2. 在導覽窗格中,選擇 Topics (主題)。

  3. Topics (主題) 頁面上,選擇 Create topic (建立主題)。

  4. 在 主控台中建立主題。如需詳細資訊,請參閱使用 Amazon 簡單通知服務開發人員指南AWS Management Console中的建立主題

  5. 在您主題的 [詳細資料] 頁面上,選擇 [編輯]。

  6. (選擇性) 在您主題的 [編輯] 頁面上,展開 [存取政策],然後將下列 AWS Identity and Access Management (IAM) 政策陳述式中的粗體語法新增至現有政策的結尾。(為了清晰起見,整個政策在此處顯示。) 請務必針對您自己的 SNS 主題和 Amazon GameLift 配對組態使用 Amazon 資源名稱 (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" } } } ] }
  7. 選擇 Save changes (儲存變更)。

設定具有伺服器端加密的 SNS 主題

您可以使用伺服器端加密 (SSE) 在加密主題中儲存敏感資料。SSE 使用 AWS Key Management Service (AWS KMS) 中的受管金鑰來保護 Amazon SNS 主題中的訊息內容。如需使用 Amazon SNS 進行伺服器端加密的詳細資訊,請參閱 Amazon 簡單通知服務開發人員指南中的靜態加密。

若要設定具有伺服器端加密的 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: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。

下列AWS 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 AWS 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