SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZineニュース

AWS Lambda runtime management controlsが提供開始、自動更新も可能

  • このエントリーをはてなブックマークに追加

  • このエントリーをはてなブックマークに追加

 米Amazon Web Servicesは、サーバレスのイベント駆動型コンピューティングサービスであるAWS Lambaがランタイム更新を関数に適用するタイミングを可視化し、制御できるようにする「AWS Lambda runtime management controls」の提供を、1月24日(現地時間)に開始した。

 AWS Lambda runtime management controlsの提供開始によって、AWS Lambdaは関数が使用しているランタイムのパッチバージョンと、ランタイムの更新がいつ適用されるかを可視化する機能が追加される。また、必要に応じてランタイムの更新を関数のデプロイと同期可能になり、Lambdaがランタイム更新を適用するタイミングを制御でき、まれにあるランタイム更新における非互換性の早期検出が可能になる。さらに、ランタイム更新の非互換性が発生するというまれなケースでは、関数を以前のランタイムバージョンにロールバックできるので、関数の動作が維持され、中断が最小限に抑えられ、最新のランタイムバージョンに戻る前に非互換性を修正する時間が提供される。

 ランタイムバージョンは、特定のランタイムの不変バージョンであり、Node.js 16やPython 3.9などの各Lambdaランタイムは最初のランタイムバージョンから始まり、Lambdaがランタイムを更新するたびに新しいランタイムバージョンがそのランタイムに追加されていく。これらの更新は、すべてのランタイムコンポーネント(OS、言語ランタイムなど)をカバーするため、プログラミング言語で使用されるバージョン番号とは関係なく、Lambdaで定義された番号付けスキームを使用する。ランタイムバージョンごとに、関数をコンテナイメージとしてパッケージ化するニーズに対応するために、対応するベースイメージの公開も行う。

 ランタイム識別子は、プログラミング言語のメジャーリリースを表し、場合によってはOSやSDKといった他のランタイムコンポーネントを表す。また、各ランタイムバージョンには、バージョン番号とAmazonリソースネーム(ARN)があり、バージョンはプラットフォームログ行INIT_STARTで確認することが可能で、Lambdaはコールドスタートの初期化プロセス中に、新しい実行環境を作成するたびにログ行を出力する。

 ランタイムバージョンによって、マネージドランタイム更新の可視化が向上し、INIT_STARTログ行を使用して、関数があるランタイムバージョンから別のランタイムバージョンにいつ移行するかを識別できる。これは、ランタイムの更新が関数の予期しない動作を引き起こした可能性があるかどうかを調査するのに役立つ。なお、ランタイムの更新による動作の変更は非常にまれであり、関数が期待どおりに動作しない場合にもっとも可能性の高い原因としては、関数コードまたは設定のエラーが考えられる。

 AWS Lambda runtime management controlsによって、Lambdaがランタイム更新を関数に適用するタイミングをより詳細に制御可能になっており、関数ごとにランタイム管理設定を指定できるようになった。ランタイム管理設定は、$LATESTおよび各公開関数バージョンに対して、個別に設定可能となっている。

 ランタイム更新モードは、自動、関数の更新、手動の3つから指定でき、Lambdaが関数バージョンを新しいランタイムバージョンに更新するタイミングを制御する。デフォルトでは、すべての関数がランタイム更新を自動的に受け取る。

 自動更新はデフォルトであり、Lambdaがランタイム更新の処理を可能にすることで、運用上のオーバーヘッドを最小限に抑えられる。なお、これまでLambdaはリージョンごとのデプロイシーケンスに従って、各リージョンのすべての関数にランタイム更新を適用していたが、今回のリリースでは自動ランタイム更新モードを使用するように設定された関数が、2段階でランタイム更新を受け取るようになった。Lambdaは最初に、新規作成または更新された関数にのみ新たなランタイムバージョンを適用し、その後自動ランタイム更新モードを使用するよう設定された残りの関数に、ランタイム更新を適用する。

 関数の更新モードでは、関数のコードまたは設定を変更するたびにLambdaが利用可能な最新のランタイムバージョンに関数を更新する。これは、自動更新モードの第1段階と基本的には同じで、自動更新モードでは変更されていない関数にLambdaがランタイム更新を適用する第2段階がある点が異なる。一方、関数の更新モードでは関数を変更しない場合、現在のランタイムバージョンが無期限に使用され続けるため、関数を定期的に更新しない場合は自動更新モードを使用する必要がある。ランタイムの更新を関数のデプロイと同期すると、Lambdaがランタイムの更新をいつ適用するかを制御できる。また、CI/CDパイプラインで関数の更新モードを使用すると、ランタイム更新の非互換性というまれなイベントを早期に検出して、軽減することが可能になり、デプロイごとに新しい公開関数バージョンを作成する場合に特に効果的といえる。各公開関数バージョンは、関数コードと設定の静的コピーをキャプチャするため、必要に応じて以前の公開関数バージョンにロールバックできる。関数の更新モードの使用によって、公開関数バージョンが拡張されランタイムバージョンもキャプチャされるので、関数コード、設定、ランタイムバージョンを含むLambda実行環境全体のロールアウトとロールバックの同期が可能になっている。

 手動ランタイム更新モードでは、関数が使用するランタイムバージョンを完全に制御できる。手動モードを有効にする場合は、使用するランタイムバージョンのARNを指定する必要があり、INIT_STARTログ行からの確認に対応している。

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17272 2023/01/31 08:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング