

# API Gateway で WebSocket API をデプロイする
<a name="apigateway-set-up-websocket-deployment"></a>

 WebSocket API を作成したら、この API をデプロイしてユーザーが呼び出せるようにする必要があります。

API をデプロイするには、[API デプロイ](api-gateway-basic-concept.md#apigateway-definition-api-deployment)を作成し、それを [ステージ](api-gateway-basic-concept.md#apigateway-definition-api-stage)に関連付けます。各ステージは、API のスナップショットであり、クライアントアプリが呼び出し可能になります。

**重要**  
API を更新するたびに、API を再デプロイする必要があります。ステージ設定以外の変更には、以下のリソースへの変更も含めて、再デプロイが必要です。  
ルート
統合
オーソライザー
API ごとのステージ数は、デフォルトで 10 個に制限されています。デプロイでステージを再利用することをお勧めします。

デプロイされた WebSocket API を呼び出すため、クライアントはメッセージを API の URL に送信します。URL は、API のホスト名とステージ名によって決定されます。

**注記**  
API Gateway は最大 128 KB までのペイロードをサポートし、最大フレームサイズは 32 KB です。メッセージが 32 KB を超えた場合は、それぞれを 32 KB 以下の複数のフレームに分割する必要があります。

API のデフォルトドメイン名を使用すると、特定のステージ (`{{{stageName}}}`) の WebSocket API の URL は、たとえば次の形式になります。

```
wss://{{{api-id}}}.execute-api.{{{region}}}.amazonaws.com/{{{stageName}}}
```

WebSocket API のデフォルトのベース URL をよりユーザーフレンドリなものにするには、カスタムドメイン名 (例: `api.example.com`) を作成し、API のデフォルトのホスト名と置き換えることができます。設定プロセスは、REST API と同じです。詳細については、「[API Gateway でのパブリック REST API のカスタムドメイン名](how-to-custom-domains.md)」を参照してください。

ステージを使用すると、API の堅牢なバージョン管理が可能になります。たとえば、API を `test` ステージと、`prod` ステージにデプロイし、`test` ステージをテストビルドとして使用し、`prod` ステージを安定したビルドとして使用できます。更新がテストに合格したら、`test` ステージを `prod` ステージに昇格させることができます。昇格は、`prod` ステージに API を再デプロイすることで実行できます。ステージの詳細については、「[API Gateway で REST API のステージをセットアップする](set-up-stages.md)」を参照してください。

**Topics**
+ [AWS CLI を使用して WebSocket API デプロイを作成する](#apigateway-create-websocket-deployment-using-awscli)
+ [API Gateway コンソールを使用して WebSocket API デプロイを作成する](#apigateway-create-websocket-deployment-using-console)

## AWS CLI を使用して WebSocket API デプロイを作成する
<a name="apigateway-create-websocket-deployment-using-awscli"></a>

次の [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-deployment.html) コマンドでは、デプロイを作成します。

```
aws apigatewayv2 --region us-east-1 create-deployment --api-id aabbccddee
```

出力は次のようになります。

```
{
    "DeploymentId": "fedcba",
    "DeploymentStatus": "DEPLOYED",
    "CreatedDate": "2018-11-15T06:49:09Z"
}
```

このデプロイをステージに関連付けるまで、デプロイされた API は呼び出し可能ではありません。新しいステージを作成するか、以前に作成したステージを再利用できます。

次の [create-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-stage.html) コマンドは、新しいステージを作成し、それをデプロイに関連付けます。

```
aws apigatewayv2 --region us-east-1 create-stage --api-id aabbccddee --deployment-id fedcba --stage-name test
```

出力は次のようになります。

```
{
    "StageName": "test",
    "CreatedDate": "2018-11-15T06:50:28Z",
    "DeploymentId": "fedcba",
    "DefaultRouteSettings": {
        "MetricsEnabled": false,
        "ThrottlingBurstLimit": 5000,
        "DataTraceEnabled": false,
        "ThrottlingRateLimit": 10000.0
    },
    "LastUpdatedDate": "2018-11-15T06:50:28Z",
    "StageVariables": {},
    "RouteSettings": {}
}
```

また、ステージの `deploymentId` プロパティを新しく作成されたデプロイ ID ({{deployment-id}}) で更新することにより、既存のステージを再利用することもできます。次の [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html) コマンドは、ステージのデプロイ ID を更新します。

```
aws apigatewayv2 update-stage --region {{region}} \
    --api-id {{api-id}} \ 
    --stage-name {{stage-name}} \ 
    --deployment-id {{deployment-id}}
```

## API Gateway コンソールを使用して WebSocket API デプロイを作成する
<a name="apigateway-create-websocket-deployment-using-console"></a>

API Gateway コンソールを使用して WebSocket API のデプロイを作成するには、次の作業を行います。

1. API Gateway コンソールにサインインし、API を選択します。

1. [**API のデプロイ**] を選択します。

1. ドロップダウンリストから目的のステージを選択するか、新しいステージの名前を入力します。