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

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

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

このセクションでは、AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) を使用、インストール、管理する際に、エラーメッセージをトラブルシューティングする方法の詳細を提供します。

トラブルシューティング

AWS SAM CLI 関連のトラブルシューティングのガイダンスについては、「 インストールエラーのトラブルシューティング」を参照してください。

エラーメッセージ

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 SAM CLI が AWS のサービスの呼び出せるようにしていないことを意味します。これを修正するには、AWS 認証情報をセットアップする必要があります。詳細については、「AWS 認証情報のセットアップ」を参照してください。

エラー: Windows の FileNotFoundError

Windows 上の AWS SAM CLI でコマンドを実行する場合に、以下のエラーが表示されることがあります。

Error: FileNotFoundError

考えられる原因: AWS SAM CLI が Windows の最大パス制限を超えるファイルパスを操作している可能性があります。

解決策: この問題を解決するには、新しい長いパスの動作を有効にする必要があります。これを行うには、「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 SAM CLI を使用すると、依存関係リゾルバーエラーが発生します。

解決方法
  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 のバージョンが古くなっている。

AWS SAM CLI sam remote invoke コマンドは、AWS SAM CLI バージョン 1.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」と答えることによって、この状態は望ましくないと伝えることになります。

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

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

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

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

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

{"message":"Missing Authentication Token"}

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

警告メッセージ

警告: AWS では AWS SAM 用Homebrew インストーラーのメンテナンスは行われなくなりました…

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 ...
考えられる原因: AWS が Homebrew サポートのメンテナンスを終了した。

2023 年 9 月以降、AWS では  AWS SAM CLI 用 Homebrew インストーラーのメンテナンスを行いません。

解決策: AWS でサポートされているインストール方法。
解決策: Homebrew を引き続き使用するには、コミュニティ管理のインストーラーを使用します。