AWS SAMCLI トラブルシューティング - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SAMCLI トラブルシューティング

AWS Serverless Application Model コマンドラインインターフェイス () の使用、インストール、管理時のエラーメッセージのトラブルシューティングを行いますAWS SAMCLI。

インストールエラー

Linux

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 SAMCLI エラー: "/lib64/libc.so.6: version `GLIBC_2.14' not found (/usr/local/aws-sam-cli/dist/libz.so.1 で必要)"

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

  • Linux ホストを CentOS、Fedora、Ubuntu、または Amazon Linux 2 の最新ディストリビューションの 64 ビット版にアップグレードする。

  • AWS SAM CLIのインストール」の手順を実行する。

macOS

インストールが失敗しました


						インストール失敗のメッセージを表示している AWS SAM CLI インストーラの画像

ユーザー用に AWS SAM CLI をインストールするときに、書き込み権限のないインストールディレクトリを選択した場合、このエラーが発生する可能性があります。以下のいずれかを実行してみてください。

  1. 書き込み権限のある別のインストールディレクトリを選択してください。

  2. インストーラを削除します。次に、再度インストーラをダウンロードして実行します。

エラーメッセージ

Curl エラー: 「curl: (6) Could not resolve: ...」

API Gateway エンドポイントを呼び出そうとしているときに、以下のエラーが表示されます。

curl: (6) Could not resolve: endpointdomain (Domain name not found)

これは、無効なドメインにリクエストを送信しようとしたことを意味します。このエラーは、サーバーレスアプリケーションが正常にデプロイされなかった場合、または curl コマンドに入力ミスがある場合に発生します。 AWS CloudFormation コンソールまたは を使用してアプリケーションが正常にデプロイされたことを確認し AWS CLI、curlコマンドが正しいことを確認します。

エラー: 指定されたスタック名で正確なリソース情報を見つけることができません

単一の Lambda 関数リソースが含まれるアプリケーションで sam remote invoke コマンドを実行するときに、以下のエラーが表示されます。

Error: Can't find exact resource information with given <stack-name>. Please provide full resource ARN or --stack-name to resolve the ambiguity.
考えられる原因: --stack-name オプションが指定されていない。

関数 ARN が引数として指定されていない場合、sam remote invoke コマンドには --stack-name オプションを指定する必要があります。

解決策: --stack-name オプションを指定する。

以下に例を示します。

$ sam remote invoke --stack-name sam-app Invoking Lambda Function HelloWorldFunction START RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82 Version: $LATEST END RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82 REPORT RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82 Duration: 11.31 ms Billed Duration: 12 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 171.71 ms {"statusCode":200,"body":"{\"message\":\"hello world\"}"}%

エラー: スタック名からリソース情報を見つけることができません

sam remote invoke コマンドを実行して Lambda 関数 ARN を引数として渡すときに、以下のエラーが表示されます。

Error: Can't find resource information from stack name (<stack-name>) and resource id (<function-id>)
考えられる原因: samconfig.toml ファイルにスタック名値が定義されている。

AWS SAM CLI はまず、スタック名について samconfig.toml ファイルをチェックします。指定されている場合、引数は論理 ID 値として渡されます。

解決策: その代わりに関数の論理 ID を渡します。

関数の ARN の代わりに、関数の論理 ID を引数として渡すことができます。

解決方法: 設定ファイルからスタック名値を削除します。

設定ファイルからスタック名値を削除することができます。そうすることで、 AWS SAM CLI が関数 ARN を論理 ID 値として渡さないようにします。

設定ファイルを変更した後で sam build を実行します。

エラー:「マネージドリソースの作成に失敗しました。認証情報が見つかりません」

sam deploy コマンドの実行時に、以下のエラーが表示されます。

Error: Failed to create managed resources: Unable to locate credentials

つまり、 が AWS のサービスを呼び AWS SAMCLI出すことができるように AWS 認証情報を設定していないことを意味します。これを修正するには、 AWS 認証情報を設定する必要があります。詳細については、「AWS 認証情報のセットアップ」を参照してください。

エラー: Windows FileNotFoundError の場合

Windows AWS SAMCLIで でコマンドを実行すると、次のエラーが表示されることがあります。

Error: FileNotFoundError

考えられる原因: は、Windows の最大パス制限を超えるファイルパスとやり取り AWS SAMCLIする可能性があります。

解決策: この問題を解決するには、新しい長いパスの動作を有効にする必要があります。これを行うには、Microsoft Windows アプリケーション開発ドキュメントの「Windows 10、バージョン 1607 以降で長いパスを有効にする」を参照してください。

エラー: pip の依存関係リゾルバー...

エラーの例:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. 
aws-sam-cli 1.58.0 requires aws-sam-translator==1.51.0, but you have aws-sam-translator 1.58.0 which is incompatible. 
aws-sam-cli 1.58.0 requires typing-extensions==3.10.0.0, but you have typing-extensions 4.4.0 which is incompatible.
考えられる原因: pip を使用してパッケージをインストールする場合、パッケージ間の依存関係が競合する可能性があります。

