

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

# AWS SAMCLI トラブルシューティング
<a name="sam-cli-troubleshooting"></a>

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

**Topics**
+ [

## トラブルシューティング
](#install-sam-cli-troubleshooting)
+ [

## エラーメッセージ
](#sam-cli-troubleshoot-messages)
+ [

## 警告メッセージ
](#sam-cli-troubleshoot-warning)

## トラブルシューティング
<a name="install-sam-cli-troubleshooting"></a>

に関連するトラブルシューティングガイダンスについては AWS SAM CLI、「」を参照してください[インストールエラーのトラブルシューティング](install-sam-cli.md#sam-cli-troubleshoot-install)。

## エラーメッセージ
<a name="sam-cli-troubleshoot-messages"></a>

### Curl エラー: 「curl: (6) Could not resolve: ...」
<a name="sam-cli-troubleshoot-messages-curl"></a>

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

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

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

### エラー: 指定されたスタック名で正確なリソース情報を見つけることができません
<a name="sam-cli-troubleshoot-messages-exact-resource"></a>

単一の 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\"}"}%
```

### エラー: スタック名からリソース情報を見つけることができません
<a name="sam-cli-troubleshoot-messages-stack-name"></a>

`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` を実行します。

### エラー:「マネージドリソースの作成に失敗しました。認証情報が見つかりません」
<a name="sam-cli-troubleshoot-messages-credentials"></a>

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

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

つまり、 が AWS サービスコールを実行できるように AWS AWS SAM CLI認証情報を設定していません。これを修正するには、 AWS 認証情報を設定する必要があります。詳細については、「[AWS 認証情報の設定](serverless-getting-started-set-up-credentials.md)」を参照してください。

### エラー: Windows の FileNotFoundError
<a name="sam-cli-troubleshoot-messages-filenotfound-win"></a>

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

```
Error: FileNotFoundError
```

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

解決策: この問題を解決するには、新しい長いパスの動作を有効にする必要があります。これを行うには、「Windows アプリの開発に関するドキュメント」の「[Windows 10、バージョン 1607 以降で長いパスを有効にする](https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=powershell#enable-long-paths-in-windows-10-version-1607-and-later)」を参照してください。

### エラー: pip の依存関係リゾルバー...
<a name="sam-cli-troubleshoot-messages-pip"></a>

エラーの例:

```
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 のアンインストール](manage-sam-cli-versions.md#manage-sam-cli-versions-uninstall)」を参照してください。

   1. ネイティブパッケージインストーラーを使用して AWS SAM CLI をインストールします。手順については、「[AWS SAM CLI のインストール](install-sam-cli.md)」を参照してください。

   1. 必要に応じて、ネイティブパッケージインストーラーを使用して AWS SAM CLI をアップグレードします。手順については、「[AWS SAM CLI のアップグレード](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade)」を参照してください。

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

### エラー: 「remote」というコマンドはありません
<a name="sam-cli-troubleshoot-messages-command-remote"></a>

`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 SAM CLI1.88.0 で AWS SAM CLIリリースされました。バージョンは、`sam --version` コマンドを実行することで確認できます。

**解決策: AWS SAM CLI を最新バージョンにアップグレードする。**  
手順については、「[AWS SAM CLI のアップグレード](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade)」を参照してください。

### エラー: SAM AWS プロジェクトをローカルで実行するには、 が必要ですDocker。インストールしましたか?
<a name="sam-cli-troubleshoot-messages-docker"></a>

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

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

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

### エラー:「セキュリティの制約に準拠していません」
<a name="sam-cli-troubleshoot-messages-security-constraints"></a>

**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 アクセスを制御する](serverless-controlling-access-to-apis.md)」を参照してください。
+ 認可なしで API エンドポイントにパブリックにアクセスできるようにすることが目的の場合は、デプロイを再起動し、デプロイすることに問題がない旨の意思表示をするために、この質問に **Y** で応答します。

### メッセージ: 認証トークンがありません
<a name="sam-cli-troubleshoot-messages-auth-token"></a>

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

```
{"message":"Missing Authentication Token"}
```

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

## 警告メッセージ
<a name="sam-cli-troubleshoot-warning"></a>

### 警告: ... AWS はHomebrewインストーラを維持しなくなります AWS SAM 。
<a name="sam-cli-troubleshoot-warning-homebrew"></a>

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 は のHomebrewインストーラーを維持しなくなります AWS SAM CLI。  

**解決策: AWS サポートされているインストール方法を使用します。**
+  AWS サポートされているインストール方法については、「」を参照してください[AWS SAM CLI のインストール](install-sam-cli.md)。

**解決策: Homebrew を引き続き使用するには、コミュニティ管理のインストーラーを使用します。**
+ ご自身の判断で、コミュニティ管理の Homebrew インストーラーを使用してください。手順については、「[Homebrew で  AWS SAM CLI を管理する](manage-sam-cli-versions.md#manage-sam-cli-versions-homebrew)」を参照してください。