お知らせ:

当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

Advanced I/O Functions

はじめに

Advanced I/O Functionsは、すべてのCatalystコンポーネントに対してネイティブHTTPリクエストとレスポンスを処理します。単一のAdvanced I/O Functionで任意の数のAPIを使用でき、Functionに大規模なデータストリームを渡すことができます。これらのFunctionsにより、サーバーとクライアント間のアプリケーションの複雑なルーティングメカニズムを構築できます。これらのFunctionsを使用して、サーバーサイドのツールを迅速かつ効率的に構築・保守できます。

Advanced I/O Functionsは、さまざまなアクションを実行し、異なるユースケースを解決するための柔軟性も提供します。例えば、画像ファイルやその他の添付ファイルなどの大量のデータのストリーミングまたは解析、ビューのレンダリング、ファイルの埋め込み、またはAdvanced I/O Functionsを使用したファイルのダウンロードが可能です。

Basic I/O Functionタイプは、基本的な入出力操作のみを実行しパラメータを通じてデータを渡すため、ルーティングやデータのチャネリングには適していません。そのため、このような目的にはAdvanced I/O Functionsを使用できます。Advanced I/O FunctionではJSONやHTMLレスポンスなど、あらゆる形式のレスポンスを取得することもできます。

CatalystはAdvanced I/O FunctionsでExpress Node.jsフレームワークもサポートしています。Expressは、ルーティング、レンダリング、HTTPの機能を堅牢かつ簡単に処理するためのミドルウェアの設定を可能にする人気のあるNode.jsフレームワークです。Functionsにこのフレームワークをインポートして、そのパッケージにアクセスできます。

Advanced I/O Functionのエンドポイントは、Function URLを通じて直接アクセスできます。Function URLはFunctionの作成時に生成され、Functionに直接アクセスしてさまざまな条件でテストすることができます。

CatalystコンソールからAdvanced I/O Functionを作成し、そこでコーディングするか、CLIを使用してFunctionを初期化し、テスト後にコンソールにデプロイできます。CLIでは、ローカルホストでのFunction提供を通じてAdvanced I/O Functionsをテストすることもできます。

Functions紹介ページで説明されているように、Logs、Application Performance Monitoring、API Gatewayなどのさまざまなツールを使用して、Advanced I/O Functionsを管理し、パフォーマンス統計を表示できます。

Advanced I/O Functionsを含む複数のCatalystチュートリアルがあります。Advanced I/O Functionsの操作を練習するには、チュートリアルセクションを参照してください。

注意: Advanced I/O Functionの最大タイムアウトは30秒です。

ユースケース

Advanced I/O Functionsのユースケースを以下に示します:

  • 特定の地域のサービスやビジネスに関する情報を提供するローカル検索アプリケーションサービスは、WebおよびモバイルアプリケーションでのルーティングにAdvanced I/O Functionを使用しています。エンドユーザーがレストランやスパなどの地域のサービスに関する検索クエリを実行すると、アプリケーションはData StoreまたはCacheから利用可能なサービスに関する情報とそのウェブサイトリンクを取得します。ユーザーがリンクをクリックすると、ビジネスのウェブサイトにリダイレクトされます。これらのデータ取得とリダイレクション機能は、HTTPリクエストおよびレスポンスメソッドを使用してAdvanced I/O Functionsで完全に処理されます。
  • アプリケーションが映画、テレビ番組、ドキュメンタリーなどの動画ファイルをホストし、エンドユーザーがデバイスにダウンロードできるようにしています。このアプリケーションはExpress Node.jsフレームワークを使用して記述されており、Advanced I/O Functionを使用してこれらの機能を実装しています。このFunctionは、アプリケーションでの検索操作の実行、Data Storeからの結果の取得、数秒以内のファイルダウンロードの促進などのタスクを処理します。

