

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ゲームセッション配置のイベント通知を設定
<a name="queue-notification"></a>

イベント通知を使用して、個々のプレイスメントリクエストのステータスをモニタリングできます。プレイスメントアクティビティが多いすべてのゲームにイベント通知を設定することをおすすめします。

イベント通知を設定するためには二つのオプションがあります。
+ キューを使用して Amazon GameLift Servers から Amazon Simple Notification Service (Amazon SNS) トピックにイベント通知を発行します。
+ 自動的にパブリッシュされる Amazon EventBridge イベントとイベント管理ツール一式を使用します。

Amazon GameLift Servers から生成されるゲームセッションの配置イベントのリストについては、「[ゲームセッション配置イベント](queue-events.md)」を参照してください。

**重要**  
ハイボリュームプレイスメントシステムでは、FIFO トピックではなく、標準 (非FIFO) Amazon SNS トピックを使用することをお勧めします。FIFO トピックは標準トピックよりも発行制限が低く、高負荷時にスロットリング例外が発生する可能性があります。FIFO トピックでスロットリングが発生すると、キュー配置通知が失われる可能性があります。

## SNS トピックの設定
<a name="queue-notification-sns"></a>

Amazon GameLift Servers を使用して、ゲームセッションキューで生成されたすべてのイベントを 1 つのトピックにパブリッシュします。

**Amazon GameLift Servers イベント通知用の SNS トピックをセットアップするには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home) で Amazon SNS コンソールを開きます。

1. SNS **[トピック]** ページから **[トピックを作成]** を選択し、トピックを作成する手順に従います。

1. **[アクセスポリシー]** で、以下の作業を行います。

   1. **[詳細設定]** 方法を選択します。

   1. JSON オブジェクトの次の太字のセクションを既存のポリシーに追加します。

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-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:us-east-1:111122223333: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:us-east-1:111122223333:your_topic_name",
            "Condition": {
              "ArnLike": {
              "aws:SourceArn": "arn:aws:gamelift:us-east-1:111122223333:gamesessionqueue/your_queue_name"
              }
            }
          }
        ]
      }
      ```

------

   1. (オプション) リソースポリシーに条件を追加して、トピックにアクセス制御を追加します。

1. **[トピックを作成]** を選択します。

1. SNS トピックを作成したら、キューの作成時にそのトピックをキューに追加するか、既存のキューを編集して追加します。

## サーバー側の暗号化を使用して SNS トピックをセットアップする
<a name="queue-notification-sns-sse"></a>

サーバー側の暗号化 (SSE) では、機密データを暗号化されたトピックに保存できます。SSE は、 AWS Key Management Service (AWS KMS) のマネージドキーを使用して、Amazon SNS トピック内のメッセージの内容を保護します。Amazon SNS によるサーバー側の暗号化の詳細については、「*Amazon Simple Notification Service デベロッパーガイド*」の「[保管時の暗号化](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html)」を参照してください。

サーバー側の暗号化を使用して SNS トピックを設定する方法については、以下のトピックを確認してください。
+ 「*AWS Key Management Service デベロッパーガイド*」の「[キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」
+ 「*Amazon Simple Notification Service デベロッパーガイド*」の「[トピックの SSE を有効にする](https://docs.aws.amazon.com/sns/latest/dg/sns-enable-encryption-for-topic.html)」

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 をセットアップする
<a name="queue-notification-cwe"></a>

Amazon GameLift Servers は、すべてのゲームセッションの配置イベントを EventBridge に自動的に投稿します。EventBridge を使用すると、処理するためにイベントをターゲットにルーティングするルールを設定できます。たとえば、ゲームセッションへの接続の前にタスクを処理する `PlacementFulfilled` AWS Lambda 関数にイベントをルーティングするルールを設定できます。Eventbridge の詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)」を参照してください。

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

## を使用したリファレンス実装 AWS CDK
<a name="queue-notification-toolkit"></a>

Amazon SNS、および Amazon DynamoDB を使用したイベントベースのゲームセッション配置の完全なリファレンス実装については AWS Lambda、Amazon GameLift Toolkit の[「イベントベースのゲームセッション配置ガイダンス](https://github.com/amazon-gamelift/amazon-gamelift-toolkit/tree/main/event-based-session-placement)」を参照してください。このガイダンスには、ゲームセッション配置イベントを処理する AWS Lambda 関数、ゲームセッション配置状態を追跡するための Amazon DynamoDB テーブル、キューAmazon GameLift Servers設定のベストプラクティスを使用して、完全なイベント駆動型ゲームセッション配置システムをデプロイするための AWS CDK テンプレートが含まれています。