すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Function Compute の使用

最終更新日:Nov 26, 2025

Function Compute (FC) は、イベント駆動のメカニズムを利用して、Tablestore からの増分データ変更を自動的に処理します。これにより、リアルタイムの応答と自動処理が可能になります。

仕組み

FC は、Tablestore トリガーを使用して Tablestore からの増分データを自動的に処理します。データテーブルが変更されると、Tablestore Stream が増分変更をリアルタイムでキャプチャします。トリガーはストリーム内のデータ変更をリッスンし、対応する関数を自動的に呼び出して処理します。これにより、データ変更に対するリアルタイムの応答と処理が保証されます。

このイベント駆動のアプローチにより、データ変更をポーリングする必要がなくなります。タイムリーな処理を保証し、リソースの浪費を防ぎます。従来のスケジュールされたタスクや手動の方法と比較して、FC はより優れたリアルタイム性能と自動化を提供します。非同期処理と弾性スケーリングにより、システムの複雑さと運用保守 (O&M) コストを削減します。これにより、データ同期、イベント通知、増分データアーカイブなど、データ変更へのリアルタイム応答が必要なシナリオに最適です。

イベント関数に加えて、FC は Web 関数やタスク関数などの他のタイプもサポートしています。異なる関数タイプは、異なるビジネスシナリオや技術アーキテクチャ要件に適しています。関数タイプと適切なものを選択する方法の詳細については、「関数の選択」をご参照ください。

イベント関数を使用した Tablestore へのアクセス

ステップ 1:データテーブルの Stream 機能の有効化

Function Compute (FC) の Tablestore トリガーは、Stream 機能に依存してデータテーブルから増分データ変更を取得します。まず、ターゲットデータテーブルの Stream 機能を有効にする必要があります。

Tablestore トリガーは、中国 (北京)、中国 (杭州)、中国 (上海)、中国 (深セン)、日本 (東京)、シンガポール、ドイツ (フランクフルト)、中国 (香港) のリージョンでサポートされています。
  1. Tablestore コンソールにログインします。上部のナビゲーションバーで、インスタンスが配置されているリージョンを選択し、ターゲットインスタンスのエイリアスをクリックします。

  2. インスタンス詳細 ページで、テーブル リスト内のターゲットデータテーブルの名前をクリックします。

  3. トンネル タブをクリックし、Stream 情報 の右側にある 有効化 をクリックします。

  4. Stream の有効化 ダイアログボックスで、ログの有効期限 を設定し、有効化 をクリックします。

    ログの有効期限 は、時間単位のゼロ以外の整数である必要があります。最大値は 168 時間です。ログの有効期限は一度設定すると変更できません。慎重に値を設定してください。

ステップ 2:イベント関数の作成と設定

Tablestore トリガーを作成する際、現在の関数と同じリージョンにある Tablestore インスタンスとデータテーブルのみを選択できます。関数とターゲットデータテーブルが同じリージョンにあることを確認してください。

  1. Function Compute コンソールにログインします。上部のナビゲーションバーで、ご利用の Tablestore インスタンスと同じリージョンを選択します。

  2. 左側のナビゲーションウィンドウで、関数管理 > 関数 をクリックします。

  3. 関数の作成 をクリックし、イベント関数 を選択してから、イベント関数の作成 をクリックします。

  4. 以下のように関数パラメーターを設定します。詳細な設定手順については、「イベント関数の作成」をご参照ください。

    • 関数名:関数の名前です。名前は同一アカウントおよび同一リージョン内で一意である必要があり、命名規則に従う必要があります。

    • ランタイム組み込みランタイム と、Python や Java などの使い慣れた言語とバージョンを選択することを推奨します。この例では Python 3.12 を使用します。

    • コードアップロード方法:FC にコードをアップロードする方法を選択します。この例では、ZIP のアップロード を選択します。サンプルコード tablestore_trigger_example.zip をダウンロードしてアップロードできます。

  5. 作成 をクリックして関数を作成します。

ステップ 3:イベント関数のテストと検証

