【重要!】この記事は当初2021年3月に投稿されました。その後、時間経過に伴い、同様趣旨の移行ですが更に新しいバージョンへの「v12 ⇒ v14」の移行の必要性が生じています。(バージョン番号にご留意ください。)詳細はサポート記事(リンク)をご確認ください。
記事種別
製品・サービスのオペレーションに関する記事です。
想定の読者層
Twilio FunctionsもしくはAssetsを直近でご利用あるいは今後ご利用予定のお客様を念頭に置いております。
ご理解いただきたい内容
Functions機能に関連し、Twilioではそのランタイム環境を業界標準に照らし合わせて常に最新にするよう心がけています。OpenJS財団のサポートスケジュールによると、Node v10は2021年4月30日にサポート期限を迎えます。(日時については、明記ない限り米国時間となります。)
ご対処いただきたい項目
皆さまのFunctionsコードがNode v12との組み合わせで動作するよう、Node v12への移行(テストおよび再デプロイ)を2021年4月30日までに完了させてください。
2021年4月30日以降に、移行対処をしていない状況でFunctionsコードに変更を加えると、Node v12との組み合わせで動作するように自動的に構成変更されます。この背景もあり、皆さまのFunctionsコードのロジックそのものに変更(予定)がなくても、今のうちにNode v12への移行を行うことを推奨いたします。
繰り返しとなりますが、NodeJSの新たなバージョン(v12)との組み合わせで動作するように、Functionsコードを新たにデプロイする必要があることにご留意ください。
動作対象のNode環境のバージョンが変更となるのは、現時点では以下のいずれかを行った場合となることにご留意ください。❑❑ Twilioコンソール上⇒Functionsの画面内⇒Dependenciesタブにおいて明示的に設定変更を加える (以下、“ドロップダウン”が含まれる画面キャプチャを参照) ❑❑ Twilio CLIのサーバーレスツールキットでフラグ‘runtime’を用いる (例: "twilio serverless:deploy --runtime node12") ❑❑ ビルドする(Buildリソースを作成する)際に、‘runtime’パラメータに明示的に所望バージョンを記載する (例: ““runtime”: “node10””) ❑❑
ランタイム時のNodeバージョンを明示的に指定しない場合、デフォルトでNode v12を利用します。(サービスにデプロイされている以前のビルドが存在しない前提。) サービスにデプロイされているビルドが存在する場合、最後に成功したデプロイにおいて利用されたNodeバージョンが利用されます。
対処しなかった場合の影響
現時点でデプロイ済みのFunctionsコードについては、コードロジックに変更が加えられない限りにおいて、Node v10との組み合わせで動作し続けます。またFunctionsコードを2021年4月30日以降にデプロイした場合、そのコードはNode v12との組み合わせで動作するように自動的に構成変更されます。
FunctionsコードがNode v12環境下で動作するようにアップグレード/テスト/デプロイする手順については、以下記載内容をご確認ください。4月30日までにNode v12の構成へ安全に移行することを推奨いたします。
なお、Node v10からNode v12へのアップグレードに際して、コードの文法的な変更が必要となることはないはずですが、一方で影響のありそうな分野例としてNPM依存性の箇所が挙げられます。デプロイに含めた各依存性について、お手数ですがNode v12との組み合わせで動作することをご確認ください。
移行(テスト/再デプロイ)の具体的手順
■ ランタイム時に動作するNodeバージョンを確認するFunctionsコード例
ランタイム時に動作するNode環境のバージョンを確認するFunctionsコード例です。
exports.handler = function (context, event, callback) {
return callback(null, process.version);
};
■ Functions (Classic) を利用している場合
アップグレードする最も簡単な方法は、Functionsの新エディタ(コンソール画面上の“Services”側)を利用することです。
- Functionsのサービスを新規作成します。(⇒ 新エディタを利用する準備が整います。)
- アップグレード対象のFunctionsコードを、Functions (Classic)側から新規作成したサービス側へ(新たなFunctions要素として)コピペします。
- 環境変数や依存性を、従来の設定内容に基づき再設定します。
- 新たなFunctions要素をDeploy Allボタンを利用してデプロイします。この場合、デフォルトでNode v12の下にコードのデプロイが行われます。
- 仮りにNode v10との組み合わせでの検証を行いたい場合(例: v12への移行過程での比較作業)、Dependenciesタブのドロップダウンで“Node v10”を選択し、Deploy Allボタンを押して再デプロイください。
- Functions (Classic)側のデプロイが有効な状況のまま、この移行・テスト作業を進めてください。動作検証が完了した段階で、Node v12の下にデプロイされた、新規サービス側のFunctions要素を商用版として公開できます。
クラシック型Functions側の各種設定(例: Studioフローにおける参照、Twilio電話番号との関連付け)を新たなFunctions要素のURLで更新ください。新たなFunctions要素のURLはCopy URLボタン(Functionsエディタの右下部)を押すことでクリップボードにコピーできます。
仮りにFunctions(Classic)側のランタイム環境を変更したい場合、サポート部門までお問い合わせください。(アカウントSID情報が必要となります。)
■ FunctionsのUI Editor (画面エディタ) を利用する方法
アプリケーションが最新のFunctionsエディタで組まれている場合、テストの方法が2つあります。
方法1: サービスを新規作成する
- サービスを新規作成する
- Functionsコードを既存サービス側から新規サービス側へコピペする
- Dependenciesタブにおいて想定するランタイムバージョン(この記事の文脈では基本的にv12)を指定する
- 設定を保存し、Deploy Allする
方法2: 既存のサービスのままテストを進める
- DependenciesタブでNode v12を選択する
- 同一環境のままデプロイおよびテストを進める
■ APIを利用する方法
デプロイする際のBuildリソースにおける‘runtime’パラメータ設定を行い、Functionsコードをテストすることが可能です。
- サービスを新規作成する
- 新規作成したサービスにデプロイするFunctionsのBuildリソースにおいて、‘runtime’パラメータに明示的に所望バージョンを記載する (例: ““runtime”: “node12””)
■ サーバレス・ツールキットを利用する方法
Node v10もしくはv12を適宜選択してデプロイする方法は以下の通りです。
- Twilio CLI Serverlessプラグインをアップデートしてください: "twilio plugins:update"
- コマンド "twilio plugins" を走らせ、"@twilio-labs/plugin-serverless" のバージョンが1.9.0以上であることを確認ください。
- バージョン1.9.0未満の場合、以下を実行ください: "twilio plugins:remove @twilio-labs/plugin-serverless" の後 "twilio:plugins install @twilio-labs/plugin-serverless@latest"
- 当該のプロジェクトがNode v12の下で動作するよう、フラグ‘runtime’を付けてデプロイします: "twilio serverless:deploy --runtime node12"
上記対処を完了されると、Functionsコードがランタイム時にNode 12との組み合わせで動作するようにデプロイできたことになります。
参考情報
上記は、ドキュメントサイトの記載の抄訳でもあります。オリジナル記載を参考にしたい場合、こちらをご確認ください。
改訂履歴
- 2022/5/4 JST - 記事冒頭の【重要!】の記載を修正。(参照先を、 changelog(英語)から日本語サポート記事へ変更。)
- 2022/2/2 JST - 記事冒頭に【重要!】の記載を追加。
- 初版: 2021/3/14 JST