Function Compute

プロダクト紹介

Function Computeとは

Alibaba Cloud Function Compute は、イベント駆動型のフルマネージドコンピューティングサービスです。Function Compute を使用すると、管理や O&M を考慮することなく、あらゆる種類のアプリケーションやサービスをすばやく構築できます。マルチメディアデータを処理する一連のバックエンドサービスを数日で完了できます。

機能

Function Compute を使用することで、インフラストラクチャリソースの調達と管理を気にすることなくコードを作成し、アップロードできます。Function Compute は、コンピューティングリソースを準備し、コードを柔軟かつ確実に実行します。

さらに、ログ照会、パフォーマンスモニタリング、アラーム、およびその他の機能を備えています。

コードを実行する際は、実際に消費されたリソースを支払うだけです。実行されていないコードについては、料金は発生しません。

連携

Function Compute は、イベント駆動型モデルで、さまざまなサービスを連携します。イベントソースサービスがイベントをトリガーすると、関連する関数が自動的に呼び出されイベントを処理します。

OSS、Log Service、 API Gateway、Table Store、Function Compute SDK と API を使用して、関数の呼び出しをトリガーできます。これらのサービスと機能により、柔軟性、信頼性、安全性の高いアプリケーションやサービスを簡単に構築できます。Function Compute でサポートしているイベントソースの種類については、「トリガーリスト」をご参照ください。

たとえば、新しいデータが Alibaba Cloud OSS にアップロードされた場合、このイベントを処理する関数が自動的に呼び出されます。また、 API Gateway は、HTTP リクエストに応答する関数をトリガーするために使用されます。Function Compute SDK および API を使用してコードを呼び出すこともできます。

ワークフロー

次に Function Compute の処理手順を説明します。

ワークフロー
  1. 開発者は、特定のプログラミング言語で、アプリケーションとサービスをコーディングします。Function Compute でサポートしている開発言語については、「開発言語」をご参照ください。
  2. 開発者は、アプリケーションを Function Compute にアップロードします。アップロード方法は Function Compute コンソール、Function Compute API と SDK、またはコマンドラインツール fcli が含まれます。
  3. トリガーによって関数が呼び出されます。トリガーのタイプには、OSS トリガー、 API Gateway、 Log Service、 Table Store、および Function Compute API/SDK が含まれます。
  4. ユーザーのリクエスト数に応じて、Function Compute を自動的かつシームレスにスケールし、リクエストピーク時のパフォーマンスを保証します。
  5. 関数の呼び出しの実行時間に基づき課金を表示します。課金の測定の単位は 100 ミリ秒です。詳細については、「課金方法」をご参照ください。

サーバーレスアーキテクチャ

短いビデオクリップを共有するアプリケーションを開発する場合、次のような観点について考慮してください。

  • 柔軟で安定したビデオ処理バックエンドサービスを構築、運用、および維持する方法
  • 購入するサーバーの数
  • アプリケーションのサーバーの仕様について
  • ネットワークとオペレーティングシステムの設定方法
  • 環境のデプロイ方法
  • ロードバランスを維持する方法
  • 動的なスケーリング方法
  • 設定のアップグレード方法
  • サーバーのダウンタイムを管理する方法
  • ユーザーリクエストのピークを管理する方法
  • システムアラームの管理方法
    ……

クラウド内のコンピューティングリソースを効率的に使用でき、短時間で適切な仕様のサーバーを用意できます。

しかし、現在のほとんどのクラウドコンピューティングでは、サーバーやその他のインフラストラクチャが必要です。これらのリソースの管理と活用は困難でコストもかかります。Alibaba Cloud の Function Compute は、計算コストを削減し、効率を向上させるように設計されています。このコンピューティングサービスを使用することで、インフラストラクチャのかわりに、アプリケーションを管理でき、アプリケーションを設計するためのサーバーレスモデルが提供されます。