Tablestore トリガーを設定する前に、イベントをシミュレートして関数をテストします。Tablestore トリガーはエンコーディングに CBOR フォーマットを使用します。テストでは、これを JSON フォーマットでシミュレートできます。

  1. 関数詳細 ページで、関数のテスト の横にあるドロップダウン矢印をクリックし、テストパラメーターの設定 をクリックします。

  2. イベント名 (例:test-event) を入力し、テキストエディターに以下のサンプルイベントを入力してから OK をクリックします。

    {
        "Version": "Sync-v1",
        "Records": [
            {
                "Type": "PutRow",
                "Info": {
                    "Timestamp": 1506416585740836
                },
                "PrimaryKey": [
                    {
                        "ColumnName": "pk_0",
                        "Value": 1506416585881590900
                    },
                    {
                        "ColumnName": "pk_1",
                        "Value": "2017-09-26 17:03:05.8815909 +0800 CST"
                    },
                    {
                        "ColumnName": "pk_2",
                        "Value": 1506416585741000
                    }
                ],
                "Columns": [
                    {
                        "Type": "Put",
                        "ColumnName": "attr_0",
                        "Value": "hello_table_store",
                        "Timestamp": 1506416585741
                    },
                    {
                        "Type": "Put",
                        "ColumnName": "attr_1",
                        "Value": 1506416585881590900,
                        "Timestamp": 1506416585741
                    }
                ]
            }
        ]
    }
  3. 関数のテスト をクリックし、テストが完了するのを待ちます。実行が成功すると、OK が返されます。ログ出力 をクリックして実行ログを表示します。

    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Begin to handle event
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] --------------------------------------------------
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Event Type: PutRow
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Timestamp: 1506416585740836
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Primary Keys:
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Name: pk_0, Value: 1506416585881590900
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Name: pk_1, Value: 2017-09-26 17:03:05.8815909 +0800 CST
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Name: pk_2, Value: 1506416585741000
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Attribute Columns:
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Type: Put, Name: attr_0, Value: hello_table_store, Timestamp: 1506416585741
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Type: Put, Name: attr_1, Value: 1506416585881590900, Timestamp: 1506416585741
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] --------------------------------------------------

ステップ 4:トリガーの設定と検証

関数のテストと検証が完了したら、Tablestore トリガーを設定してデータテーブルの変更に自動的に応答するようにします。その後、データ操作を実行してトリガーの機能を検証します。

  1. 関数詳細 ページで トリガー タブをクリックし、トリガーの作成 をクリックします。

  2. 以下のようにトリガーパラメーターを設定します。

    • トリガータイプTablestore を選択します。

    • 名前test_trigger などのカスタムトリガー名を入力します。

    • インスタンス:ターゲットの Tablestore インスタンスを選択します。

    • テーブル:ターゲットのデータテーブルを選択します。

  3. OK をクリックしてトリガーを作成します。

  4. Tablestore データテーブルにデータの行を挿入または更新します。この例では、Tablestore コンソールで行を挿入する方法を示します。

  5. 関数詳細 ページで ログ タブをクリックして、関数の呼び出しログと結果を表示します。操作 列で リクエストログ をクリックして詳細なログ情報を表示します。

    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Begin to handle event
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] --------------------------------------------------
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Event Type: PutRow
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Timestamp: 1763973009228992
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Primary Keys:
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO]   Name: id, Value: 8
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO]   Name: name, Value: test-name
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Attribute Columns:
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO]   Type: Put, Name: age, Value: 18, Timestamp: 1763973009229
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] --------------------------------------------------

割り当てと制限事項

  • 関数コードを作成する際は、ロジックループを作成しないでください。たとえば、テーブル A のデータを更新する関数を呼び出すトリガーをテーブル A に設定しないでください。これにより、無限に関数が呼び出されることになります。

  • 関数実行中に例外が発生した場合、Tablestore のログデータが有効期限切れになるまで、関数は無期限にリトライされます。

    説明
    • 関数実行の例外は、次の状況で発生する可能性があります:

      • 関数コードが例外をスローする:関数インスタンスは起動しており、その実行時間に対して課金されます。

      • 関数の起動に失敗する:不正な起動コマンドやその他の理由により、関数インスタンスが起動しません。この場合、課金はされません。

    • 関数実行の例外が発生した場合、無限リトライを防ぐためにデータテーブルの Stream 機能を無効にしてください。Stream 機能を無効にする前に、他のトリガーがそのデータテーブルを使用していないことを確認し、他のトリガーへの影響を避けてください。

よくある質問

  • 特定のリージョンで Tablestore トリガーを作成できない場合は、サポートされているリージョンのリストを確認してください。

  • Tablestore トリガーを作成する際に Tablestore データテーブルが見つからない場合は、Tablestore データテーブルと FC サービスが同じリージョンにあることを確認してください。

  • Tablestore トリガーを使用しているときに、クライアントがリクエストをキャンセルしたことを示すエラーが繰り返し報告される場合、これは通常、クライアントで設定されたタイムアウト期間が関数の実行時間より短いために発生します。クライアントのタイムアウト期間を長くすることを推奨します。詳細については、「クライアントが切断され、「Invocation canceled by client」エラーが報告された場合の対処法」をご参照ください。

  • Tablestore データテーブルに新しいデータが追加されても Tablestore トリガーが呼び出されない場合は、次の項目を確認して問題をトラブルシューティングしてください:

    • データテーブルで Stream 機能が有効になっているかどうかを確認します。

    • トリガーに設定されているロールが正しいかどうかを確認します。デフォルトのトリガーロール AliyunTableStoreStreamNotificationRole を使用できます。

    • 関数実行ログを確認して、関数の実行に失敗したかどうかを判断します。関数が失敗した場合、Tablestore のログデータが有効期限切れになるまでリトライされます。