AWS Lambda を Graviton2/Arm に切り替え最大 34% のコスト削減を行う

記事タイトルとURLをコピーする

営業部 佐竹です。
本日は久しぶりにコスト削減の話題です。

はじめに

AWS Lambda のコスト削減を行うにはどのような手法があるでしょうか?

  1. Compute Savings Plan を適用する
  2. Compute Optimizer を確認し、メモリの割り当てを最適化する

これまで、上記2つの手段がありました。それぞれを簡単に説明させて頂きます。

Compute Savings Plan を適用する

blog.serverworks.co.jp

Compute Savings Plan は Lambda に対して最大17%のコスト削減を提供する機能です。

ただし、Lambda が動作している時間、つまりコンピューティングリソースを使っている時間に対しての値引きになるため、ここを狙って Savings Plan を適用するのはコスト削減効果の低さも相まって、あまり実用的ではないのが実情です。実際、長らく Savings Plan を運用してきていますが、Lambda Function へその削減効果が適用されるのは極々稀です。

そのため「EC2 インスタンスのコスト削減ついでに Lambda の実行時間にも適用されればよい」という立ち位置で使われることが多い状況です。

Compute Optimizer を確認し、メモリの割り当てを最適化する

blog.serverworks.co.jp

Compute Optimizer には Lambda の推奨が表示されるようになっています。

表示される通りメモリの割り当てを最適化することで、実行時間が最も費用対効果の高いものとなり、コストが削減されます。この推奨通りに設定を変更するのは容易であるため、お客様にも好評となっている機能です。

そして今回、3つ目のコスト削減手法のご紹介です。

Lambda のアーキテクチャが AWS Graviton2 プロセッサで動作可能になりました

aws.amazon.com

AWS 公式ブログでは10月4日に日本語として公開されております通り(リリースでは9月末です)、Lambda を AWS Graviton2 (Arm) で動かすことができるようになりました。

そして、Graviton2 (Arm) アーキテクチャへの変更により20% のコスト削減効果があります!加えて、Gravition2 は CPU 自体の性能が向上しているため、Lambda の実行時間も短縮されることになります。

つまり、実行時間あたりのコストが 20% オフになりつつ、CPU 性能の向上による実行時間の短縮という2つのメリットを享受できます。

これらの組み合わせにより、AWS は最大 34% のコスト削減が期待できると記載しています。

マネジメントコンソールを用いたアーキテクチャ変更手順

実際に既存の Lambda Function でアーキテクチャ変更を行ってみました。

既存の Lambda Function を開くと、「Runtime settings」の項目に「Architecture」という項目が増えています。

f:id:swx-satake:20211008141426p:plain

その右上にある「Edit」ボタンを押下して、編集を行います。

f:id:swx-satake:20211008141547p:plain

Edit 画面に入ると、最下部に Architecture があり x86_64arm64 が選択可能となっています。

今回は、arm64 を選択して「Save」します。

f:id:swx-satake:20211008141655p:plain

これで設定変更は完了です。無事にアーキテクチャが arm64 = Gravition2 になりました。

この後 Lambda の動作確認を行いましたが、問題なく動作しておりました。

なお、Init Duration にかかる処理時間(ms)が、Gravition2 に変更されたことで短縮されていたこともログからわかりました。

アーキテクチャは一覧でも表示が可能に

多数の Lambda Function が存在する場合、アーキテクチャの現設定を一覧で確認されたいと思われるでしょう。

Lambda Function の一覧画面に、アーキテクチャを表示させることもできるようになっていました。

f:id:swx-satake:20211008142037p:plain

上画像の通り設定でアーキテクチャの表示を有効化して頂くと、以下の通り一覧で表示が可能です。

f:id:swx-satake:20211008142149p:plain

このように一覧を使うことで、どの Lambda Function が arm64 へ移行済であるのか一目でわかります。

Compute Optimizer には推奨が表示されない

以下の通り、AWS Compute Optimizer の EC2 インスタンスのコスト最適化においては、2021年8月26日の更新で Graviton2 (Arm) への移行も推奨されるようになりました。

aws.amazon.com

ですが、Lambda Function においてはいまだメモリ最適化の推奨のみとなっており、アーキテクチャを Graviton2 (Arm) へ変更するように推奨されることはありません。

恐らく、今後のアップデートで追加対応されるのではと考えておりますが、今時点で Compute Optimizer に表示されない点は少し残念ですね。

まとめ

f:id:swx-satake:20211008145323p:plain:w150

本日は、Lambda アーキテクチャが AWS Graviton2 プロセッサで動作可能になったことをお知らせするとともに、実際にアーキテクチャの設定変更を行い問題が起きないことを確認しました。

皆様も是非 Lambda Function を Graviton2 (Arm) へ移行してコストを削減してみてください。

なお、 Graviton2 (Arm) への切り替えにあたっては念のため、検証環境での事前テストを予め行って頂きますようお願い致します。

では、またお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

営業部カスタマーサクセス課所属。AWS資格12冠。2010年1月からAWSを利用してきました。2021 Japan APN Ambassador /2020-2021 APN ALL AWS Certifications Engineer。AWSのコスト削減、最適化を得意としています。