Function Compute の組み込みランタイムがビジネス要件を満たさない場合は、カスタムイメージ関数を使用できます。 このトピックでは、Function Compute コンソールまたは Serverless Devs ツールを使用してカスタムイメージ関数を作成する方法について説明します。
使用上の注意
Function Compute でカスタムイメージ関数を作成するには、同じリージョンにあり、同じ Alibaba Cloud アカウントに属する Alibaba Cloud Container Registry (ACR) リポジトリのイメージを使用する必要があります。 Apple シリコンを搭載した Mac コンピューターなどの ARM アーキテクチャを使用するコンピューターの場合は、イメージのビルドプラットフォームを Linux/Amd64 として指定する必要があります。 たとえば、コマンド
docker build --platform linux/amd64 -t $IMAGE_NAME .を実行します。Function Compute が ACR Enterprise Edition インスタンスからイメージのドメイン名を解析する場合、イメージリポジトリインスタンス用に構成された VPC のデフォルト DNS サーバーによって解決されるか、PrivateZone によって自動的に解決されるアクセス IP アドレスを使用します。 次のシナリオが適用されます。
シナリオ 1: ACR Enterprise インスタンスの [アクセス制御] ページの [アクセス IP] リストに [デフォルト解決] 識別子が存在しない場合、リスト内のすべての IP アドレスは Cloud DNS PrivateZone によって自動的に解決されます。 この場合、任意の VPC 設定を使用できます。

シナリオ 2: ACR Enterprise インスタンスの [アクセス制御] ページの [アクセス IP] リスト内の IP アドレスに [デフォルト解決] 識別子が付いている場合、その IP アドレスは特定の仮想プライベートクラウド (VPC) のデフォルトで解決される IP アドレスです。 たとえば、次の図に示すように、最初の VPC のみを選択できます。

