Function Compute

インフラストラクチャの管理が不要でコードの作成に集中できる、完全にホストされたサーバーレスな実行環境

無料で始める ドキュメント

概要

Alibaba Cloud Function Compute は、包括的なモニタリングおよびログ記録でコードを実行するためのセキュアな環境を提供する、イベント駆動型コンピューティングサービスです。インフラストラクチャ管理、ロードバランシング、モニタリング、ログ記録、およびスケーリングの問題を Function Compute に簡単に割り当てて、デプロイを加速しつつ主要なタスクの処理に集中できます。


利点

信頼性

  • 自動的な複数レベルの冗長バックアップで、コードと設定を OSS に保存

拡張性

  • リアルタイムのオートスケーリングと動的ロードバランシングを数ミリ秒で実行

セキュリティ

  • エンタープライズクラスのセキュアなサンドボックスを提供

  • ビルトインテナント分離

  • さまざまなサービス権限付与とメイン/サブアカウントの提供により、アクセスセキュリティを確保

優れたコスト効率

  • 使用量に基づく課金

  • メンテナンスコストとホスティング費用が不要

  • 同じリージョン内の他の Alibaba Cloud サービスを使用してデータにアクセスする際にネットワーク料金が不要

使いやすさ

  • さまざまな Alibaba Cloud サービスとの連携ができ、コンソール内でのすばやく簡単な設定が可能

  • オートスケーリングとロードバランシング

  • 設定することなくコードを実行できるサンドボックス

  • 簡単なトリガー設定


プロダクトの詳細

Function Compute は、CPU、メモリ、ネットワーク帯域幅などのリソースを自動的に割り当ててスケーリングし、トラフィックのワークロードに基づいて関数を実行します。Function Compute の機能の詳細 (コード管理、サポートされる実行環境、オートスケーリング、モニタリング、関数テンプレートなど) については以下をご覧ください。


特徴

コード管理

