AWS Lambdaが2021年9月29日からArm64に対応しました。
デフォルトではx86…要はIntelのCPUが使われていますが、Arm64を選択するだけで20%のコストダウン、最大19%のパフォーマンスの向上が期待できるとか!乗るしかない!このビッグウェーブに!
設定方法
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つです。
- 古いバージョンのランタイムは未サポート
- バイナリが含まれる場合は再度デプロイする
- コンテナイメージを利用している場合は再度パッケージ化する
Node.jsの場合そもそもv10以下はサポートが切れています。これから作るのであればv14系を採用するのが良さそうですね。またLambdaは基本的にAmazon Linux2上で動作しておりArm64でもx86でもそこは変わりませんが、CPUが変わるとバイナリは再度作り直す必要が出てきます。
参考ページ
- AWS Graviton2 プロセッサを搭載した AWS Lambda 関数 – Arm で関数を実行し、最大 34% 優れた料金パフォーマンスを実現 | Amazon Web Services ブログ
- Serverless Framework – AWS Lambda Guide – Functions
- Release 2.61.0 (2021-10-04) · serverless/serverless
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。
同じカテゴリの記事
- [AWS] ECRにDockerイメージをプッシュする
- [AWS] S3へMIMEタイプを自動判定しながらアップロードする – Node.js
- [AWS] Serverless FrameworkでS3にファイルが追加されたらLambdaを起動する
- [AWS] CloudFrontのオリジンを動的に変更する – Lambda@Edge + Node.js
- [AWS] CloudFront+S3オリジンでindex.htmlを省略する – Lambda@Edge + Node.js
- [AWS] CloudFrontでBASIC認証を行う – Lambda@Edge + Node.js
- [AWS] Comprehendで日本語の感情分析を行う
- [AWS] CLIで複数のIAMを使い分ける