Advanced I/O Functionsを実装できるその他の例には、次のタイプのアプリケーションが含まれます:

  • リアルタイムの共同ドキュメント編集、プロジェクト管理、またはコブラウジングアプリケーション
  • ライブメディアストリーミングアプリケーション
  • データ駆動型アプリケーション
  • シングルページアプリケーション
  • 独立したマイクロサービス
  • 音声・ビデオ会議アプリケーション
  • 動的なイベント駆動型アプリケーション
  • オンラインチャットアプリケーション

メリット

  • 機能が豊富でダイナミックなリアルタイムアプリケーションとマイクロサービスの構築が可能
  • 単一のFunctionに任意の数のAPIを含めることで、アプリケーション全体のルーティングを一元的に管理できる統合空間を提供
  • すべてのCatalystコンポーネントのサーバーとクライアント間のリクエスト・レスポンスロジックを構築し、複雑なルーティングを実行可能
  • Functionにパッケージを含めることで、Expressフレームワークのあらゆる機能を実装可能

Function構造

Java、Node.js、Pythonのメインファンクションファイルは、Functionの作成時に各Functionタイプごとに異なるデフォルトコードとモジュールで初期化されます。Functionスタックセクションで説明されているように、Java、Node.js、またはPython Functionの構造には、一般的にメインファンクションファイルと依存関係および設定ファイルが含まれています。Catalyst Functionsの汎用的なFunctionディレクトリ構造と設定ファイルの詳細については、プロジェクトディレクトリ構造ヘルプページを参照してください。

Java、Node.js、Python環境でAdvanced I/O Functionが初期化されるデフォルトコードを確認しましょう。

注意: Java、Node.js、Python環境でのAdvanced I/O Functionのサンプルについては、このチュートリアルを参照してください。

Java

CatalystはJava環境でAdvanced I/O Functionを以下のシンプルな入出力操作のデフォルトコードで初期化します。

Functions- Advanced I/O Java

Advanced I/O Java Functionは、リクエストとレスポンスを処理するためにjavax.servletパッケージをインポートします。メインクラスにCatalystAdvancedIOHandlerを実装します。ルート定義はpublic void runner()ファンクション内で定義する必要があります。

Node.js

Node.jsのAdvanced I/O Functionは、コンソールから2つの異なるテンプレートで作成できます:すべてのExpressモジュールを含むExpress.jsテンプレート、またはExpressモジュールもNodeモジュールも含まないブランクテンプレートです。ただし、CLIからFunctionを初期化する場合は、構造にNodeモジュールのみ含めることができます。Expressモジュールは別途インストールする必要があります。

  1. Express.jsテンプレート

    CatalystコンソールからNode.jsの依存関係付きでAdvanced I/O Functionを作成すると、Expressモジュールが自動的に追加されます。これにより、FunctionのディレクトリにExpressフレームワークがインストールされます。

    CLIからAdvanced I/O Functionを初期化する場合、Functionのディレクトリでnpm install express –saveを実行してExpressを独立してインストールできます。

    Catalyst Advanced I/O Functionsは、Node.js HTTP Functionsのデフォルトのリクエストおよびレスポンスオブジェクトreqresをサポートしています。これらのオブジェクトは、CacheやData Storeなどのcatalystコンポーネントにマッピングされたルートのリクエストとレスポンスを処理します。
    Functions- Advanced I/O Node.js
    ここでのルートはapp.METHOD(PATH, HANDLER)の形式で定義され、アクションはルート定義内でコーディングされます。
  2. ブランクテンプレート

    ブランクテンプレートでは、要件に合わせてネイティブのNode.jsコードをゼロから構築できます。このテンプレートにはExpress.jsモジュールは含まれていません。コンソールでSDKなしでFunctionを初期化すると、NodeモジュールもExpressモジュールもないブランクテンプレートで作成されます。

    ブランクテンプレートのサンプルコードにもreqおよびresオブジェクトが含まれており、各URLパスに対して異なるレスポンスが定義されています。
    Functions- Advanced I/O Node.js
    これはブランクテンプレートであるため、createServer()メソッドを使用してHTTPサーバーを作成し、サーバーがリクエストを受信するたびに実行されるrequestListener()ファンクションに渡す必要があります。Node.jsでのネイティブHTTP Functionの記述方法については、公式ドキュメントを参照してください。

