このトピックでは、Serverless Devs についてよく寄せられる質問への回答を提供します。
s.yaml ファイルを構成する方法
YAML 仕様の詳細については、「YAML specifications」をご参照ください。
Serverless Devs の使用時に例外が発生したがエラーメッセージが報告されない場合の対処方法
次の手順を実行して、問題のトラブルシューティングを行うことができます。
npm install @serverless-devs/s -g
コマンドを実行して、Serverless Devs を更新します。s clean --all
コマンドを実行して、冗長なファイルを削除します。rm -rf .s
コマンドを実行して、ディレクトリから.s
ファイルを削除します。s -v
コマンドを実行して、Serverless Devs のバージョンを確認します。コマンドを実行した後に応答が返されない場合は、ローカルの Node.js ランタイムが異常である可能性があります。 Node.js 12 以降のバージョンを再インストールする必要があります。
問題が解決しない場合は、DingTalk グループ(グループ ID:64970014484)に参加してテクニカルサポートに連絡し、トラブルシューティングのために {s-home}/logs/{TraceId}.log ファイルと s.yaml ファイルを提供してください。
次の図は、{s-home} と {TraceId} を取得する方法の例を示しています。
コードをデプロイするときにローカル構成を使用する場合の対処方法
s deploy
コマンドを実行するときに use-local
を選択するか、s deploy -y --use-local
コマンドを実行するだけです。
Serverless Devs はマルチリージョンデプロイメントをサポートしていますか?
はい、Serverless Devs はマルチリージョンデプロイメントをサポートしています。詳細については、「Serverless Devs のマルチリージョンデプロイメント」をご参照ください。
関数のローカルデバッグを実行する方法
ランタイムがカスタムランタイムではなく、Function Compute の Node.js や Python などの組み込みランタイムである場合は、デバッグに Serverless Devs のローカル呼び出しメソッドを使用することをお勧めします。詳細については、「ローカルコマンド」をご参照ください。
ランタイムがカスタム ランタイムの場合、一般的な開発プラクティスに基づいてサーバー コード デバッグ プロセスを開始できます。
説明カスタムランタイムの場合、
s local invoke
コマンドを実行して、関数をローカルで呼び出すことができます。ただし、ブレークポイントデバッグはサポートされていません。
.fcignore ファイルを使用する方法
大きなコードパッケージをデプロイするために、プロジェクト内の依存関係を NAS ファイルシステムにアップロードする場合、.fcignore ファイルを使用して特定のファイルを除外できます。詳細については、「一般的なヒント」をご参照ください。
s.yaml ファイルに複数の関数が定義されている場合にデプロイおよび呼び出す関数を指定する方法
s.yaml ファイルでは、サービスに複数の関数が含まれている場合があります。関数の1つだけをデプロイまたは呼び出す場合は、s deploy
、s local start
、または s local invoke
コマンドを実行するときに、関数名を指定できます。次の図は、s.yaml ファイルの例を示しています。図では、s helloworld deploy
関数を実行した後、helloworld
関数のみがデプロイされます。
s local
コマンドまたは s build
コマンドを実行すると「connect ENOENT /var/run/docker.sock」エラーが報告される場合の対処方法
エラーメッセージ
エラーメッセージの例:
Project xxx failed to execute:
ERROR:
connect ENOENT /var/run/docker.sock
解決策
オンプレミス マシンで Docker コマンドを正常に実行できるにもかかわらず、Serverless Devs で s local
コマンドまたは s build
コマンドを実行できない場合は、次の手順を実行して問題を解決します。
/var/run/docker.sock
ファイルが存在するかどうかを確認します。次のコマンドを実行して、ファイルが存在するかどうかを確認します。ファイルが存在する場合は、次のステップをスキップします。ファイルが存在しない場合は、次のステップを実行します。
ll /var/run/docker.sock
/var/run
ディレクトリを指すシンボリックリンクを設定します。ll ~/.docker/run/docker.sock ln -s ~/.docker/run/docker.sock /var/run/docker.sock
Docker クライアントが起動しているかどうかを確認します。
Serverless Devs で
s local
コマンドまたはs build
コマンドを実行するには、Docker クライアントを起動する必要があります。Docker クライアントが起動していることを確認してください。
Serverless Application Center または Serverless Devs で Node.js 18 を使用する方法
Web シナリオでは、ほとんどのユーザーがカスタムランタイムを使用します。ただし、組み込みの Node.js、Python、および PHP のバージョンは、ビジネス要件を満たしていない場合があります。この場合、Node.js 18 を使用するには、次の方法を使用します。
コンソールでカスタムランタイムで実行される関数を作成し、ランタイムパラメーターで Node.js 18 を選択してから、関数の詳細ページで関数の構成をエクスポートすることをお勧めします。 YAML の layers 変数は、Node.js 18 の共通レイヤーをマウントするために使用されます。 YAML の PATH 変数は、Node.js 18 をデフォルトバージョンとして設定するために使用されます。
service:
internetAccess: true
name: test-service
function:
handler: index.handler
timeout: 60
diskSize: 512
caPort: 3000
layers:
- acs:fc:cn-hangzhou:official:layers/Nodejs18/versions/1
customRuntimeConfig:
command:
- node
- server.js
runtime: custom.debian10
environmentVariables:
PATH: /opt/nodejs18/bin:/usr/local/bin/...
NODE_PATH: /opt/nodejs/node_modules
...
Serverless Application Center で提供されている機能を使用している場合、レイヤー構成はビルドプロセス中に有効になりません。したがって、ビルドプロセス中に Node.js 18 を使用するには、export PATH コマンドを実行して Node.js 18 を使用することを指定してから、npm install
コマンドと npm run build
コマンドを実行する必要があります。詳細については、「パイプラインのランタイムをアップグレードする」をご参照ください。
Serverless Devs を使用してデプロイされたアプリケーションにアクセスできないのはなぜですか?バインドされたドメイン名は削除されていますか?
***.devsapp.net
ドメイン名を使用した可能性があります。
***.devsapp.net ドメイン名は、学習とテストの目的でのみ Serverless Devs によって提供されていることに注意してください。本番環境では使用できません。 Serverless Devs は定期的に URL テストリクエストをドメインに送信し、発行後 1 日でドメインを取り消します。より良いエクスペリエンスを得るために、アプリケーションのカスタムドメイン名を速やかに構成することをお勧めします。カスタムドメイン構成の詳細については、「カスタムドメイン名を構成する」をご参照ください。
1 日以上カスタムドメインがないアプリケーションは、***.devsapp.net ドメインが取り消されるとアクセスできなくなります。このような場合は、アプリケーションを再デプロイして、Serverless Devs がドメインを再度発行するようにする必要があります。