Function Compute では、基盤となるインフラストラクチャを管理する必要はありません。Function Compute にコードをデプロイするだけで、関数をトリガーするイベントを使用して、サービスをスムーズに実行できます。デプロイメント環境、サーバーのスケールアップやダウンタイム、またはその他の問題を気にする必要はありません。Function Compute は、柔軟なスケールアップと従量課金に対応しています。さらに、ログ照会、パフォーマンスモニタリング、およびアラーム機能をサポートしているため、問題の迅速な検出とトラブルシューティングに役立ちます。

利点

Function Compute には次のような利点があります。

  • サーバーやその他のインフラストラクチャを購入し管理する必要がないため、運用コストが削減されます。
  • 全体のアプリケーションまたはアプリケーションを実行するためのインフラストラクチャを気にせずに、当面の問題に必要なコードをすぐに作成できます。サポートしている開発言語を使用して、独自のアプリケーションコードを設計、最適化、テスト、レビュー、アップロードできます。
  • Function Compute サービスは、イベントを使用してアプリケーションをトリガーし、ユーザーのリクエストに応答します。迅速にアプリケーションを構築するため、Alibaba Cloud Object Storage OSS、API Gateway、Log Service、Table Store、およびその他のサービスへのシームレスな連携を提供しています。たとえば、Function Compute では、OSS を使用して写真やビデオのストレージの問題を解決できます。新しいデータが OSS に書き込まれると、Function Compute は関数を自動的にトリガーして新しいデータを処理します。
  • 迅速なトラブルシューティングのために、ログ照会、パフォーマンスモニタリング、およびアラーム機能を提供しています。
  • ピーク時に対処するため、ミリ秒単位の柔軟なスケーリングを提供しています。
  • 従量課金をサポートし、100 ミリ秒の単位で課金します。コードが実行されている時間だけ支払いが発生します。Function Compute は、トラフィックの変動が多い利用イメージに適しています。詳細については、「課金方法」をご参照ください。

制限事項

サービスリソースの制限

制限 デフォルト値
1 つのサービスで作成できる関数の最大数 50
1 つの関数で作成できるトリガーの最大数 10

関数実行時の環境制限

リソース デフォルト値
一時ディスクスペース (“/tmp” のスペース) 512 MB
ファイル記述子の数 1024
プロセス数とスレッド数 (合計) 1024
リクエストごとの最大実行時間 600s
同期関数呼び出しのリクエストペイロードサイズ 6 MB
同期関数呼び出しのレスポンスボディ 6 MB
非同期関数呼び出しのリクエストペイロードサイズ 128 KB
コードパッケージサイズ (圧縮された .zip または .jar ファイル) 50 MB
非圧縮コードサイズ 500 MB

各リージョンのアカウントごとのリソース制限

リソース デフォルト値
同時に実行できる関数の数 100
アップロード可能なパッケージの合計サイズ 100 GB

FAQ

パフォーマンス

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

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

ログ記録とモニタリング

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

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

関数の呼び出しが成功したのに、呼び出し回数などのメトリックがクラウドのモニタリングコンソールに表示されないのはなぜですか。

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

リソースアクセス

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

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

関数コンテキストパラメーターから取得したアクセスキー ID/秘密鍵 ID を使用したときに、 “AccessKeyID が存在しません” というエラーが表示されるのはなぜですか。

関数コンテキストパラメーターは、Access Key ID、Access Key Secret、security tokenの 3 つで構成され、Alibaba Cloud リソースにアクセスするための一時的な認証情報を提供します。“security token” も指定されていることを確認してください。Python で OSS にアクセスするには、次のコードをご覧ください。

  1. import json
  2. import oss2
  3. def my_handler(event, context):
  4. evt = json.loads(event)
  5. creds = context.credentials
  6. # Do not forget to fill out "security_token"!
  7. auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
  8. bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
  9. bucket.put_object(evt['objectName'], evt['message'])
  10. return 'success'