Python

CLIからAdvanced I/O Functionを初期化すると、以下のボイラープレートコードがPython Functionディレクトリ内のmain.pyファイルに自動的に含まれます。

Catalyst Advanced I/O Functionsの入出力操作を効率的に処理するために、flaskフレームワークを使用しています。このフレームワークは、開発者に最大限の柔軟性を提供しながら堅牢なPythonアプリケーションを構築するためのツールとライブラリを提供します。また、単一のPythonファイルを使用してアプリケーションを実行できるようにすることで、Functionの効率を向上させます。

Catalyst Advanced I/O FunctionsはPython HTTP Functionのリクエストおよびレスポンスオブジェクトをサポートしています。これらのオブジェクトは、CacheやData StoreなどのCatalystコンポーネントにマッピングされたルートのリクエストとレスポンスを処理します。

copy
import json
import zcatalyst-sdk
import logging
from flask import Request, make_response, jsonify

def handler(request: Request): app = zcatalyst-sdk.initialize() logger = logging.getLogger() if request.path == “/”: response = make_response(jsonify({ ‘status’: ‘success’, ‘message’: ‘Hello from {{MAIN}}’ }), 200) return response elif request.path == “/cache”: default_segment = app.cache().segment()

    insert_resp = default_segment.put('Name', 'DefaultName')
    logger.info('Inserted cache : ' + str(insert_resp))
    get_resp = default_segment.get('Name')

    return jsonify(get_resp), 200
else:
    response = make_response('Unknown path')
    response.status_code = 400
    return response

Function URL

前述のとおり、Advanced I/O Functionのエンドポイントは、一意の呼び出しURLを通じて直接アクセスできます。URLを通じて手動で呼び出し、レスポンスを取得できます。このURLをアプリケーションのコードに実装するか、必要に応じて使用できます。このFunction URLはFunctionの作成時に自動的に生成されます。

Advanced I/O Functionの本番URLは、次の形式です:https://project_domain_name.catalystserverless.com/server/function_name/

開発環境では、URLにdevelopmentキーが含まれます:https://project_domain_name.development.catalystserverless.com/server/function_name/

  • https://project_domain_name.catalystserverless.com は、Catalystアプリケーションのアプリドメインです。
  • /server はFunctionであることを示します。
  • URLはFunction名で識別されます。
  • /execute キーワードがないことは、Advanced I/O Functionであることを示します。

FunctionのURLはコンソールから、またはCatalyst CLIからFunctionをデプロイした後にターミナルで取得できます。

このベースURLの後に、Advanced I/O Functionのコードで定義したルートを追加して、定義した動作を実行できます。

例えば、以下のルート定義は、GETメソッドでルート/item/allにアクセスしたときにData Storeからすべてのデータを取得します:

Functions- Advanced I/O Function URL

ベースURLにルートを追加して:https://catly-687259092.development.catalystserverless.com/server/catly/item/all と呼び出すと、Advanced I/O FunctionがData Storeからすべてのアイテムを取得します。

Functions- Advanced I/O Function URL

ログへのプッシュ

Catalyst Logsは、すべてのFunction実行のログを必要な詳細とともに表示します。Function実行はログに自動的に記録されます。ただし、Advanced I/O Functionの実行レスポンスデータを手動でログにプッシュすることもできます。

Catalystでは、最大1500文字をログに書き込むことができます。_Info_や_Warning_など、異なるログレベルにレスポンスを個別にプッシュすることもできます。

Advanced I/O Functionのレスポンスデータは、次のメソッドを使用してログにプッシュできます:console.log()

このステートメントは、Advanced I/O Functionが初期化されるデフォルトコードで確認でき、データがログにプッシュされ、ロガーレベルも手動で設定されます。

最終更新日 2026-03-30 13:40:30 +0530 IST