aws-sam-cli パッケージの各バージョンは、aws-sam-translator パッケージのバージョンに依存します。例えば、aws-sam-cli v1.58.0 は aws-sam-translator v1.51.0 に依存する可能性があります。

pip を使用して AWS SAM CLI をインストールし、その後、aws-sam-translator のより新しいバージョンに依存する別のパッケージをインストールすると、次の事象が発生します。

  • aws-sam-translator のより新しいバージョンがインストールされます。

  • aws-sam-cli の現在のバージョンと aws-sam-translator のより新しいバージョンには互換性がない可能性があります。

  • を使用すると AWS SAMCLI、依存関係リゾルバーエラーが発生します。

解決方法
  1. AWS SAM CLI ネイティブパッケージインストーラーを使用します。

    1. pip を使用して AWS SAM CLI をアンインストールする 手順については、「AWS SAM CLI のアンインストール」を参照してください。

    2. ネイティブパッケージインストーラーを使用して AWS SAM CLI をインストールします。手順については、「AWS SAM CLIのインストール」を参照してください。

    3. 必要に応じて、ネイティブパッケージインストーラーを使用して AWS SAM CLI をアップグレードします。手順については、「AWS SAM CLI のアップグレード」を参照してください。

  2. pip を使用する必要がある場合は、 AWS SAM CLI を仮想環境にインストールすることをお勧めします。これにより、クリーンなインストール環境と、隔離された環境 (エラーが発生した場合) を利用できます。手順については、「pip を使用した仮想環境への AWS SAM CLI のインストール」を参照してください。

エラー: 「remote」というコマンドはありません

sam remote invoke コマンドの実行時に、以下のエラーが表示されます。

$ sam remote invoke ... 2023-06-20 08:15:07 Command remote not available Usage: sam [OPTIONS] COMMAND [ARGS]... Try 'sam -h' for help. Error: No such command 'remote'.
考えられる原因: AWS SAM CLI のバージョンが古くなっている。

sam remote invoke コマンドは AWS SAMCLIバージョン AWS SAMCLI1.88.0 でリリースされました。バージョンは、sam --version コマンドを実行することで確認できます。

解決策: AWS SAM CLI を最新バージョンにアップグレードする。

手順については、「AWS SAM CLI のアップグレード」を参照してください。

エラー: AWS SAM プロジェクトをローカルで実行するには、 が必要ですDocker。インストールしましたか?

sam local start-api コマンドの実行時に、以下のエラーが表示されます。

Error: Running AWS SAM projects locally requires Docker. Have you got it installed?

これは、Docker が正しくインストールされていないことを意味します。アプリケーションをローカルでテストするには Docker が必要です。これを修正するには、開発ホスト用の Docker をインストールする手順を実行します。詳細については、「Docker のインストール」を参照してください。

エラー:「セキュリティの制約に準拠していません」

sam deploy --guided の実行時に、Function may not have authorization defined, Is this okay? [y/N] という質問のプロンプトが表示されます。このプロンプトに「N」(デフォルトのレスポンス) と答えた場合、以下のエラーが表示されます。

Error: Security Constraints Not Satisfied

このプロンプトは、デプロイしようとしているアプリケーションに、認可なしで設定された、パブリックにアクセス可能な Amazon API Gateway API が存在する可能性があることを知らせています。このプロンプトに「N」と答えることによって、この状態は望ましくないと伝えることになります。

この問題を解決するには、以下のオプションがあります。

  • 認証を使用してアプリケーションを設定する。認証の設定については、「API Gateway API へのアクセスの制御」を参照してください。

  • 認可なしで API エンドポイントにパブリックにアクセスできるようにすることが目的の場合は、デプロイを再起動し、デプロイすることに問題がない旨の意思表示をするために、この質問に Y で応答します。

メッセージ: 認証トークンがありません

API Gateway エンドポイントを呼び出そうとしているときに、以下のエラーが表示されます。

{"message":"Missing Authentication Token"}

これは、正しいドメインにリクエストを送信しようとしたものの、URI を認識できないことを意味します。この問題を解決するには、完全な URL を確認し、正しい URL で curl コマンドを更新します。

警告メッセージ

警告: ... AWSHomebrewインストーラーのメンテナンスは終了 AWS SAM しました...

Homebrew で  AWS SAM CLI をインストールする際、以下の警告メッセージが表示されます。

Warning: ... AWS will no longer maintain the Homebrew installer for AWS SAM (aws/tap/aws-sam-cli). 
				For AWS supported installations, use the first party installers ...
考えられる原因: Homebrew サポートされ AWS なくなりました。

2023 年 9 月以降、 AWS SAMのHomebrewインストーラーは維持 AWS されなくなりますCLI。

解決策: AWS サポートされているインストール方法を使用します。
解決策: Homebrew を引き続き使用するには、コミュニティ管理のインストーラーを使用します。
  • ご自身の判断で、コミュニティ管理の Homebrew インストーラーを使用してください。手順については、「Homebrew で AWS SAM CLI を管理する」を参照してください。