Javascriptの設定を有効にしてください。お使いのブラウザはJavaScriptをサポートしていないか、JavaScriptの設定が無効になっています。このサイトでは、JavaScriptを使用しています。すべての機能をご利用希望の方は、JavaScriptを有効にしてください。 lambda関数のランタイムをバージョンアップ② - COLOR CHIPS Webシステム・ITサービス コラム

L O A D I N G

lambda関数のランタイムをバージョンアップ②

  • Webシステム
  • Engineering Log

2026.01.14

執筆者

M.N.

前回の記事の続き

前回の復習

前回の記事でlambdaのランタイムをnode12から22に大規模バージョンアップをする話のAWS設定まで書いたので、今回は続きとして改修~本番リリースまでについての話をします。


バージョンアップ対応の作業内容

復習ですが、バージョンアップ対応では下記の作業を実施しました。
01 バージョン変更に伴う影響範囲調査
02 AWSコンソール上でのバージョンアップ作業
03 影響があったコードの改修
04 本番リリース時の切り戻し手順策定
05 本番リリース

 

影響があったコードの改修

影響範囲の調査でaws-sdkを使用している関数の方が作業内容が重そうだと判断したため、まずは開発環境で未使用の関数をアップグレードしてみました。

結果、ほぼほぼ問題無く動作しました。
次に、aws-sdkを使用している関数のバージョンアップを実施しましたが、当然エラーで動かなかったため、ソースコードの改修を実施しました。


aws-sdk v2とv3の主な違い

v2はすべての AWS サービスが aws-sdk パッケージにまとめられているのに対し、v3では個別に必要なサービスをインポートする必要があります。


メリット
単にコーディングするだけだと面倒に感じますが、これによって不要なパッケージのインポートが不要になり、バンドルサイズ(=lambdaにアップロードされるコードサイズ)が小さくなるというメリットがあります。


コード改修の具体例
具体的には、下記のような改修をaws-sdkを使用している箇所ごとに実施しました。

aws-sdk v2
// インポート箇所
const AWS = require("aws-sdk");
const dynamodb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });

// 使用箇所
await dynamodb.putItem({
Item: {アイテムのパラメータ},
TableName: "テーブル名"
}).promise();

↓変更後

aws-sdk v3
// インポート箇所
const { DynamoDBClient, PutItemCommand } = require("@aws-sdk/client-dynamodb");
const dynamodb = new DynamoDBClient({});

// 使用箇所
const command = new PutItemCommand(アイテムのパラメータ);
await dynamodb.send(command);

aws-sdkを使用している関数についても、v3の構文に変更することで、既存の関数と同じように動くことが確認できました。

aws-sdkのEOL対応も同時にできたので、対応時期としては良かったです。

 

本番リリース時の切り戻し手順策定

すべての関数の改修が完了後、検証環境までのアップグレード作業を実施し、クライアント様の確認を挟んで本番リリース実施日を決めました。

今回のlambdaに限らず、インフラのバージョンアップの際には何かあった場合に前のバージョンに戻せるように対応を進める必要があります。

ただ、今回は開発環境の対応の段階で、別関数として作成して呼び出し元の設定を切り替えるのみで戻せることがわかっていたため、実際の作業手順書に切り戻し方法を記載する程度でした。


構成の説明

①クライアント様からのリクエスト
②WAF
③APIゲートウェイ
④lambda関数が発火するフロー
 認証で使用しているCognitoの拡張機能でlambdaトリガーから呼び出され
 るフローの2つがあります。

APIゲートウェイからの呼び出し
SwaggerでAPI仕様をバックアップ前にエクスポートし、問題発生時にインポートすることでまとめて切り戻しができるようにしました。

Cognitoのトリガー
5つのみでそれほど時間がかからないため、切り戻し時は設定変更で対応することにしました。

 

本番リリース

本番リリースはメンテナンスモードで2時間程度のサービス停止をして実施しました。

リリース内容としてはサービスの停止をしなくても実施可能な範囲内でしたが、Cognitoを利用している都合上、ユーザーの認証機能に影響が出る可能性があるため、安全策をとってサービス利用の少ない夜間帯にリリースを実施しました。


1. リモートでの実施

通常のリリース時は基本的に社内での実施ですが、今回は時間の都合上、リモートでの実施となりました。

 

2. 事業部長待機

念のため事業部長にも待機いただいた状態でリリースを実施しました。

 

3. 作業完了

特に問題無く作業完了し、クライアント様の確認作業の完了後にメンテナンスモードを解除し、サービスを再稼働しました。

 

4. 経過観察

サービス再稼働後、1時間程度は事業部長とslackで雑談をしつつ、経過観察を実施しました。


残対応

ここまででバージョンアップ作業は完了ですが、残課題として古い関数の削除が残っています。
使用料金が発生するのは主にリクエスト時のため、呼び出されない関数が残っていても問題は無いですが、不要なものを残しておく必要もないため、前のバージョンに戻すことが無いとクライアント様が判断した段階で削除予定です。


まとめ

今回はnode12から22への変更かつ、aws-sdk v2からv3への変更のため、そこそこ時間がかかりました。

ただ、こまめにバージョンアップをしていれば切り戻しの問題などは発生しなかったため、インフラのバージョンの定期的な見直しは重要だと感じました。

この記事に関連するColorChipsのサービス

BUSINESS

システム開発

業務効率化の答えはここに。
下町が誇る業務システムソリューション

COLOR CHIPS のWebシステム開発部では、業務効率化やDX推進を支援するシステムの受託開発を行っています。業務フローの見える化やシステム導入支援、運用まで一貫して対応し、企業ごとの課題に合わせた最適なソリューションを提供しています。

VIEW MORE

ITサービス

お客様のシステム運用をサポートし、
長期安定稼動のお手伝いをします

COLOR CHIPS の技術者がお客様の社内に常駐し、お客様システムの監視や運用などの各種サポート業務を行います。
お客様の社内で密接な関係を築きながら業務を行うことでより迅速に、かつご要望に添ったサービスをご提供しています。

技術開発

COLOR CHIPS 先端技術開発ラボ
先端技術で業務をより効率的に!

COLOR CHIPS の研究開発部門は、AI解析、クラウド/スマホアプリ開発、IoT・ウェアラブル機器など、多岐にわたる先端技術に挑戦するラボです。知識と好奇心を武器に、新たなソリューション創出を目指し、未来を切り拓く技術革新に取り組んでいます。

VIEW MORE

オリジナルデザイン時計

NEW COLORS
オリジナル腕時計製作について

NEW COLORSは、20年以上の実績を持つオリジナル腕時計製作の専門ブランドです。卒業記念品や周年記念、ノベルティ、OEMまで目的に応じたデザイン・仕様で対応。初心者でも安心の制作サポートや、ペットの写真から作る「うちの仔オリジナルクロック」など、心に残る記念品づくりをお手伝いします。

VIEW MORE

お問い合わせ
CONTACT

記事にある技術に関するお問い合わせなどは
こちらのフォームからおねがいいたします。

TOP