Lambda 命令セットアーキテクチャ - AWS Lambda

Lambda 命令セットアーキテクチャ

Lambda 関数の命令セットアーキテクチャは、Lambda が関数の実行に使用するコンピュータプロセッサのタイプを決定します。Lambda は、命令セットアーキテクチャの選択肢を提供します。

  • arm64 — AWS Graviton2 プロセッサ用の 64 ビット ARM アーキテクチャです。

  • x86_64 — x86 ベースプロセッサ用の 64 ビット x86 アーキテクチャです。

arm64 アーキテクチャを使用する利点

arm64 アーキテクチャ (AWS Graviton2 プロセッサ) を使用するLambda 関数は、x86_64 アーキテクチャで実行される同等の関数よりも大幅に優れた料金とパフォーマンスを実現します。高性能コンピューティング、ビデオエンコーディング、シミュレーションワークロードなど、コンピュータ集約型のアプリケーションに arm64 を使用することを検討してください。

Graviton2 CPU は Neoverse N1 コアを使用し、Armv8.2 (CRCおよび暗号拡張機能を含む) に加えて、複数の他のアーキテクチャ拡張機能をサポートします。

Graviton2 は vCPU あたりでより大きな L2 キャッシュを提供することにより、メモリの読み取り時間を短縮します。これにより、ウェブおよびモバイルバックエンド、マイクロサービス、データ処理システムのレイテンシーパフォーマンスが向上します。Graviton2 は暗号化パフォーマンスも改善し、CPU ベースの機械学習推論のレイテンシーを改善する命令セットをサポートします。

AWS Graviton2 の詳細については、AWS Graviton プロセッサを参照してください。

arm64 アーキテクチャへの関数の移行

arm64 アーキテクチャに移行する Lambda 関数を選択する際は、スムーズな移行を確保するために、関数が次の要件を満たしていることを確認してください。

  • この関数は現在、Lambda Amazon Linux 2 ランタイムを使用しています。

  • デプロイパッケージには、ユーザーが管理するオープンソースコンポーネントとソースコードのみが含まれており、移行に必要な更新を行うことができます。

  • 関数コードにサードパーティーの依存関係が含まれている場合、各ライブラリまたはパッケージは arm64 バージョンを提供します。

arm64 アーキテクチャとの関数コードの互換性

Lambda 関数コードは、関数の命令セットアーキテクチャと互換性がある必要があります。関数を arm64 アーキテクチャに移行する前に、現在の関数コードに関する次の点に注意してください。

  • 組み込みコードエディタを使用して関数コードを追加した場合、コードはどちらのアーキテクチャでも変更なしで実行される可能性があります。

  • 関数コードをアップロードした場合は、ターゲットアーキテクチャと互換性のある新しいコードをアップロードする必要があります。

  • 関数でレイヤーを使用する場合は、各レイヤーをチェックして新しいアーキテクチャと互換性があることを確認する必要があります。レイヤーに互換性がない場合は、関数を編集して、現在のレイヤーバージョンを互換性のあるレイヤーバージョンに置き換えます。

  • 関数で Lambda 拡張機能を使用する場合は、各拡張機能をチェックして、新しいアーキテクチャと互換性があることを確認する必要があります。

  • 関数でコンテナイメージデプロイパッケージタイプを使用する場合は、関数のアーキテクチャと互換性のある新しいコンテナイメージを作成する必要があります。

推奨される移行ステップ

Lambda 関数を arm64 アーキテクチャに移行するために、次のステップに従うことをお勧めします。

  1. アプリケーションまたはワークロードの依存関係のリストを構築します。一般的な依存関係は次のとおりです。

    • 関数が使用するすべてのライブラリとパッケージ。

    • コンパイラー、テストスイート、継続的インテグレーション、継続的デリバリー (CI/CD) パイプライン、プロビジョニングツール、スクリプトなど、関数の構築、デプロイ、テストに使用するツール。

    • 本番環境で関数をモニタリングするために使用する Lambda 拡張機能およびサードパーティー製ツール。

  2. 各依存関係についてバージョンをチェックし、次に、arm64 バージョンが使用可能かどうかをチェックします。

  3. アプリケーションを移行する環境を構築します。

  4. アプリケーションをブートストラップします。

  5. アプリケーションをテストおよびデバッグします。

  6. arm64 関数のパフォーマンスをテストします。x86_64 バージョンとパフォーマンスを比較します。

  7. arm64 Lambda 関数をサポートするように、インフラストラクチャパイプラインを更新します。

  8. デプロイを本番環境にステージングします。

    たとえば、エイリアスルーティング設定を使用して、関数の x86 バージョンと arm64 バージョン間でトラフィックを分割し、パフォーマンスとレイテンシーを比較します。

Java、Go、.NET、Python の言語固有の情報を含む arm64 アーキテクチャのコード環境を作成する方法の詳細については、Getting started with AWS Graviton GitHub レポジトリを参照してください。

命令セットアーキテクチャの設定

Lambda コンソール、AWS SDK、AWS Command Line Interface (AWS CLI)、AWS CloudFormation を使用して、新しい Lambda 関数の命令セットアーキテクチャを設定できます。関数コードは、.zip アーカイブファイルまたはコンテナイメージデプロイパッケージのいずれかを使用して、Lambda にデプロイできます。

Lambda は arm64 アーキテクチャに次のランタイムを提供します。これらのランタイムはすべて Amazon Linux 2 オペレーティングシステムを使用します。

  • Node.js 12、Node.js 14

  • Python 3.8、Python 3.9

  • Java 8 (AL2)、Java 11

  • .NET Core 3.1

  • Ruby 2.7

  • Amazon Linux 2 のカスタムランタイム

注記

Go 1.x などの Amazon Linux オペレーティングシステムを使用するランタイムは、arm64 アーキテクチャをサポートしません。arm64 アーキテクチャを使用するには、提供された.al2 ランタイムで Go を実行します。たとえば、Create a Go image from the provided.al2 base image を参照してください。

arm64 アーキテクチャで関数を作成する方法の例については、AWS Lambda Functions Powered by AWS Graviton2 Processor を参照してください。