Lambda 命令セットアーキテクチャ (ARM/x86) - AWS Lambda

Lambda 命令セットアーキテクチャ (ARM/x86)

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

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

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

注記

arm64 アーキテクチャは、ほとんどの AWS リージョン にあります。詳細については、AWS Lambda 料金表を参照してください。メモリの料金表で、[Arm 料金] タブを選択し、[リージョン] ドロップダウンリストを開いて、どの AWS リージョン が Lambda での arm64 の使用をサポートしているかを確認してください。

arm64 アーキテクチャで関数を作成する方法の例については、「AWS Graviton2 プロセッサを搭載した AWS Lambda 関数」を参照してください。

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 拡張機能を使用する場合は、各拡張機能をチェックして、新しいアーキテクチャと互換性があることを確認する必要があります。

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

arm64 アーキテクチャへの移行方法

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 アーキテクチャのコード環境を作成する方法の詳細については、AWS「Graviton GitHubの開始方法」リポジトリを参照してください。

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

Lambda コンソール、AWS SDK、AWS Command Line Interface (AWS CLI)、AWS CloudFormation を使用して、新規および既存の Lambda 関数の命令セットアーキテクチャを設定できます。コンソールから既存の Lambda 関数の命令セットアーキテクチャを変更するには、次の手順に従います。

  1. Lambda コンソールの [関数ページ] を開きます。

  2. 命令セットアーキテクチャを設定する関数の名前を選択します。

  3. メインの [コード] タブの [ランタイム設定] セクションで、[編集] を選択します。

  4. [アーキテクチャ] で、関数が使用する命令セットアーキテクチャを選択します。

  5. [保存] をクリックします。

注記

Amazon Linux 2 ランタイムは、すべて x86_64 と ARM CPU アーキテクチャの両方をサポートしています。

Go 1.x などの Amazon Linux 2 を使用しないランタイムは、arm64 アーキテクチャをサポートしません。Go 1.x で arm64 アーキテクチャを使用するには、提供された .al2 ランタイムで関数を実行します。詳細については、.zip パッケージコンテナイメージのデプロイ手順を参照してください。