ACR Enterprise Edition インスタンスを使用する場合、高速化されていないイメージのみを選択できます。 関数のイメージ構成を更新するたびに、新しく選択された元のイメージに基づいて最新の高速化されたイメージが生成されます。 高速化されたイメージが既に存在する場合、それは上書きされます。 元のイメージまたは高速化されたイメージを削除しないでください。 削除すると、関数の呼び出しが失敗します。
関数に設定されたイメージが変更された場合は、速やかに関数を更新する必要があります。 そうしないと、関数の呼び出しが失敗します。
元のイメージが存在することを確認してください。 そうしないと、関数は失敗状態になり、呼び出すことができません。 Function Compute は、コールドスタートを高速化するためにキャッシュしますが、関数の呼び出しは依然として元のイメージの存在に依存します。
いずれかの関数で使用されているイメージが上書きされないようにしてください。 ダイジェストが上書きされた場合は、最新のイメージ情報を使用して関数を再デプロイする必要があります。 Function Compute は、関数の作成および更新時に選択したイメージバージョンのタグとダイジェストの両方を記録します。 イメージバージョンが他の場所で異なるダイジェストに更新されると、関数の呼び出しは失敗します。
前提条件
Container Registry
- 説明
ACR Personal Edition は個人開発者向けであり、パブリックプレビュー期間中は限定されたクォータで無料トライアルとして利用できます。 サービスレベルアグリーメント (SLA) は提供されず、使用制限が適用されます。 制限の詳細については、「Personal Edition インスタンスの作成に関する注意」をご参照ください。
Serverless Devs (Serverless Devs を使用して関数を作成する場合にのみ必要)
コンソールでの関数の作成
Function Compute コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。 [関数] ページで、[関数の作成] をクリックします。
表示されるダイアログボックスで、シナリオに基づいてプロンプトに従って [GPU 関数] タイプを選択し、[GPU 関数の作成] をクリックします。
[GPU 関数の作成] ページで、次のパラメーターを設定し、[作成] をクリックします。
[基本設定]: [関数名] を入力します。 名前は、同じアカウントおよびリージョン内で一意である必要があり、命名規則に従う必要があります。
[弾性設定]: インスタンスタイプを選択します。 弾性インスタンスとリザーブドインスタンスを同時に使用することはできません。 関数が作成された後、インスタンスタイプを切り替えることはできません。
弾性インスタンス
設定項目
説明
例
[インスタンスタイプ]
[弾性インスタンス] を選択します。 インスタンスはリクエスト量に基づいて自動的にスケーリングされ、リクエストがない場合は回収されます。 使用量に基づいて課金されます。 インスタンスを使用しない場合は課金されません。
弾性インスタンス
[GPU タイプ]
GPU タイプを選択します。 各タイプでサポートされている仕様の詳細については、「インスタンスタイプと仕様」をご参照ください。
Ada シリーズ
[仕様]
必要に応じて、関数の [GPU メモリ]、[vCPU]、[メモリ]、および [ディスク] の仕様を設定します。 仕様を設定した後、実際の関数呼び出しによって生成される各リソースの使用量は、仕様に使用期間を乗じて測定されます。 詳細については、「課金の概要」をご参照ください。
説明データはディスク上のすべてのディレクトリに書き込むことができます。 ディスク領域は共有されます。
ディスクのライフサイクルは、基盤となる関数インスタンスのライフサイクルと同じです。 インスタンスがシステムによって回収されると、ディスク上のデータも削除されます。 ファイルを永続的に保存するには、NAS ファイルシステムまたは OSS バケットをマウントできます。 詳細については、「NAS ファイルシステムの設定」および「OSS ファイルシステムの設定」をご参照ください。
GPU メモリ: 48 GB
vCPU: 8 vCPU
メモリ: 64 GB
ディスク: 512 MB (無料、Function Compute はディスク使用量に対して 512 MB の無料クォータを提供します)
[最小インスタンス数]
ビジネスがレイテンシーに敏感な場合は、[弾性インスタンス] を選択した後、[最小インスタンス数] を 1 以上に設定します。 これにより、リソースが事前にロックされ、コールドスタートのレイテンシーが短縮されます。
説明[最小インスタンス数] を 1 以上に設定した後、最小インスタンスの自動スケーリングポリシーが設定されていない場合、または一定期間アクティブな自動スケーリングポリシーがない場合、現在の最小インスタンス数はここで設定した値になります。
複数の自動スケーリングポリシーを設定した場合、システムは各ポリシーがトリガーされたときの [最小インスタンス数] を計算し、アクティブなポリシーの中で最大値を現在の [最小インスタンス数] として使用します。
詳細については、「現在の最小インスタンス数はどのように計算されますか?」をご参照ください。
1
[インスタンスの同時実行]
単一の GPU 関数インスタンスを構成して、複数の同時リクエストを処理できます。 詳細については、「インスタンスの同時実行数の設定」をご参照ください。
プロビジョニング済みインスタンス
設定項目
説明
例
[インスタンスタイプ]
[プロビジョニング済みインスタンス] を選択します。 インスタンスは、購入したプロビジョニング済みリソースプールから関数に割り当てられます。
予測可能なコストを必要とし、ビジネスのレイテンシーに敏感で、ビジネスの安定性を確保するためにリソース使用率が高いシナリオには、プロビジョニング済みインスタンスを使用します。
プロビジョニング済みインスタンス
[プロビジョニング済みリソースプール]
プロビジョニング済みリソースプールは、ターゲット関数に割り当てることができるプロビジョニング済みインスタンスのプールです。 プロビジョニング済みリソースプールの残りのクォータが不十分な場合は、[操作] 列の [スケールアウト] をクリックし、画面の指示に従ってスケールアウトします。 詳細については、「プロビジョニング済みリソースプール (サブスクリプション)」をご参照ください。
[プロビジョニング済みリソースプール]: fc-pool-****
[GPU タイプ]: Ada
[仕様]
必要に応じて、関数の [GPU メモリ]、[vCPU]、[メモリ]、および [ディスク] の仕様を設定します。 仕様を設定した後、実際の関数呼び出しによって生成される各リソースの使用量は、仕様に使用期間を乗じて測定されます。 詳細については、「課金の概要」をご参照ください。
説明データはディスク上のすべてのディレクトリに書き込むことができます。 ディスク領域は共有されます。
ディスクのライフサイクルは、基盤となる関数インスタンスのライフサイクルと同じです。 インスタンスがシステムによって回収されると、ディスク上のデータも削除されます。 ファイルを永続的に保存するには、NAS ファイルシステムまたは OSS バケットをマウントできます。 詳細については、「NAS ファイルシステムの設定」および「OSS ファイルシステムの設定」をご参照ください。
GPU メモリ: 48 GB
vCPU: 8 vCPU
メモリ: 64 GB
ディスク: 512 MB (無料、Function Compute はディスク使用量に対して 512 MB の無料クォータを提供します)
[プロビジョニング済みインスタンス]
プロビジョニング済みリソースプールのリソースに基づいて、ターゲット関数にプロビジョニング済みインスタンスの数を割り当てます。
1
[インスタンスの同時実行]
単一の GPU 関数インスタンスを構成して、複数の同時リクエストを処理できます。 詳細については、「インスタンスの同時実行数の設定」をご参照ください。
20
[関数コード]: 関数のランタイムとコード関連の情報を設定します。
パラメーター
説明
例
[ランタイム]
サンプルイメージの使用: Function Compute が提供するサンプルイメージを選択して、イメージ関数を迅速にデプロイします。 [コンテナイメージ] パラメーターの下のイメージリストからターゲットイメージを選択する必要があります。
ACR のイメージを使用: [コンテナイメージ] パラメーターの下にある [ACR からイメージを選択] をクリックします。 [コンテナイメージの選択] パネルで、作成した [Container Registry インスタンス] と [ACR イメージリポジトリ] を選択します。 次に、下のイメージリストでターゲットイメージを見つけ、[アクション] 列の [選択] をクリックします。
説明別のアカウントに属する ACR リポジトリのパブリックイメージを使用して関数を作成することはできません。
関数に設定されたイメージが変更された場合は、速やかに関数を更新してください。 そうしないと、関数の呼び出しが失敗します。 詳細については、「使用上の注意」をご参照ください。
Enterprise Edition インスタンスを使用する場合、高速化されていないイメージのみを選択できます。 元のイメージまたは高速化されたイメージを削除しないでください。 そうしないと、関数の呼び出しが失敗します。 詳細については、「使用上の注意」をご参照ください。
Enterprise Edition インスタンスを使用する場合、カスタムドメイン名形式のイメージアドレスはサポートされていません。
[インデックスのみモード] でイメージアクセラレーションが有効になっている ACR Enterprise Edition (Standard および Advanced) インスタンスのリポジトリ内のイメージを使用して関数を作成することはできません。
ACR が [インデックスのみモード] 機能を導入して以来、ACR Enterprise Edition (Basic) インスタンスでイメージアクセラレーションが有効になっている新しく作成されたイメージリポジトリ内のイメージは、関数の作成に使用できません。 ただし、ACR Enterprise Edition (Basic) インスタンスの既存の高速化されたイメージリポジトリ内のイメージは、引き続き関数の作成に使用できます。 [インデックスのみモード] の詳細については、「コンテナイメージのオンデマンドロード」をご参照ください。
[コンテナイメージ]
ターゲットイメージを選択します。
SpringBoot Web アプリケーションサンプルイメージ
[起動コマンド]
プログラムの起動コマンド。 起動コマンドを設定しない場合、デフォルトでイメージの Entrypoint/CMD が使用されます。
なし
[リスナーポート]
コード内の HTTP サーバーがリッスンするポート。
9000
[実行タイムアウト]
タイムアウト期間を設定します。 デフォルトの [実行タイムアウト] は 60 秒で、最大は 86,400 秒です。
60
[インスタンスのプリフェッチ]: AI 推論シナリオでは、インスタンスのプリフェッチを設定してモデルをプリフェッチし、最初の長いリクエスト時間を短縮します。
設定項目
説明
例
インスタンスのプリフェッチ
[インスタンスのプリフェッチ]
Initializer フックを設定することで、関数インスタンスが正常に起動し、リクエストを処理する前に、指定されたスクリプトを実行するか、インターフェイスを呼び出すことでモデルをロードできます。 これにより、モデルが事前にプリフェッチされ、コールドスタートが最適化されます。
Initializer フックの詳細については、「インスタンスのライフサイクルの設定」をご参照ください。
有効
[タイムアウト]
Initializer フックのタイムアウト期間を設定します。
60
[プリフェッチプログラムタイプ]
モデルをプリフェッチするために、[命令の実行] と [コードの呼び出し] の 2 種類の Initializer フックを設定できます。
命令の実行
[命令の内容]
実行する命令の内容を設定します。
/bin/bash、/bin/sh、/bin/csh、/bin/zshなどのカスタム Shell 実装を使用できます。 関数のランタイム環境が対応する Shell 実装をサポートしていることを確認してください。「フックの実装」をご参照ください
[権限、ネットワーク、ストレージ]: 関数のアクセスロール、ネットワーク、およびストレージマウントを設定します。
設定項目
説明
例
[関数ロール]
Function Compute はこの RAM ロールを使用して、Alibaba Cloud リソースにアクセスするための一時キーを生成し、そのキーをコードに渡します。 詳細については、「関数ロールを使用して Function Compute に他の Alibaba Cloud サービスへのアクセス権を付与する」をご参照ください。
mytestrole
[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****
[デフォルト NIC のインターネットアクセスを許可]
関数がデフォルトのネットワークインターフェイスカードを介してインターネットにアクセスできるかどうかを指定します。
重要固定パブリック IP アドレス機能を使用する場合は、[デフォルト NIC のインターネットアクセスを許可] を無効にする必要があります。 そうしないと、設定された固定パブリック IP アドレスが有効になりません。 詳細については、「固定パブリック IP アドレスの設定」をご参照ください。
有効
[NAS ファイルシステムのマウント]
関数に NAS ファイルシステムを設定して、複数の推論関数で共有されるモデルなど、関数間で共有されるデータを永続的に保存します。
自動設定を選択した場合、システムはデフォルトで Alibaba-Fc-V3-Component-Generated という名前の既存の汎用型 NAS ファイルシステムを使用します。 現在のアカウントで適格な NAS ファイルシステムが見つからない場合、システムは自動的に 1 つ作成します。
有効
[OSS オブジェクトストレージのマウント]
関数に OSS オブジェクトストレージをマウントして、ログ、ビジネスファイル、その他のデータを永続的に保存します。 詳細については、「OSS オブジェクトストレージの設定」をご参照ください。
有効
[ログとトレース分析]
設定項目
説明
例
[ロギング]
この機能を設定して、関数の実行ログを Simple Log Service に永続的に保存します。 これは、コードのデバッグ、エラーの分析、データの分析に役立ちます。 詳細については、「ロギング機能の設定」をご参照ください。
[自動設定]:
serverless-<region_id>で始まるログプロジェクトを自動的に選択します。このようなログプロジェクトは各リージョンに 1 つだけ作成されます。 システムが現在のリージョンにこのログプロジェクトが既に存在することを発見した場合、それは直接使用されます。
[カスタム設定]: 宛先の [ログプロジェクト] と [Logstore] を手動で指定する必要があります。
有効
[その他の設定]
設定項目
説明
例
[タイムゾーン]
関数のタイムゾーンを選択します。 タイムゾーンを設定すると、[TZ] という名前の環境変数が自動的に関数に追加されます。 その値は、設定した宛先のタイムゾーンです。
UTC
[タグ]
関数に タグ を設定して、関数をグループで管理します。 タグキーとタグ値の両方を設定する必要があります。
key : value
[リソースグループ]
関数が属する リソースグループ を選択します。 リソースグループを使用して、関数をグループで管理します。
Default-Resource-Group
[環境変数]
環境変数を使用して、コードを変更することなく関数の動作を柔軟に調整します。 詳細については、「環境変数の設定」をご参照ください。
{ "BUCKET_NAME": "MY_BUCKET", "TABLE_NAME": "MY_TABLE" }
関数が作成された後、関数リストで表示および更新できます。
関数を更新するとき、設定済みのリスナーポートのみを変更できます。 リスナーポートを削除または追加することはできません。 関数の作成時にリスナーポートが設定されている場合、新しいポートを指定しない限り、そのポートは関数の更新時に保持されます。
Serverless Devs を使用した関数の作成
Serverless Devs を使用すると、1 つのコマンドでコンテナイメージをビルドしてプッシュし、関数をデプロイできます。
次のコマンドを実行してプロジェクトを初期化します。
sudo s initプロンプトに従って、Alibaba Cloud アカウント、カスタムイメージテンプレート、およびプログラミング言語を選択します。 このトピックでは、Node.js を例として使用します。 次に、プロジェクト名を設定し、デプロイするリージョンを選択し、ACR イメージ情報を入力します。
次のコマンドを実行してプロジェクトディレクトリに移動します。
cd start-fc3-custom-container-nodejss.yamlファイルを編集します。 YAML ファイルのパラメーターの詳細については、「YAML 仕様」をご参照ください。次のサンプルコードは一例です。
この例では、
imageは ACR イメージです。 <your namespace>、<your image>、および <your tag> を実際の名前空間名、イメージリポジトリ名、およびイメージバージョンに置き換えます。 ステップ 1 でプロジェクトを初期化したときに正しい ACR イメージを入力した場合、ここで変更する必要はありません。edition: 3.0.0 name: hello-world-app # access: 現在のアプリケーションで必要なキー情報を指定します。 # キーの設定方法については、https://www.serverless-devs.com/serverless-devs/command/config をご参照ください # キーの使用順序については、https://www.serverless-devs.com/serverless-devs/tool#Key-usage-order-and-specifications をご参照ください access: "default" vars: # グローバル変数 region: "cn-hangzhou" resources: hello_world: # hello_world サービスに対してのみ操作を実行するには、コマンドに hello_world を追加します。 例: # hello_world のみをビルド: s hello_world build # hello_world を指定せずに s build を直接実行すると、ツールは YAML ファイル内の hello_world と同じレベルにあるすべてのサービス (コメントアウトされている next_function など) を特定の順序でビルドします。 component: fc3 # コンポーネント名 actions: # カスタム実行ロジック pre-deploy: # デプロイ前に実行 - component: fc3 build --dockerfile ./code/Dockerfile # 実行するコンポーネント。 フォーマット: "component: ComponentName Command Parameter" props: region: ${vars.region} # 変数の使用方法の詳細については、https://docs.serverless-devs.com/serverless-devs/yaml#Variable-assignment をご参照ください functionName: "start-nodejs-ufrz" runtime: "custom-container" description: 'hello world by serverless devs' timeout: 30 memorySize: 512 cpu: 0.5 diskSize: 512 code: ./code customContainerConfig: image: 'registry.${vars.region}.aliyuncs.com/<your namespace>/<your image>:<your tag>' # あなたの ACR イメージ。 <your namespace>、<your image>、<your tag> を実際の名前空間名、イメージリポジトリ名、イメージバージョンに置き換えてください。 # triggers: # - triggerName: httpTrigger # トリガー名 # triggerType: http # トリガータイプ # description: 'xxxx' # qualifier: LATEST # トリガーするサービスのバージョン # triggerConfig: # authType: anonymous # 認証タイプ。 有効な値: anonymous, function # disableURLInternet: false # URL へのパブリックアクセスを無効にするかどうかを指定します # methods: # HTTP トリガーでサポートされる HTTP メソッド。 有効な値: GET, POST, PUT, DELETE, HEAD # - GET # - POST次のコマンドを実行してプロジェクトをデプロイします。
sudo s deploy出力例:
Steps for [deploy] of [hello-world-app] ==================== DEPRECATED: The legacy builder is deprecated and will be removed in a future release. BuildKit is currently disabled; enable it by removing the DOCKER_BUILDKIT=0 environment-variable. Sending build context to Docker daemon 5.12kB Step 1/7 : FROM node:14-buster 14-buster: Pulling from library/node 2ff1d7c41c74: Already exists b253aeafeaa7: Already exists 3d2201bd995c: Already exists 1de76e268b10: Already exists d9a8df589451: Already exists 6f51ee005dea: Already exists 5f32ed3c3f27: Already exists 0c8cc2f24a4d: Already exists 0d27a8e86132: Already exists Digest: sha256:a158d3b9b4e3fa813fa6c8c590b8f0a860e015ad4e59bbce5744d2f6fd8461aa Status: Downloaded newer image for node:14-buster ---> 1d12470fa662 Step 2/7 : WORKDIR /usr/src/ ---> Running in 70a8e2e4d1ea Removing intermediate container 70a8e2e4d1ea ---> 0d67b8fa2901 Step 3/7 : COPY package*.json ./ ---> 09eb15f8770a Step 4/7 : RUN npm install ---> Running in 8ae492be973b Step 5/7 : COPY . . ---> 7560c7b14431 Step 6/7 : EXPOSE 9000 ---> Running in 66b38e54ced0 Removing intermediate container 66b38e54ced0 ---> f73cce48d2ae Step 7/7 : ENTRYPOINT [ "node", "server.js" ] ---> Running in 2fb2f83fd6c0 Removing intermediate container 2fb2f83fd6c0 ---> fe51ae71448c Successfully built fe51ae71448c Successfully tagged registry.cn-hangzhou.aliyuncs.com/z****/z****:latest [2024-01-29 16:33:06][INFO][hello_world] get instanceName= and region=cn-hangzhou from registry.cn-hangzhou.aliyuncs.com/z****/z**** [2024-01-29 16:33:06][INFO][hello_world] try to docker push registry.cn-hangzhou.aliyuncs.com/z****/z**** ... WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded Using default tag: latest The push refers to repository [registry.cn-hangzhou.aliyuncs.com/z****/z****] 85c1ec915b45: Pushed 37c36543a431: Pushed e4afd7f70434: Pushed 0d5f5a015e5d: Layer already exists 3c777d951de2: Layer already exists f8a91dd5fc84: Layer already exists cb81227abde5: Layer already exists e01a454893a9: Layer already exists c45660adde37: Layer already exists fe0fb3ab4a0f: Layer already exists f1186e5061f2: Layer already exists b2dba7477754: Layer already exists latest: digest: sha256:6bf1ed4119d197a46c99082577632957056cb625f2ee0276d2af53f60d22837d size: 2841 [hello_world] completed (688.45s) Result for [deploy] of [hello-world-app] ==================== region: cn-hangzhou cpu: 0.5 customContainerConfig: image: registry.cn-hangzhou.aliyuncs.com/z****/z**** resolvedImageUri: registry.cn-hangzhou.aliyuncs.com/z****/z****@sha256:6bf1ed4119d197a46c99082577632957056cb625f2ee0276d2af53f60d22837d description: hello world by serverless devs diskSize: 512 functionName: start-nodejs-ufrz handler: handler instanceConcurrency: 1 internetAccess: true lastUpdateStatus: Successful memorySize: 512 role: runtime: custom-container state: Active timeout: 30 A complete log of this run can be found in: /root/.s/logs/0129162246次のコマンドを実行して関数をテストします。
sudo s invoke -e "{\"key\":\"val\"}"出力例:
Steps for [invoke] of [hello-world-app] ==================== ========= FC invoke Logs begin ========= FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968 FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968 hello world! FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968 Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB ========= FC invoke Logs end ========= Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399 Code Checksum: undefined Qualifier: LATEST RequestId: 1-65b764db-15eb737f-0c67ab5cd968 Invoke Result: OK [hello_world] completed (4.96s) A complete log of this run can be found in: /root/.s/logs/0129164202
参考
カスタムイメージ関数を使用するには、コンテナイメージのダウンロードと解凍に追加の時間が必要です。 コールドスタートのレイテンシーを短縮する方法の詳細については、「Function Compute でのコールドスタートのレイテンシーを削減するためのベストプラクティス」をご参照ください。
API を呼び出して関数を作成することもできます。 詳細については、「CreateFunction」をご参照ください。
Function Compute の組み込みランタイム、カスタムランタイム、およびカスタムイメージランタイムのシナリオと違いについては、「ランタイムの選択」をご参照ください。