Linux への AWS SAM CLI のインストール - AWS Serverless Application Model

Linux への AWS SAM CLI のインストール

AWS SAM コマンドラインインターフェイス (CLI) は、CentOS、Fedora、Ubuntu、および Amazon Linux 2 の最新ディストリビューションの 64 ビット版でサポートされています。AWS SAM CLI をインストールするには、ダウンロードしたパッケージを抽出または「解凍」する必要があります。オペレーティングシステムに組み込み unzip コマンドがない場合は、同等のコマンドを使用します。

Linux ホストで AWS SAM CLI を使用するための前提条件をインストールして設定するには、これらの手順を実行してください。

  1. AWS アカウントを作成します。

  2. AWS Identity and Access Management (IAM) 許可と AWS 認証情報を設定します。

  3. Docker をインストールします。注意: Docker が前提条件となるのは、アプリケーションをローカルでテストする、または --use-container オプションを使用する場合のみです。

  4. AWS SAM CLI をインストールします。

ステップ 1: AWS アカウントを作成する

AWS アカウントをまだお持ちでない場合は、aws.amazon.com にアクセスし、[Create an AWS Account] (AWS アカウントを作成する) を選択してください。詳しい手順については、「新しい AWS アカウントを作成してアクティブ化するにはどうすればよいですか?」を参照してください。

ステップ 2: IAM 許可と AWS 認証情報を設定する

AWS SAM で使用する IAM ユーザーは、必要な AWS のサービスを呼び出し、AWS リソースを管理するために十分な許可を持っている必要があります。ユーザーが十分な許可を持っていることを確実にするための最も簡単な方法は、ユーザーに管理者権限を付与することです。詳細については、IAM ユーザーガイドの「最初の IAM 管理者のユーザーおよびグループの作成」を参照してください。

注記

AWS Command Line Interface (AWS CLI) を使用するユーザーに管理者権限を付与しない場合は、制限された一連の許可をユーザーに付与できます。詳細については、「許可」を参照してください。

さらに、AWS SAM CLI が AWS のサービスを呼び出せるようにするには、AWS 認証情報をセットアップする必要もあります。詳細については、「AWS 認証情報のセットアップ」を参照してください。

ステップ 3: Docker をインストールする (オプション)

注記

Docker が前提条件となるのは、アプリケーションをローカルでテストする場合と--use-container オプションを使用してデプロイパッケージを構築する場合のみです。当初はこれらの機能を使用しない予定の場合は、このセクションをスキップするか、後ほど Docker をインストールすることができます。

Docker は、Linux マシン上でコンテナを実行するアプリケーションです。AWS SAM は、Docker コンテナとして使用する AWS Lambda と同様のローカル環境を提供します。このコンテナを使用して、サーバーレスアプリケーションを構築、テスト、およびデバッグできます。

AWS SAM CLI を使用してサーバーレスプロジェクトと関数をローカルで実行するには、Docker がインストール済みで機能している必要があります。AWS SAM CLI は、DOCKER_HOST 環境変数を使用して Docker デーモンにアクセスします。以下の手順は、AWS SAM CLI と連動するように Docker をインストール、設定、および検証する方法について説明します。

Docker は、CentOS、Debian、および Ubuntu などの最新の Linux ディストリビューションを含めたさまざまなオペレーティングシステムで使用できます。特定のオペレーティングシステムへの Docker のインストールについては、Docker Docs ウェブサイトで「Get Docker」を参照してください。

Amazon Linux2 を使用している場合は、以下の手順に従って Docker をインストールします。

  1. インスタンスでインストールされているパッケージとパッケージキャッシュを更新します。

    sudo yum update -y
  2. 最新の Docker Community Edition パッケージをインストールします。

    sudo amazon-linux-extras install docker
  3. Docker サービスを開始します。

    sudo service docker start
  4. ec2-userdocker グループに追加して、sudo を使用せずに Docker コマンドを実行できるようにします。

    sudo usermod -a -G docker ec2-user
  5. ログアウトしてから再度ログインして、新しい docker グループ許可を取得します。これを実行するには、現在の SSH ターミナルウィンドウを閉じ、新しいウィンドウでインスタンスに再接続します。新しい SSH セッションには適切な docker グループ許可が必要です。

  6. ec2-usersudo を使用せずに Docker コマンドを実行できることを確認します。

    docker ps

    Docker がインストール済みで実行中であることを確認する、以下の出力が表示されます。

     CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
注記

Linux では、ホストマシンとは異なる命令セットアーキテクチャで Lambda 関数を構築して実行するには、Docker を設定する追加の手順を実行する必要があります。例えば、x86_64 マシンで arm64 関数を実行するには、次のコマンドを実行して Docker デーモンを設定します: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

Docker のインストールで問題が発生した場合は、このガイドの後半にある「トラブルシューティング」セクションを参照してください。または、Docker Docs ウェブサイトの Post-installation steps for Linux にある「Troubleshooting」セクションを参照してください。

ステップ 4: AWS SAM CLI をインストールする

