こんにちは!
AWSのAPI Gatewayを使用してウェブソケットを実装する場合、いくつかの制約事項があります。この記事では、API Gatewayのウェブソケットの制約事項をまとめます。
AWSのAPI Gatewayを使用すると、ウェブソケットを使用したリアルタイムな通信を実装することができます。
API Gatewayのウェブソケットの制約事項は以下の通りです。
リソースまたはオペレーション | デフォルトのクォータ | 引き上げ可能 |
---|---|---|
1 秒あたり、1 アカウント (すべての WebSocket API 間) あたり、1 リージョンあたりの新しい接続数 | 500 | はい |
同時接続 | 対象外 | 該当しません |
AWS LambdaAPI ごとの オーソライザー | 10 | はい |
AWS Lambda オーソライザー結果サイズ | 8 KB | いいえ |
API あたりのルート数 | 300 | はい |
API あたりの統合の数 | 300 | はい |
API あたりのステージ数 | 10 | はい |
WebSocket のフレームサイズ | 32 KB | いいえ |
メッセージのペイロードサイズ | 128 KB ** | いいえ |
WebSocket API の接続時間 | 2 時間 | いいえ |
アイドル接続のタイムアウト | 10 分 | いいえ |
API Gateway は、同時接続にクォータを適用しません。
同時接続の最大数は、1 秒あたりの新規接続数と 2 時間の最大接続時間によって決まります。たとえば、デフォルトのクォータが 500 新規接続/秒の場合、クライアントが 2 時間を超える最大速度で接続する場合、API Gateway は最大 3,600,000 の同時接続を提供することができます。
WebSocket フレームサイズには 32 KB のクォータがあるため、32 KB を超えるメッセージはそれぞれが 32 KB 以下の複数のフレームに分割する必要があります。それより大きなメッセージ (または大きなフレームサイズ) が受信された場合、接続は 1009 コードで閉じられます。
APIGatewayのWebSocketsを使用してリアルタイムのチャットアプリケーションを実装する方法を示しています。実際にJSを実行して動作確認してみてください。
// Connect to the WebSocket endpoint
const socket = new WebSocket('wss://{API_ID}.execute-api.{REGION}.amazonaws.com/{STAGE_NAME}');
// Listen for messages from the server
socket.addEventListener('message', (event) => {
// Parse the message
const message = JSON.parse(event.data);
// Display the message in the chat window
const chatWindow = document.getElementById('chat-window');
const newMessage = document.createElement('p');
newMessage.textContent = `${message.username}: ${message.text}`;
chatWindow.appendChild(newMessage);
});
// Send a message to the server
const sendMessage = (username, text) => {
// Create the message object
const message = {
username,
text
};
// Send the message to the server
socket.send(JSON.stringify(message));
};
// Listen for the 'send' button to be clicked
const sendButton = document.getElementById('send-button');
sendButton.addEventListener('click', () => {
// Get the username and message text from the form
const username = document.getElementById('username').value;
const text = document.getElementById('message-text').value;
// Send the message to the server
sendMessage(username, text);
});
このコードは、API Gateway WebSocketsを使用してリアルタイムのチャットアプリケーションを実装する方法です。
socket.addEventListener('message', ...)
を使用して、サーバーからのメッセージを受信し、 sendMessage
関数を使用して、サーバーにメッセージを送信することができます。
本記事では、API Gatewayのウェブソケットの制約事項と、実装方法をまとめました。
API Gatewayのウェブソケットを使用してリアルタイムな通信を実装する場合、事前に制約事項を把握しておく必要があります。サンプルプログラムも紹介しましたので、参考にしてください。
サーバーレス開発、低コストなAWS開発内製化はお気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