[AWS] Serverless FrameworkでLambdaをArm64対応する

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

AWS Lambdaが2021年9月29日からArm64に対応しました。
デフォルトではx86…要はIntelのCPUが使われていますが、Arm64を選択するだけで20%のコストダウン、最大19%のパフォーマンスの向上が期待できるとか!乗るしかない!このビッグウェーブに!

- Sponsored Link -

設定方法

Serverless Frameworkを利用している場合は、YAMLに1行追加するだけです。

# 全体に適用する
provider:
  architecture: arm64  # デフォルトはx86_64

# 個別の関数にだけ適用する
functions:
  hello:
    architecture: arm64  # デフォルトはx86_64

このファイルをデプロイすると

$ sls deploy

Lambdaの関数を確認すると「アーキテクチャ」の項目でarm64が選択されているのが確認できます。ServerlessFrameworkを使わない場合はここで「編集」ボタンをクリックし直接変更できます。

注意点

Serverless frameworkの制約

バージョン v2.61.0 から「architecture」に対応しています。

2.61.0 (2021-10-04)
Features
AWS Lambda: Support 64-bit ARM architecture (#10049) (fe655d4) (Mariusz Nowak)
https://github.com/serverless/serverless/releases/tag/v2.61.0

もし古いバージョンを利用している場合は最新版にアップデートしてください。なおグローバルに入れた物よりも、node_modulesに入っている物が優先されます。これに気が付かず数時間奪われましたw

$ npm install -g serverless

ちなみに古いバージョン(v2.60以下)で実行すると以下のようなメッセージが表示されます。

Serverless: Configuration warning at 'provider': unrecognized property 'architecture'

ランタイムの制約

AWS Lambda側の注意点は3つです。

  1. 古いバージョンのランタイムは未サポート
  2. バイナリが含まれる場合は再度デプロイする
  3. コンテナイメージを利用している場合は再度パッケージ化する

Node.jsの場合そもそもv10以下はサポートが切れています。これから作るのであればv14系を採用するのが良さそうですね。またLambdaは基本的にAmazon Linux2上で動作しておりArm64でもx86でもそこは変わりませんが、CPUが変わるとバイナリは再度作り直す必要が出てきます。

参考ページ

コメント

コメント欄は休止中です。お問い合わせはこちらからどうぞ。ご質問はTwitterにリプを投げてください。

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで300円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -