Function Computeでは、サーバーなどのインフラストラクチャを購入および管理する必要はありません。 柔軟で信頼性の高いアプリケーションを構築するには、コードと画像を作成してアップロードするだけです。 このトピックでは、function Computeコンソールで関数をすばやく作成する方法について説明します。 このトピックでは、単純なサーバーレスHello World関数を例として使用します。
背景
関数を作成する前に、Function Computeを有効化し、Function Computeでサービスを作成する必要があります。 関数を作成したら、その関数を実行できます。
サービスは、Function Computeでリソースを管理するのに役立つ基本単位です。 サービスに関数を作成し、サービスの設定を行うことができます。 たとえば、サービスのログ機能に権限を付与し、設定することができます。 関数は、function Computeでのリソーススケジューリングと実行の基本単位です。 関数は、コードのロジックを指定します。 function Computeが提供する関数インターフェイスに基づいてコードを記述し、そのコードを関数としてFunction Computeにデプロイする必要があります。 Function Computeのサービスは、ソフトウェアアプリケーションアーキテクチャのマイクロサービスに似ています。 Function Computeプラットフォームでアプリケーションを構築する場合、ビジネス要件に基づいてビジネスロジックをマイクロサービスに抽象化します。 その後、マイクロサービスはFunction Computeのサービスとして実装されます。
前提条件
Alibaba Cloudアカウントを登録し、実名検証を完了していること。
手順
このトピックでは、Function Computeコンソールで関数を作成する方法について説明します。 このトピックでは、組み込みランタイムの使用とカスタムランタイムの使用を例として使用します。
ステップ1: Function Computeの有効化
Function Computeホームページ にアクセスします。
コンソールをクリックします。 Function Computeの新規ユーザー向けトライアルプランのページが表示されます。 次に、[今すぐ購入] をクリックしてFunction Computeを有効化し、Function Computeコンソールに移動します。
説明Alibaba Cloudアカウントを使用してFunction Computeを有効化し、サービスをRAMユーザーとして使用することを推奨します。
Function Computeを有効にした場合、Function Computeコンソールに移動します。
(オプション) Function Computeコンソールに初めてログインする場合。 [AliyunFcDefaultRoleロールの作成] メッセージが表示されます。 [作成] をクリックして [ロールの作成] ページに移動し、AliyunFCDefaultRoleロールを作成します。
承認が成功
権限付与が成功した場合、Function Computeは指定されたAlibaba Cloudリソースにアクセスする権限を持ちます。
権限付与の失敗
承認に失敗した場合は、承認を実行する権限があるかどうかを確認します。
RAMユーザーを使用していて、Function Computeのデフォルトロールを作成する権限がない場合は、Alibaba Cloudアカウントでログインし、[ロールの作成] ページに移動して権限を付与する必要があります。 権限付与後、次回RAMユーザーを使用してFunction Computeコンソールにログインすると、[AliyunFcDefaultRoleロールの作成] メッセージは表示されません。
Function Computeのデフォルトロールを作成する権限を持つAlibaba CloudアカウントまたはRAMユーザーを使用している場合、一部の機能は承認できないため、承認が失敗する可能性があります。 この場合、Function Computeは引き続き期待どおりに使用できます。 それでもデフォルトのロールを付与する必要がある場合は、DingTalkグループ11721331に参加してテクニカルサポートを行います。
権限管理の詳細については、「他のAlibaba Cloudサービスへのアクセス権限の付与」をご参照ください。
手順 1: サービスを作成する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、[サービスの作成] をクリックします。
サービスの作成パネルで、サービス名と説明を入力し、他のパラメータを設定し、OK をクリックします。下表に、各パラメーターを説明します。
パラメーター
説明
例
ロギング
ロギング機能を有効にするかどうかを指定します。 有効な値:
有効化: Function Computeは、永続的なストレージのために関数実行ログをSimple Log Serviceに送信します。 ログに基づいて、コードのデバッグ、問題のトラブルシューティング、データの分析を行うことができます。
無効化: Simple Log Serviceを使用して機能実行ログを保存またはクエリすることはできません。
有効にする
高度なオプション
OpenTelemetry向けマネージドサービス
OpenTelemetryのマネージドサービスを有効にするかどうかを指定します。 有効な値:
有効化: OpenTelemetryのマネージドサービスを有効にします。 Jaegerを使用してトレース情報をアップロードできます。 これにより、関数のトレースを表示できます。 サーバーレスアーキテクチャのパフォーマンスのボトルネックを分析および診断することもできます。 詳細については、「OpenTelemetryのマネージドサービスの概要」をご参照ください。
無効化: OpenTelemetryのマネージドサービスを無効にします。
有効にする
サーバーの役割
サービスの関数のロールを設定します。 これにより、関数はロールの権限を取得できます。 詳細については、「他のAlibaba Cloudサービスへのアクセス権限付与」をご参照ください。
AliyunFCDefaultRole
VPCへのアクセス
関数が仮想プライベートクラウド (VPC) リソースにアクセスできるようにするかどうかを指定します。 詳細については、「ネットワークの設定」をご参照ください。
必須
[VPC]
このパラメーターは、[VPCへのアクセス] パラメーターを [はい] に設定した場合に必要です。 VPCを作成するか、ドロップダウンリストからアクセスする既存のVPCのIDを選択します。
fc.auto.create.vpc.1632317 ****
vSwitch
このパラメーターは、[VPCへのアクセス] パラメーターを [はい] に設定した場合に必要です。 vSwitchを作成するか、ドロップダウンリストから既存のvSwitchのIDを選択します。
fc.auto.create.vswitch.vpc-bp1p8248 ****
[セキュリティグループ]
このパラメーターは、[VPCへのアクセス] パラメーターを [はい] に設定した場合に必要です。 セキュリティグループを作成するか、ドロップダウンリストから既存のセキュリティグループを選択します。
fc.auto.create.SecurityGroup.vsw-bp15ftbbbbd ****
インターネットへのアクセス
サービス内の関数がインターネットにアクセスできるようにするかどうかを指定します。 このパラメーターを [いいえ] に設定した場合、サービスの関数は、Function Computeのデフォルトのネットワークインターフェイスコントローラー (NIC) を介してインターネットにアクセスできません。
重要静的パブリックIPアドレスを使用してインターネットにアクセスする場合は、[インターネットへのアクセス] パラメーターを [いいえ] に設定する必要があります。 それ以外の場合、設定された静的パブリックIPアドレスは有効になりません。 詳細については、「静的パブリックIPアドレスの割り当て」をご参照ください。
必須
サービスの作成後、[サービスと機能] をクリックして、[サービス] ページで作成したサービスを表示できます。
ステップ3: 関数を作成する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
関数ページで、関数の作成 をクリックします。
関数の作成ページで、関数を作成する方法を選択し、次のパラメーターを設定し、作成 をクリックします。
説明この例では、組み込みランタイムの使用 および カスタムランタイムの使用 を使用します。 Function Computeが提供するランタイムがビジネス要件を満たさない場合は、コンテナーイメージの使用 を選択して関数を作成します。 詳細については、「カスタムコンテナ関数の作成」をご参照ください。
基本設定: [関数名] や [ハンドラータイプ] など、関数の基本情報を設定します。 Handler Typeは、次のいずれかの値に設定できます。
イベントハンドラー: タイマー、API操作の呼び出し、SDKの使用、または他のAlibaba Cloudサービスと統合されたトリガーを使用して、関数をトリガーします。
HTTPハンドラー: HTTPリクエストまたはWebSocketリクエストによる関数の実行をトリガーします。 webシナリオでは、カスタムランタイムの使用 を選択することを推奨します。
[コード] セクションで、関数のランタイムとコード関連の情報を設定します。
パラメーター
説明
例
ランタイム
Python、Java、PHP、Node.jsなどのプログラミング言語を選択します。 Function Computeでサポートされているランタイムの詳細については、「Function Computeでサポートされているランタイム」をご参照ください。
Node.js14
コードのアップロード方法
関数コードをfunction Computeにアップロードする方法を選択します。
サンプルコードの使用: Function Computeが提供するサンプルコードを選択して、ビジネス要件に基づいて関数を作成します。 これはデフォルトの方法です。
ZIPのアップロード: コードを含むZIPパッケージを選択してアップロードします。
Upload JAR: 関数コードを含むJARファイルを選択してアップロードします。
フォルダのアップロード: 関数コードを含むフォルダを選択してアップロードします。
OSS: 関数コードのバケット名とオブジェクト名パラメーターを指定します。
説明コードのアップロード方法をサンプルコードの使用に設定した場合、ハンドラーを変更する必要はありません。 別のコードアップロード方法を選択した場合は、ビジネス要件に基づいてHandlerを変更する必要があります。 それ以外の場合、関数を実行するとエラーが報告されます。
ランタイムをJava 8またはJava 11に設定した場合、関数コードをアップロードするには、サンプルコードの使用、JARのアップロード、またはOSSのみを選択します。 他のランタイムでは、サンプルコードの使用、ZIPのアップロード、フォルダのアップロード、またはOSSを選択できます。
サンプルコードの使用
Startupコマンド
説明カスタムランタイムの使用 を選択して関数を作成する場合にのみ、このパラメーターを設定する必要があります。
プログラムの起動コマンドを設定します。 スタートアップコマンドを設定しない場合は、コードのルートディレクトリにbootstrapという名前のスタートアップスクリプトを手動で作成する必要があります。 ブートストラップスクリプトは、プログラムを起動するために使用されます。
npm実行開始
リスニングポート
説明カスタムランタイムの使用 を選択して関数を作成する場合にのみ、このパラメーターを設定する必要があります。
コード内のHTTPサーバーがリッスンするポートを指定します。
9000
詳細設定: インスタンス情報と関数実行タイムアウト期間を設定します。
パラメーター
説明
例
仕様
ビジネス要件に基づいて、vCPU容量とメモリ容量を設定します。 リソースの課金の詳細については、「課金の概要」をご参照ください。
説明vCPU容量とメモリ容量 (GB) の比率は、1:1から1:4に設定する必要があります。
0.35 vCPU、512 MB
一時ディスクのサイズ
業務要件に基づいて、ファイルを一時的に格納するために使用するハードディスクのサイズを指定します。
有効な値:
512 MB (デフォルト): このサイズの一時ディスクの使用には課金されません。 Function Computeは、512 MBの空きディスク容量を提供します。
10 GB: 9.5 GBのディスクサイズに基づいて課金されます。
説明一時ハードディスク内のすべてのディレクトリにデータを書き込むことができます。 ディレクトリは一時ハードディスクのスペースを共有します。
一時ハードディスクのライフサイクルは、基盤となるインスタンスのライフサイクルと一致しています。 インスタンスがシステムによってリサイクルされた後、ハードディスク上のデータは消去されます。 保存されたデータを保持するには、Apsara File Storage NAS (NAS) またはObject Storage Service (OSS) を使用できます。 詳細については、「NASファイルシステムの設定」および「OSSファイルシステムの設定」をご参照ください。
512 MB
インスタンスの同時実行
インスタンスの同時実行性を指定します。 詳細については、「インスタンス同時実行の設定」をご参照ください。
10
実行タイムアウト期間
関数実行のタイムアウト時間を指定します。 のデフォルト値は、実行タイムアウト期間は60秒で、最大値は86,400秒です。
60
ハンドラー
関数のハンドラーを指定します。 Function Computeランタイムは、リクエストを処理するハンドラーを読み込み、呼び出します。 カスタムランタイムの使用 または [コンテナーイメージの使用] を選択した場合、このパラメーターは不要です。
説明コードのアップロード方法をサンプルコードの使用に設定した場合、ハンドラーを変更する必要はありません。 別のコードアップロード方法を選択した場合は、ビジネス要件に基づいてHandlerを変更する必要があります。 それ以外の場合、関数を実行するとエラーが報告されます。
index.handler
タイムゾーン
関数のタイムゾーンを指定します。 関数のタイムゾーンを設定すると、環境変数TZが関数に自動的に追加されます。 値は、設定したタイムゾーンです。
UTC
環境変数: 関数のランタイムの環境変数を設定します。 詳細については、「環境変数」をご参照ください。
[トリガー設定] セクションで、ビジネス要件に基づいて関数のトリガーを設定します。 トリガーを使用して関数をトリガーできます。 詳細については、「トリガーの管理」をご参照ください。
ステップ4: 関数を実行する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
[関数] ページで、管理する関数をクリックし、[コード] タブをクリックして関数のコードを表示します。
次のコードスニペットは、[組み込みランタイムの使用] を使用して作成される関数のコードの例を示しています。
説明コードエディターでコードを編集して、セカンダリ開発を実装できます。 次に、[デプロイ] をクリックします。 コードは、コードがデプロイされた後にのみ有効になります。
'use strict'; exports.handler = (event, context, callback) => { console.log('hello world'); callback(null, 'hello world'); }
テスト機能 をクリックします。
関数の実行後、[コード] タブで結果と詳細ログを表示できます。
関連ドキュメント
Function Computeは、さまざまなサンプルコードを提供します。 関数を作成または構成するときに、ビジネス要件を満たすサンプルコードを簡単に見つけることができます。 Function Computeのサンプルコードの詳細については、「サンプルコード」をご参照ください。
関数の実行中に「モジュールのインデックスをインポートできません」エラーが発生した場合は、ハンドラーが正しく構成されているかどうか、および必要な依存関係がインストールされているかどうかを確認します。 詳細については、「関数のサードパーティ依存関係のインストール」をご参照ください。
Function Computeでは、Serverless Devsを使用してアプリケーションをビルド、デバッグ、デプロイできます。 詳細については、「Serverless Devsを使用した関数リソースの管理」をご参照ください。
Function Computeの関数は、イベントを使用して直接トリガーまたはトリガーできます。 イベントトリガー関数の詳細については、「トリガーの概要」をご参照ください。