AWS SAM CLI をインストールするには、次の手順を実行します。

x86_64
  1. AWS SAM CLI zip ファイルを任意のディレクトリにダウンロードします。

  2. 以下のコマンドを使用してハッシュ値を生成することによって、ダウンロードしたインストーラファイルの整合性と信頼性を検証します。

    sha256sum aws-sam-cli-linux-x86_64.zip

    出力は以下のようになる必要があります。

     <64-character SHA256 hash value> aws-sam-cli-linux-x86_64.zip

    64-character SHA256 hash value を、GitHub の「AWS SAM CLI release notes」にある目的の AWS SAM CLI バージョンの値と比較します。

  3. インストールファイルを sam-installation/ サブディレクトリに解凍します。

    unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
  4. AWS SAM CLI をインストールします。

    sudo ./sam-installation/install
  5. インストールを確認します。

    sam --version

    インストールが正常に行われていれば、以下のような出力が表示されます。

     SAM CLI, version 1.18.0
ARM
  1. pip を使用して AWS SAM CLI をインストールします。

    pip install aws-sam-cli
  2. インストールを確認します。

    sam --version

    インストールが正常に行われていれば、以下のような出力が表示されます。

     SAM CLI, version 1.18.0

これで開発を開始する準備が整いました。

アップグレード

AWS SAM CLI をアップグレードするには、このトピックの初めにある「AWS SAM CLI をインストールする」セクションと同じ手順を実行しますが、以下にあるように、install コマンドに --update オプションを追加します。

sudo ./sam-installation/install --update

アンインストール

AWS SAM CLI をアンインストールするには、以下のコマンドを実行して、シンボリックリンクとインストールディレクトリを削除する必要があります。

  1. シンボリックリンクとインストールパスを見つけます。

    • which コマンドを使用して、シンボリックリンクを検索します。

      which sam

      出力には、AWS SAM バイナリがある場所のパスが表示されます。以下はその例です。

       /usr/local/bin/sam
    • ls コマンドを使用して、シンボリックリンクがポイントするディレクトリを検索します。

      ls -l /usr/local/bin/sam

      以下の例では、インストールディレクトリが /usr/local/aws-sam-cli になっています。

       lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/sam -> /usr/local/aws-sam-cli/current/bin/sam
  2. シンボリックリンクを削除します。

    sudo rm /usr/local/bin/sam
  3. インストールディレクトリを削除します。

    sudo rm -rf /usr/local/aws-sam-cli

夜間ビルド

AWS SAM CLI の夜間ビルドをインストールできます。インストールされると、sam-nightly コマンドを使用した夜間ビルドを使用できるようになります。AWS SAM CLI の実稼働ビルドと夜間ビルドは、両バージョンを同時にインストールして使用することが可能です。

夜間ビルドには、実稼働バージョンよりも安定性が低い可能性があるプレリリースバージョンの AWS SAM CLI コードが含まれています。夜間ビルドにはビルドイメージのプレリリースバージョンが含まれていないことに注意してください。このため、--use-container オプションでのサーバーレスアプリケーションの構築には、ビルドイメージの最新実稼働バージョンが使用されます。

夜間ビルドは、こちらのダウンロードリンクから利用できます: AWS SAMCLI 夜間ビルド。AWS SAM CLI の夜間ビルドバージョンをインストールするには、このトピックの初めにある「ステップ 4: AWS SAM CLI をインストールする」と同じ手順を実行しますが、代わりに夜間ビルドのダウンロードリンクを使用します。夜間ビルドインストーラーファイルのハッシュ値は、GitHub の「AWS SAM CLI release notes for nightly builds」に記載されています。

夜間ビルドバージョンがインストールされていることを確認するには、sam-nightly --version コマンドを実行します。このコマンドの出力は 1.X.Y.dev<YYYYMMDDHHmm> 形式になります。以下はその例です。

SAM CLI, version 1.20.0.dev202103151200

トラブルシューティング

Docker エラー: 「Cannot connect to the Docker daemon. Is the docker daemon running on this host?」

ec2-user が Docker デーモンにアクセスするための許可の提供には、インスタンスの再起動が必要になる場合があります。このエラーが表示された場合は、インスタンスを再起動してみてください。

シェルエラー: 「command not found」

このエラーが表示された場合は、シェルがパス内の AWS SAM CLI 実行可能ファイルを見つけられません。AWS SAM CLI 実行可能ファイルをインストールしたディレクトリの場所を確認してから、ディレクトリがパス上にあることを確認します。

AWS SAM CLI エラー: 「/lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/aws-sam-cli/dist/libz.so.1)」

このエラーが表示された場合は、サポートされていないバージョンの Linux を使用しており、組み込みの glibc バージョンが古くなっています。以下のいずれかを実行してみてください。

次のステップ

これで、AWS SAM を使用して独自のサーバーレスアプリケーションの構築を開始する準備が整いました。サンプルサーバーレスアプリケーションを使用して開始するには、以下のリンクのいずれかを選択します。