Function Compute には、関数コードを管理しコードを安全に保存するための方法がいくつか用意されています。関数が呼び出されると、コードが自動的にダウンロードされ、実行されます。Get Function Code API を用いて最新のコードをダウンロードできます。

  • コンソールでコードを編集する。この方法は、NodeJS や Python などの、外部依存関係を持たずコンパイルを必要としないコードの編集に適しています。
  • すべてのコードと依存関係を zip または jar パッケージに圧縮し、Function Compute に直接アップロードする。
  • すべてのコードと依存関係を zip または jar パッケージに圧縮して OSS にアップロードした後、バケットとオブジェクトキーを指定して関数を作成する。これは、大規模なパッケージの場合に推奨される方法です。
  • さまざまな実行環境のサポート

    Function Compute は、さまざまな実行環境をサポートしています。現在サポートされている言語は Python 2.7 および 3.6、Node.js 6 および 8、Java 8 です。今後、さらに多くの実行環境が利用可能になる予定です。

    オートスケーリング

    Function Compute は、必要に応じてリアルタイムのオートスケーリングを数ミリ秒で実行します。動的ロードバランシングは、手動での設定や操作を必要とせず、ほぼ無限のコンピューティングリソースにリクエストを分散することで、数百万件もの同時リクエストに対応できます。

    イベント駆動型

    複数のイベントソースがサポートされ、 トリガーによって、関数とイベントソースを接続します。トリガー条件が満たされると、イベントソースが Function Compute に通知します。Function Compute は対応する関数コードを実行し、基盤となるリソースを自動的にスケールイン/アウトします。これにより、コンピューティングの効率性が向上します。また、関数を直接呼び出すこともできます。

    モニタリングとログ

    Function Compute では詳細なログが提供されるため、各関数の実行状況の確認やコードのデバッグとテストを簡単に行うことができます。さらに、関連するモニタリングメトリックもレポートされるため、各関数の実行状況の全体像をすぐに把握できます。また、関数の実行に関するモニタリングメトリックをカスタマイズして、より詳細な関数モニタリングを行うこともできます。

    関数テンプレート

    Function Compute には多数の関数テンプレートとサンプルコードが用意されています。これらのテンプレートを用いて、API Gateway、Web クローラ、自動画像分類などの関数をすばやく作成したり、OSS、Table Store、Log Service などの Alibaba Cloud プロダクトと連携できます。

    従量課金

    Function Compute を使用すると、数千件のリクエストから数百万件のリクエストまで、使用量を簡単かつコスト効率よくスケーリングできます。

    課金は 100 ミリ秒単位で計測されます。リクエストの数、コードの実行時間と実際に消費されたリソース、およびインターネットへのデータ転送に対して料金が発生します。

    リソースのカスタマイズ

    Function Compute には、メモリサイズに基づいてリソースを割り当てる簡単な方法が用意されています。関数実行のためのメモリサイズを選択すると、それに応じて他のリソース (CPU、ネットワーク帯域幅、ディスク I/O など) が Function Compute によって割り当てられます。

    料金

    課金項目

    Alibaba Cloud Function Compute は従量課金制です。料金は 3 つの部分で構成され、インターネットトラフィック料金はオプションです。インターネットを使用して関数データを転送した場合にのみ、インターネットトラフィック料金が課金されます。

    料金の合計 = リクエスト料金 + 時間料金 + パブリックネットワークトラフィック料金 (オプション)

    無料利用枠

    リクエスト: 毎月、最初の 100 万回の呼び出しは無料です。

    コンピューティング時間: 毎月、最初の 400 GB 秒は無料です。

    注意: 無料の呼び出し回数と実行時間は月初に自動的にクリアされ、翌月に繰り越されることはありません。

    リクエスト料金

    呼び出し回数は、関数呼び出しの合計回数を示します。

    料金: 100 万回の呼び出しにつき JPY¥ 23

    コンピューティング時間料金

    実行時間はコードの実行が開始されたときに始まり、結果が返されるか実行が完了したときに終わります。測定の単位は 100 ミリ秒です。時間料金は関数に割り当てられたメモリサイズによって異なります。

    料金: JPY¥ 0.0019173/GB-秒 (JPY¥ 0.00019173/GB-100 ミリ秒)

    注意:

    時間料金の単位は GB-秒です。これは、メモリサイズが 1 GB のときに時間料金が秒単位で課金されることを意味します。関数のメモリサイズが 512 MB の場合、時間料金は次のように計算されます。¥ 0.001668/2 = ¥ 0.000834/GB-秒

    時間の測定単位は 100 ミリ秒であるため、実行時間は 100 ミリ秒ごとに切り上げられます。たとえば、関数の実行時間が 1,010 ミリ秒の場合、時間は 1,100 ミリ秒として計算されます。

    したがって、メモリが 512 MB である関数の実行時間が 1,010 ミリ秒の場合、実行時間料金は次のように計算されます。(0.5 × 1.1) GB-秒 × ¥ 0.001668/GB-秒 = ¥ 0.0009174

    パブリックネットワークトラフィック料金

    リージョン料金 (JPY/GB/時間)
    中国本土0.125
    シンガポール0.117
    シドニー (オーストラリア)0.130
    バージニア (米国東部 1)0.078
    シリコンバレー (米国西部 1)0.078

    毎月の無料利用枠の早見表

    以下の表に、さまざまなメモリサイズに対する無料利用枠の秒数を示しています。

    メモリ (MB)毎月の無料利用枠の秒数
    1283200000
    1922133333
    2561600000
    3201280000
    3841066667
    448914286
    512800000
    576711111
    640640000
    704581818
    768533333
    832492308
    896457143
    960426667
    1024400000
    1088376471
    1152355556
    1216336842
    1280320000
    1344304762
    1408290909
    1472278261
    1536266667

    利用イメージ

    メディアコンテンツの分析処理

    Function Compute は、完全なデータ処理パイプラインを簡単に構築できるイベントトリガーメカニズムを備えています。OSS のアップロードアクションは、データのトランスコーディングと抽出用の OSS オブジェクトを処理する複数の関数をトリガーにできます。OSS イベントトリガーにより、さまざまなサービスを OSS にすばやく連携させ、有用性の高い柔軟なビデオ処理バックエンドシステムを構築できます。

    特徴

  • 低コスト
  • リソース使用量に対してのみ課金される、有用性の高い柔軟なビデオバックエンドシステム

  • FaaS アーキテクチャ
  • 高可用性と高パフォーマンスを実現する FaaS アーキテクチャへの適応

    サーバーレスのバックエンドサービス

    Function-as-a-Service (FaaS) は柔軟性と拡張性に優れています。Function Compute を API Gateway と組み合わせて、API リクエストを処理するための柔軟性と拡張性に優れたバックエンドサービスを構築でき、カスタマイズされたアプリケーションを強化できます。

    特徴

  • オートスケーリング
  • リアルタイムのオートスケーリングと動的ロードバランシングを数ミリ秒で実行します。これによってピークロードをずらし、トラフィックの急増に容易に対処できます。

  • 柔軟なトリガー
  • 他の Alibaba Cloud プロダクトとの連携により、多様なニーズに対応します。

    リアルタイムの IoT メッセージ処理

    リアルタイムのストリーミングデータは Function Compute によって効率的に分類および処理され、バックエンドストレージに格納されます。たとえば、IoT デバイスによって生成されたデータのフィルタリング、集計、変換、分析をリアルタイムで実行し、出力をデータベースにエクスポートできます。

    特徴

  • オートスケーリング
  • リアルタイムのオートスケーリングと動的ロードバランシングを数ミリ秒で実行します。これによってピークロードをずらし、トラフィックの急増に容易に対処できます。

  • 柔軟なトリガー
  • 他の Alibaba Cloud プロダクトとの連携により、多様なニーズに対応します。


    はじめに

    Function Compute は、完全にホストされたイベント駆動型コンピューティングサービスです。開発者は、Function Compute でサポートされる言語でコードを記述するだけです。SDK および RESTful API を使用してコードを呼び出し、イベント (たとえば OSS の ObjectCreated イベントと ObjectRemoved イベント) に応答してコードを実行する OSS、Log Service、API Gateway、Table Store などの Alibaba Cloud プロダクト用のデータ処理トリガーを簡単に構築できます。

    手順

    1) 開発者は、サポートされる言語 (Java、Node.js、python など) でコードを記述します。

    2. 2) API または SDK を使用して Function Compute にコードをアップロードするか、コンソールページでアップロードします。またはコマンドラインツール Fcli を使用してアップロードします。

    3) API および SDK を使用するか、クラウドプロダクトのイベントソースを使用して、コードの実行をトリガーします。

    4) 実行中、Function Compute はユーザーリクエストの量に応じて動的なスケーリングを行い、ピーク時に入ってくるリクエストを処理します。

    5) 関数の実行後は、課金セクションで実行料金を確認できます。料金は、実際の関数実行時間に基づいて計算されます。詳細については、課金項目の説明をご参照ください。

    Alibaba Cloud Function SDK および API リファレンス

    Web ベースの Alibaba Cloud Function SDK および API にアクセスし、プログラムでプロダクトリソースを管理し、さらに高度な方法で制御できます。

    リソース

    以下のリソースで Alibaba Cloud Function Compute に関する詳細情報を確認できます。

    開発者向けリソース

    以下のリンクから、高度な機能、ドキュメントにアクセスできます。これらのリソースは、開発者が Alibaba Cloud Function Compute と既存のアプリケーションを連携したり、設定を改善する際に有用です。

    API

    関連サービス

    よくある質問

    1. Function Compute では Node.js、Python、Java のみがサポートされていますが、C++ プログラムを実行するにはどのようにすればよいですか。

    今後、お客様からの機能のリクエストに基づいてサポート対象言語を増やしていく予定です。プログラムが現在サポートされていない言語で作成されている場合は、以下の方法をお試しください。

    Function Compute でサポートしている言語でプログラムを書き換える。Node.js と Python には幅広いライブラリが用意されており、開発の点では効率性に優れています。

    • C/C++ プログラムを実行ファイルにコンパイルし、システムコールによってファイルを実行する。

    • C/C++ モジュールを共有ライブラリとしてコンパイルし、Python でバインドしてライブラリを使用する。

    2. Function Compute でカスタム Docker イメージがサポートされていないのはなぜですか。

    カスタム Docker イメージをサポートすることは難しくありませんが、それによってサイズの大きいカスタムイメージのサポートが困難になる可能性があります。リアルタイムのスケーラビリティを保証するには、システムが短時間でコンテナーを起動する必要があります。サイズの大きいイメージのダウンロードには数秒かかる場合があり、パフォーマンスが許容範囲を超えることになります。そのため、カスタム Docker イメージのサポートには対応していません。

    3. 依存関係を自動的にインストールするにはどうすればよいですか。

    Function Compute では、すべての依存関係を含む zip ファイルとしてアップロードする必要があります。依存関係の管理方法は、言語によって異なります。たとえば、Node.js では、依存関係のあるパッケージを npm を使用してコードディレクトリにインストールし、zip に圧縮した後、その zip ファイルを使用して関数を作成または更新します。CLI ツール fcli を利用して、依存関係のインストールと zip 圧縮を行うこともできます。詳細については、こちらをご参照ください。

    4. アプリケーションで大きなファイルが生成されて、大容量が必要になりました。どこに問い合わせればよいですか。

    512 MB の一時ストレージ容量を関数実行に使用できます。この容量で不足する場合は、ストリーミングパターンを使用してデータを処理することを検討してください。たとえば、ストリーミングの使用により、関数のメモリ消費量を 1 GB から 256 MB に、所要時間を数分から 10 秒程度に削減することが可能です。この方法でビジネス要件を満たせない場合は、弊社までお問い合わせください

    5. 関数実行のために消費されるメモリに関する情報はどこで取得できますか。

    最大メモリ消費量などの情報は、関数のレスポンスの中に含まれています。または、CloudMonitor で確認することもできます。

    6. 1 つの関数が別の関数を呼び出すことはできますか。

    関数が別の関数を呼び出すことは可能です。関数は別々のサーバーで実行できるため、RPC で呼び出されます。FC Invoke Function API を使用して、指定した関数を呼び出すことができます。

    7. 無限ループを発生させる関数の実行を強制終了するにはどうすればよいですか。

    無限ループには次の 2 種類があります。1) 1 つの関数のロジックによって発生する無限ループ。2) 複数の関数の循環参照によって発生する無限ループ たとえば、関数 A が関数 B を呼び出し、関数 B が関数 A を呼び出すという場合です。1 番目のケースの方が対処は簡単です。関数がタイムアウトすると、自動的に終了してタイムアウトエラーメッセージが返され、それ以上の課金が発生することはありません。2 番目のケースは問題となる可能性があります。このような種類の呼び出しはサービスで許可されているからです。この場合、関数レベルのメトリックに基づくモニタリングアラームを設定する必要があります。また、必要以上の課金が発生しないように、あらかじめ関数の最大同時実行数が設定されています。

    8. ユーザーあたりの既定の最大同時実行数は 100 です。これは、構築するサービスが 1 秒あたり 100 件のリクエストしか処理できないという意味でしょうか。それでは足りない気がします。

    QPS は、最大実行数と関連していますが、別の概念です。QPS は次の式で見積もることができます。QPS * 関数の所要時間 = 同時実行数 たとえば、1 秒あたり 10,000 件のリクエストを予定しており、リクエストの平均処理時間が 1 秒の場合、最大同時実行数は 10,000 よりも大きい必要があります。リクエストの平均処理時間が 10 ミリ秒の場合は、最大同時実行数は 10,000 * 0.01 (秒) = 100 よりも大きい必要があります。詳細については、関連ドキュメントを参照してください。また同時実行数は、前の例に示した複数の関数の循環参照によって発生する無限ループなどによって、多額の料金が発生するのを防ぐために設定されます。デフォルトで足りない場合は、最大値を調整できますのでお問い合わせください

    9. 実行環境は分離されていて安全ですか。そのことはどのように保証されますか。

    Function Compute は、セキュリティを、プロダクトおよびシステム設計のあらゆる局面で最優先課題と捉えています。関数の実行環境は、Alibaba Cloud ECS インスタンスと同じレベル、つまりコンテナーレベルではなく仮想マシンレベルで分離されます。さらに、関数のセキュリティを保証するために、ネットワーク、ストレージ、コード、および anti-DDoS 攻撃について完全な保護を提供します。

    10. 実行環境は関数が返された後にリリースされますか。最後の呼び出しでバッファリングされたリソースやステータスを再利用することはできますか。

    関数はコンテナーの内部で実行され、コンテナーは関数が返された後すぐにはリリースされません。コンテナーは、一定期間 (システムのスケジューリングアルゴリズムによって、数分から数十分まで異なります) リクエストが受信されなかったときにリリースされます。リクエストが連続的に受信されている場合、関数は永続的と見なされます。したがって、パフォーマンスを最適化するためにグローバル変数などのリソースをバッファリングできます。ただし、プログラムの正当性について、バッファリングが常に使用可能であるということを前提にしないでください。たとえば、コンテナーやサーバーがダウンすると、バッファリングされたデータを使用できなくなる可能性があります。

    11. 関数の実行によって生成されたログを一括ダウンロードするにはどうすればよいですか。

    ログが Log Store (Alibaba Cloud Log Service) に保存されている場合は、Log Service API を使用して関連するコンテンツを表示およびダウンロードできます。

    12. 関数の呼び出しが成功したのに、呼び出し回数などのメトリックが CloudMonitor コンソールに表示されないのはなぜですか。

    ご使用のアカウントがサブアカウントか、またそのアカウントに少なくとも CloudMonitor の読み取り専用アクセス許可があるかを確認してください。

    13. Function Compute は RDS データベースにどのようにアクセスしますか。

    Function Compute コンテナーは特定の IP では実行されないため、すべての IP からのアクセスを許可することが必要になります。しかし、これはセキュリティリスクとなる可能性がありお勧めできません。Function Compute は、ユーザーの VPC 内のリソースへのアクセスがサポートされています。機能が使用可能になると、Function Compute へのアクセス権を付与した後で、VPC 内のリソースに安全にアクセスできます。

    14. 関数コンテキストパラメーターから取得したアクセス/シークレットキー ID を使用したときに、AccessKeyID が存在しないというエラーが表示されるのはなぜですか。

    関数コンテキストパラメーターは、アクセスキー ID、アクセスキーシークレット、セキュリティートークンの 3 つの要素で構成され、Alibaba Cloud リソースにアクセスするための一時的な認証情報を提供します。セキュリティトークンも指定されていることを確認してください。