AWS CLI エラーのトラブルシューティング
このセクションでは、問題を解決するために従うべき一般的なエラーとトラブルシューティング手順について説明します。最初に、 一般的なトラブルシューティング に従うことをお勧めします。
目次
最初に試す一般的なトラブルシューティング
エラーが発生した場合、または AWS CLI で問題が発生した場合は、トラブルシューティングに役立つ以下の一般的なヒントを参照してください。
AWS CLI コマンドの形式を確認する
コマンドが存在しないことを示すエラー、またはドキュメントに記述されているパラメータ (
Parameter validation failed
) が認識されないことを示すエラーが表示された場合は、コマンドの形式が正しくない可能性があります。以下について確認することをお勧めします。
AWS CLI スケルトン を生成して、コマンド構造を確認します。
JSON については、追加の JSON 値のトラブルシューティング を参照してください。端末の JSON 形式の処理に問題がある場合は、 JSON データを直接 AWS CLI に渡す BLOB を使用して、端末での引用ルールをスキップすることをお勧めします。
特定のコマンドの構造化方法の詳細については、
AWS CLI バージョン 2 リファレンスガイド
最新バージョンの AWS CLI を実行していることを確認する
AWS CLI バージョン 2 リファレンスガイド
AWS CLI のバージョンを更新する方法は、 AWS CLI の最新バージョンを使用してインストールまたは更新を行う で説明されているように最初にインストールした方法によって異なります。
バンドルされたインストーラのいずれかを使用した場合は、オペレーティングシステム用の最新バージョンをダウンロードしてインストールする前に、既存のインストールの削除が必要になる場合があります。
--debug
オプションを使用する
AWS CLI が、すぐに理解できないエラーを報告する場合や、予期しない結果を生成した場合は、
--debug
オプションを指定してコマンドを再度実行すると、エラーの詳細を取得できます。このオプションを使用すると、AWS CLI は、コマンドを処理するために必要な各ステップの詳細を出力します。出力される詳細は、いつエラーが発生し、そのエラーがどこで開始されたかを特定するために役立つヒントを提供します。
この出力は、後で確認できるようテキストファイルに送信するか、求められた場合に AWS Support に送信できます。
--debug
オプションを含める場合、詳細の一部には以下が含まれます。
--debug
オプションを使用した場合と使用しない場合のコマンドの例を次に示します。
$
aws iam list-groups --profile MyTestProfile
"Groups": [ "Path": "/", "GroupName": "MyTestGroup", "GroupId": "AGPA0123456789EXAMPLE", "Arn": "arn:aws:iam::123456789012:group/MyTestGroup", "CreateDate": "2019-08-12T19:34:04Z"
$
aws iam list-groups --profile MyTestProfile --debug
2019-08-12 12:36:18,305 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205 2019-08-12 12:36:18,305 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['iam', 'list-groups', '--debug'] 2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function add_scalar_parsers at 0x7fdf173161e0> 2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function register_uri_param_handler at 0x7fdf17dec400> 2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function inject_assume_role_provider_cache at 0x7fdf17da9378> 2019-08-12 12:36:18,307 - MainThread - botocore.credentials - DEBUG - Skipping environment variable credential check because profile name was explicitly set. 2019-08-12 12:36:18,307 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function attach_history_handler at 0x7fdf173ed9d8> 2019-08-12 12:36:18,308 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/service-2.json 2019-08-12 12:36:18,317 - MainThread - botocore.hooks - DEBUG - Event building-command-table.iam: calling handler <function add_waiters at 0x7fdf1731a840> 2019-08-12 12:36:18,320 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/waiters-2.json 2019-08-12 12:36:18,321 - MainThread - awscli.clidriver - DEBUG - OrderedDict([('path-prefix', <awscli.arguments.CLIArgument object at 0x7fdf171ac780>), ('marker', <awscli.arguments.CLIArgument object at 0x7fdf171b09e8>), ('max-items', <awscli.arguments.CLIArgument object at 0x7fdf171b09b0>)]) 2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_streaming_output_arg at 0x7fdf17316510> 2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_cli_input_json at 0x7fdf17da9d90> 2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function unify_paging_params at 0x7fdf17328048> 2019-08-12 12:36:18,326 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/paginators-1.json 2019-08-12 12:36:18,326 - MainThread - awscli.customizations.paginate - DEBUG - Modifying paging parameters for operation: ListGroups 2019-08-12 12:36:18,326 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_generate_skeleton at 0x7fdf1737eae8> 2019-08-12 12:36:18,326 - MainThread - botocore.hooks - DEBUG - Event before-building-argument-table-parser.iam.list-groups: calling handler <bound method OverrideRequiredArgsArgument.override_required_args of <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>> 2019-08-12 12:36:18,327 - MainThread - botocore.hooks - DEBUG - Event before-building-argument-table-parser.iam.list-groups: calling handler <bound method GenerateCliSkeletonArgument.override_required_args of <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>> 2019-08-12 12:36:18,327 - MainThread - botocore.hooks - DEBUG - Event operation-args-parsed.iam.list-groups: calling handler functools.partial(<function check_should_enable_pagination at 0x7fdf17328158>, ['marker', 'max-items'], {'max-items': <awscli.arguments.CLIArgument object at 0x7fdf171b09b0>}, OrderedDict([('path-prefix', <awscli.arguments.CLIArgument object at 0x7fdf171ac780>), ('marker', <awscli.arguments.CLIArgument object at 0x7fdf171b09e8>), ('max-items', <awscli.customizations.paginate.PageArgument object at 0x7fdf171c58d0>), ('cli-input-json', <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>), ('starting-token', <awscli.customizations.paginate.PageArgument object at 0x7fdf171b0a20>), ('page-size', <awscli.customizations.paginate.PageArgument object at 0x7fdf171c5828>), ('generate-cli-skeleton', <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>)])) 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.path-prefix: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.marker: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.max-items: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.cli-input-json: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.starting-token: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.page-size: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.generate-cli-skeleton: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978> 2019-08-12 12:36:18,329 - MainThread - botocore.hooks - DEBUG - Event calling-command.iam.list-groups: calling handler <bound method CliInputJSONArgument.add_to_call_parameters of <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>> 2019-08-12 12:36:18,329 - MainThread - botocore.hooks - DEBUG - Event calling-command.iam.list-groups: calling handler <bound method GenerateCliSkeletonArgument.generate_json_skeleton of <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>> 2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role 2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity 2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file 2019-08-12 12:36:18,329 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials 2019-08-12 12:36:18,330 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/endpoints.json 2019-08-12 12:36:18,334 - MainThread - botocore.hooks - DEBUG - Event choose-service-name: calling handler <function handle_service_name_alias at 0x7fdf1898eb70> 2019-08-12 12:36:18,337 - MainThread - botocore.hooks - DEBUG - Event creating-client-class.iam: calling handler <function add_generate_presigned_url at 0x7fdf18a028c8> 2019-08-12 12:36:18,337 - MainThread - botocore.regions - DEBUG - Using partition endpoint for iam, us-west-2: aws-global 2019-08-12 12:36:18,337 - MainThread - botocore.args - DEBUG - The s3 config key is not a dictionary type, ignoring its value of: None 2019-08-12 12:36:18,340 - MainThread - botocore.endpoint - DEBUG - Setting iam timeout as (60, 60) 2019-08-12 12:36:18,341 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/_retry.json 2019-08-12 12:36:18,341 - MainThread - botocore.client - DEBUG - Registering retry handlers for service: iam 2019-08-12 12:36:18,342 - MainThread - botocore.hooks - DEBUG - Event before-parameter-build.iam.ListGroups: calling handler <function generate_idempotent_uuid at 0x7fdf189b10d0> 2019-08-12 12:36:18,342 - MainThread - botocore.hooks - DEBUG - Event before-call.iam.ListGroups: calling handler <function inject_api_version_header_if_needed at 0x7fdf189b2a60> 2019-08-12 12:36:18,343 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=ListGroups) with params: {'url_path': '/', 'query_string': '', 'method': 'POST', 'headers': {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205'}, 'body': {'Action': 'ListGroups', 'Version': '2010-05-08'}, 'url': 'https://iam.amazonaws.com/', 'context': {'client_region': 'aws-global', 'client_config': <botocore.config.Config object at 0x7fdf16e9a4a8>, 'has_streaming_input': False, 'auth_type': None}} 2019-08-12 12:36:18,343 - MainThread - botocore.hooks - DEBUG - Event request-created.iam.ListGroups: calling handler <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7fdf16e9a470>> 2019-08-12 12:36:18,343 - MainThread - botocore.hooks - DEBUG - Event choose-signer.iam.ListGroups: calling handler <function set_operation_specific_signer at 0x7fdf18996f28> 2019-08-12 12:36:18,343 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth. 2019-08-12 12:36:18,343 - MainThread - botocore.auth - DEBUG - CanonicalRequest: content-type:application/x-www-form-urlencoded; charset=utf-8 host:iam.amazonaws.com x-amz-date:20190812T193618Z content-type;host;x-amz-date 5f776d91EXAMPLE9b8cb5eb5d6d4a787a33ae41c8cd6eEXAMPLEca69080e1e1f 2019-08-12 12:36:18,344 - MainThread - botocore.auth - DEBUG - StringToSign: AWS4-HMAC-SHA256 20190812T193618Z 20190812/us-east-1/iam/aws4_request ab7e367eEXAMPLE2769f178ea509978cf8bfa054874b3EXAMPLE8d043fab6cc9 2019-08-12 12:36:18,344 - MainThread - botocore.auth - DEBUG - Signature: d85a0EXAMPLEb40164f2f539cdc76d4f294fe822EXAMPLE18ad1ddf58a1a3ce7 2019-08-12 12:36:18,344 - MainThread - botocore.endpoint - DEBUG - Sending http request: <AWSPreparedRequest stream_output=False, method=POST, url=https://iam.amazonaws.com/, headers={'Content-Type': b'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': b'aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205', 'X-Amz-Date': b'20190812T193618Z', 'Authorization': b'AWS4-HMAC-SHA256 Credential=AKIA01234567890EXAMPLE-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=d85a07692aceb401EXAMPLEa1b18ad1ddf58a1a3ce7EXAMPLE', 'Content-Length': '36'}> 2019-08-12 12:36:18,344 - MainThread - urllib3.util.retry - DEBUG - Converted retries value: False -> Retry(total=False, connect=None, read=None, redirect=0, status=None) 2019-08-12 12:36:18,344 - MainThread - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): iam.amazonaws.com:443 2019-08-12 12:36:18,664 - MainThread - urllib3.connectionpool - DEBUG - https://iam.amazonaws.com:443 "POST / HTTP/1.1" 200 570 2019-08-12 12:36:18,664 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amzn-RequestId': '74c11606-bd38-11e9-9c82-559da0adb349', 'Content-Type': 'text/xml', 'Content-Length': '570', 'Date': 'Mon, 12 Aug 2019 19:36:18 GMT'} 2019-08-12 12:36:18,664 - MainThread - botocore.parsers - DEBUG - Response body: b'<ListGroupsResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">\n <ListGroupsResult>\n <IsTruncated>false</IsTruncated>\n <Groups>\n <member>\n <Path>/</Path>\n <GroupName>MyTestGroup</GroupName>\n <Arn>arn:aws:iam::123456789012:group/MyTestGroup</Arn>\n <GroupId>AGPA1234567890EXAMPLE</GroupId>\n <CreateDate>2019-08-12T19:34:04Z</CreateDate>\n </member>\n </Groups>\n </ListGroupsResult>\n <ResponseMetadata>\n <RequestId>74c11606-bd38-11e9-9c82-559da0adb349</RequestId>\n </ResponseMetadata>\n</ListGroupsResponse>\n' 2019-08-12 12:36:18,665 - MainThread - botocore.hooks - DEBUG - Event needs-retry.iam.ListGroups: calling handler <botocore.retryhandler.RetryHandler object at 0x7fdf16e9a780> 2019-08-12 12:36:18,665 - MainThread - botocore.retryhandler - DEBUG - No retry needed. 2019-08-12 12:36:18,665 - MainThread - botocore.hooks - DEBUG - Event after-call.iam.ListGroups: calling handler <function json_decode_policies at 0x7fdf189b1d90> "Groups": [ "Path": "/", "GroupName": "MyTestGroup", "GroupId": "AGPA123456789012EXAMPLE", "Arn": "arn:aws:iam::123456789012:group/MyTestGroup", "CreateDate": "2019-08-12T19:34:04Z"
AWS CLI コマンド履歴ログを有効にして確認します
cli_history
ファイル設定を使用して、AWS CLI コマンド履歴ログを有効にできます。この設定を有効にすると、AWS CLI はaws
コマンドの履歴を記録します。
aws history list
コマンドを使用すると履歴を一覧表示でき、そこから得られた command_id をaws history show
コマンドに使用すると詳細を確認できます。詳細については、AWS CLI リファレンスガイドの「aws history
」を参照してください。
--debug
オプションを含める場合、詳細の一部には以下が含まれます。リターンコード
この情報を使用すると、パラメータデータと API 呼び出しが期待どおりに動作していることを確認でき、さらにプロセスのどの段階でコマンドが失敗しているかの推測を行えます。
AWS CLI が設定済みであることを確認する
config
およびcredentials
ファイル、または IAM ユーザーやロールが正しく設定されていない場合、さまざまなエラーが発生する可能性があります。config
およびcredentials
ファイル、または IAM ユーザーやロールに関するエラーを解決する方法の詳細については、「アクセス拒否エラー」および「無効な認証情報とキーエラー」を参照してください。コマンドが見つからないエラー
このエラーは、オペレーティングシステムによって AWS CLI コマンドが見つからないことを意味します。インストールが不完全であるか、更新が必要な可能性があります。
エラーの例:
$
aws s3 copy
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help
aws: error: argument subcommand: Invalid choice, valid choices are:
ls | website cp | mvコマンドの形式が正しくない場合や、機能がリリースされる前のバージョンを使用している場合は、さまざまなエラーが発生する可能性があります。これら 2 つの問題のエラーの解決方法の詳細については、「AWS CLI コマンドの形式を確認する」および「最新バージョンの AWS CLI を実行していることを確認する」を参照してください。
考えられる原因: インストール後に端末を再起動する必要がある エラーの例:
$
aws --version
command not found: aws
AWS CLI を最初にインストールまたは更新した後、
aws
コマンドが見つからない場合は、PATH
の更新を認識させるため、端末の再起動が必要な場合があります。考えられる原因: AWS CLI が完全にインストールされなかった エラーの例:
$
aws --version
command not found: aws
最初に AWS CLI をインストールまたは更新した後、
aws
コマンドが見つからない場合、完全にインストールされていない可能性があります。「AWS CLI の最新バージョンを使用してインストールまたは更新を行う」に記載された、プラットフォーム用のステップに従って、再インストールを試してください。考えられる原因: AWS CLI にアクセス権限がありません (Linux) Linux で AWS CLI の初回インストールまたは更新の後、
aws
コマンドが見つからない場合は、インストールされたフォルダに関するexecute
権限を持っていない可能性があります。AWS CLI をインストールした場所へのPATH
とともに以下のコマンドを実行し、AWS CLI にchmod
権限を提供します。
$
sudo chmod -R 755
/usr/local/aws-cli/
考えられる原因: インストール中にオペレーティングシステムの PATH
が更新されなかった。エラーの例:
$
aws --version
command not found: aws
オペレーティングシステムの
aws
環境変数へのPATH
実行ファイルの追加が必要になる場合があります。AWS CLI をPATH
に追加する場合は、オペレーティングシステム用の次の手順を使用します。Linux and macOS ユーザーディレクトリでシェルのプロファイルスクリプトを見つけます。現在使用しているシェルが不明な場合は、
echo $SHELL
を実行します。
$
ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads
プロファイルスクリプトにエクスポートコマンドを追加します。次のコマンドは、local の bin を現在の
PATH
変数に追加します。
export PATH=
/usr/local/bin
:$PATH現在のセッションに更新されたプロファイルをリロードします。
$
source ~/
.bash_profile
Windows Windows コマンドプロンプトで、
/R
パラメータ でpath
where
コマンドを使用して検索するaws
ファイルの場所を検索します。結果には、aws
を含むすべてのフォルダを返します。
C:\>
where /R c:\ aws
c:\Program Files\Amazon\AWSCLIV2\aws.exeデフォルトでは、AWS CLI バージョン 2 は次の場所にあります。
c:\Program Files\Amazon\AWSCLIV2\aws.exe
Windows キーを押し、「
environment variables
」と入力します。候補のリストから、[Edit environment variables for your account] (アカウントの環境変数を編集する) を選択します。
PATH を選択して、編集 を選択します。
最初のステップで見つかったパスを [Variable value] (変数値) フィールドに追加します (例:
)。
C:\Program Files\Amazon\AWSCLIV2\aws.exe
[OK] を 2 回選択して、新しい設定を適用します。
実行中のコマンドプロンプトを閉じ、コマンドプロンプトウィンドウを再度開きます。
考えられる原因: インストール後に端末を再起動する必要がある
aws
コマンドで間違ったバージョンが表示される場合は、PATH
の更新を認識させるため、端末の再起動が必要である場合があります。アクティブなターミナルだけでなく、開いているすべてのターミナルを閉じる必要があります。考えられる原因: インストール後にシステムを再起動する必要がある
aws
コマンドで間違ったバージョンが表示される場合は、PATH
の更新を認識させるため、ターミナルの再起動が必要である場合があります。考えられる原因: AWS CLI の複数のバージョンがある AWS CLI を更新し、以前のインストールとは異なるインストール方法を使用した場合、複数のバージョンがインストールされる可能性があります。例えば、Linux や macOS の場合、現在のインストールでは
pip
を使用したが、.pkg
インストールファイルを使用して更新を試みた場合 (特にPATH
が古いバージョンを指している場合)、これにより何らかの競合が発生する可能性があります。この問題を解決するには、AWS CLI のすべてのバージョンをアンインストールして、クリーンインストールを実行します。
すべてのバージョンをアンインストールした後、オペレーティングシステム用の手順に従って、AWS CLI バージョン 1 またはAWS CLI バージョン 2 の目的のバージョンをインストールします。
注記
AWS CLI バージョン 1 が既にインストールされている場合に、AWS CLI バージョン 2 をインストールした後でこの問題が発生したときは、「 から移行する際のインストール手順AWS CLI バージョン 2 の移行手順」の移行手順に従います。
AWS CLI のアンインストール後に、「
aws --version
」コマンドがバージョンを返すこれは、システムのどこかにまだ AWS CLI がインストールされている場合によく発生します。
考えられる原因: アンインストール後に端末を再起動する必要がある
aws --version
コマンドがまだ機能する場合は、端末の更新を認識させるため、端末の再起動が必要な場合があります。 考えられる原因: システムに複数のバージョンの AWS CLI が存在する、または、AWS CLI を最初にインストールしたときと同じアンインストール方法を使用しなかったインストールに使用した方法とは異なる方法を使用して AWS CLI をアンインストールするか、複数のバージョンをインストールした場合、AWS CLI は正しくアンインストールされない可能性があります。例えば、現在のインストールに
pip
を使用した場合は、pip
を使用してアンインストールする必要があります。これを解決するには、インストールに使用したのと同じ方法を使用して、AWS CLI をアンインストールします。オペレーティングシステム用の手順、および AWS CLI バージョン 1 と AWS CLI バージョン 2 をアンインストールするための元のインストール方法に従います。
開いているターミナルをすべて閉じます。
目的の端末を開き、次のコマンドを入力して、バージョンが返されないことを確認します。
$
aws --version
command not found: aws
出力にまだバージョンが表示されている場合は、おそらく AWS CLI が異なる方法でインストールされたか、複数のバージョンが存在します。AWS CLI をインストールするのにどの方法を使用したかわからない場合は、バージョンが出力されなくなるまで、オペレーティングシステム用の、AWS CLI バージョン 1 および AWS CLI バージョン 2 の各アンインストール方法の手順に従います。
注記
パッケージマネージャーを使用して AWS CLI をインストールした場合 (
pip
、apt
、brew
など)は、同じパッケージマネージャーを使用してアンインストールする必要があります。パッケージのすべてのバージョンをアンインストールする方法については、パッケージマネージャーの手順に従ってください。AWS CLI が不完全なパラメータ名を使用してコマンドを処理しました
考えられる原因: AWS CLI パラメータの認識されている省略形を使用しました AWS CLI は Python を使用して構築されているため、AWS CLI は
allow_abbrev
引数を含む Python の argparse
ライブラリを使用します。パラメータの省略形は AWS CLI によって認識され、処理されます。次の
create-change-set
コマンドの例は、CloudFormation スタック名を変更します。パラメータ --change-set-n
は--change-set-name
の省略形として認識されるため、AWS CLI はこのコマンドを処理します。
$
aws cloudformation create-change-set --stack-name my-stack
--change-set-n
my-change-set省略形が複数のコマンドに該当する場合、パラメータは省略形として認識されません。
次の
create-change-set
コマンドの例は、CloudFormation スタック名を変更します。パラメータ --change-set-
は、省略形として認識されません。これは、--change-set-name
や--change-set-type
など、複数のパラメータに該当する場合があるためです。したがって、AWS CLI はこのコマンドを処理しません。
$
aws cloudformation create-change-set --stack-name my-stack
--change-set-
my-change-set警告
パラメータの省略形を意図的に使用しないでください。これらは信頼性が低く、下位互換性もありません。省略形の混乱を生じるような新しいパラメータをコマンドに追加すると、コマンドが壊れてしまいます。
さらに、パラメータが単一値の引数である場合、コマンドで予期しない動作が発生する可能性があります。単一値の引数のインスタンスを複数渡すと、最後のインスタンスのみが実行されます。次の例で、パラメータ
--filters
は単一値の引数です。パラメータ--filters
とパラメータ--filter
が指定されています。--filter
パラメータは--filters
の省略形です。これにより、--filters
のインスタンスが 2 つ適用されることになるため、最後の--filter
引数のみが実行されます。
$
aws ec2 describe-vpc-peering-connections \
--filters
Name=tag:TagName,Values=VpcPeeringConnection \--filter
Name=status-code,Values=active予期しない動作を防ぐために、コマンドを実行する前に有効なパラメータを使用していることを確認してください。
アクセス拒否エラー
考えられる原因: AWS CLI プログラムファイルに「実行」許可がない Linux または macOS で、
aws
プログラムに呼び出し元ユーザーの実行許可があることを確認します。通常、この権限は755
に設定されます。ユーザーに実行権限を付与するには、
~/.local/bin/aws
をご使用のコンピュータのプログラムへのパスに置き換えて、以下のコマンドを実行します。
$
chmod +x
~/.local/bin/aws
考えられる原因: IAM ID にオペレーションを実行する許可がない。 エラーの例:
$
aws s3 ls
An error occurred (AcessDenied) when calling the ListBuckets operation: Access denied.
AWS CLI コマンドを実行すると、ユーザーを IAM アカウントまたはロールに関連付ける認証情報を使用して、AWS オペレーションがユーザーに代わって実行されます。アタッチされたポリシーは、AWS CLI で実行するコマンドに対応する API アクションを呼び出す許可をユーザーに付与する必要があります。
ほとんどのコマンドは、コマンド名と一致する名前を指定して 1 つのアクションを呼び出します。ただし、
aws s3 sync
などのカスタムコマンドは複数の API を呼び出します。--debug
オプションを使用して、コマンドが呼び出す API を確認できます。ユーザーまたはロールにポリシーによって割り当てられた適切な許可があることが確実である場合は、AWS CLI コマンドで想定した認証情報が使用されていることを確認します。AWS CLI が使用している認証情報が想定どおりのものであることを確認するには、認証情報に関する次のセクションを参照してください。
IAM アクセス許可の割り当ての詳細については、「IAM ユーザーガイド」の「アクセス管理の概要: アクセス許可とポリシー」を参照してください。
無効な認証情報とキーエラー
エラーの例:
$
aws s3 ls
An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.
$
aws s3 ls
An error occurred (InvalidClientTokenId) when calling the ListBuckets operation: The security token included in the request is invalid.
考えられる原因: AWS CLI が不正な認証情報を読み取っている、または想定外の場所から読み取っている AWS CLI が想定外の場所から認証情報を読み取っているか、キーペア情報が正しくない可能性があります。
aws configure list
を実行して、使用される認証情報を確認することができます。次の例は、デフォルトのプロファイルに使用される認証情報をチェックする方法を示しています。
$
aws configure list
Name Value Type Location ---- ----- ---- -------- profile <not set> None None access_key ****************XYVA shared-credentials-file secret_key ****************ZAGY shared-credentials-file region us-west-2 config-file ~/.aws/config
次の例は、名前付きプロファイルの認証情報をチェックする方法を示しています。
$
aws configure list --profile saanvi
Name Value Type Location ---- ----- ---- -------- profile saanvi manual --profile access_key **************** shared-credentials-file secret_key **************** shared-credentials-file region us-west-2 config-file ~/.aws/config
キーペアの詳細を確認するには、
config
およびcredentials
ファイルを確認します。config
ファイルとcredentials
ファイルの詳細については、「設定ファイルと認証情報ファイルの設定」を参照してください。認証情報の優先順位を含む、認証情報と認証の詳細については、「認証とアクセス認証情報」を参照してください。考えられる原因: コンピュータのクロックが同期していない 有効な認証情報を使用している場合は、クロックが同期していない可能性があります。Linux または macOS では、
date
を実行して時刻を確認します。
$
date
システムクロックのずれが数分以内の場合は、
ntpd
を使用して同期します。
$
sudo service ntpd stop
$
sudo ntpdate time.nist.gov
$
sudo service ntpd start
$
ntpstat
Windows では、コントロールパネルで日付と時刻オプションを使用してシステムクロックを設定します。
署名がエラーと一致しない
エラーの例:
$
aws s3 ls
An error occurred (SignatureDoesNotMatch) when calling the ListBuckets operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.
AWS CLI がコマンドを実行する際、暗号化されたリクエストを AWS サーバーに送信して、適切な AWS サービスオペレーションを実行します。認証情報 (アクセスキーとシークレットキー) は暗号化に関与し、リクエストを行うユーザーを AWS が認証できるようにします。このプロセスが正しく行われない原因には、次のようにいくつかあります。
考えられる原因: 時刻が AWS サーバーと同期していない リプレイ攻撃
への保護対策として、現在の時刻を暗号化/復号プロセス中に使用できます。クライアントとサーバーの時間に許容範囲外の差がある場合、プロセスが失敗し、リクエストが拒否される可能性があります。このエラーは、クロックがホストマシンのクロックと同期していない仮想マシンでコマンドを実行した場合にも発生します。考えられる原因の 1 つは、仮想マシンが休止した後、ウェイクアップしてからホストマシンとクロックを同期するまで時間がかかる場合です。 Linux または macOS では、
date
を実行して時刻を確認します。
$
date
システムクロックのずれが数分以内の場合は、
ntpd
を使用して同期します。
$
sudo service ntpd stop
$
sudo ntpdate time.nist.gov
$
sudo service ntpd start
$
ntpstat
Windows では、コントロールパネルで日付と時刻オプションを使用してシステムクロックを設定します。
考えられる原因: オペレーティングシステムが特定の特殊文字を含む AWS キーを誤って処理している AWS キーに
-
、+
、/
、%
などの特定の特殊文字が含まれている場合、一部のオペレーティングシステムバリアントで文字列が適切に処理されず、キーの文字列が誤って解釈される原因になります。他のツールやスクリプト (作成時に認証情報ファイルを新しいインスタンス上に構築するツールなど) を使用してキーを処理する場合、これらのツールやスクリプトでは特殊文字に独自の処理が行われ、AWS によって認識できないものに変換される可能性があります。
シークレットキーを再生成して、問題の発生原因となっている特殊文字を含まないキーを取得することをお勧めします。
SSL 証明書のエラー
$
aws s3 ls
[SSL: CERTIFICATE_ VERIFY_FAILED] certificate verify failed
AWS CLI コマンドを使用すると、
[SSL: CERTIFICATE_ VERIFY_FAILED] certificate verify failed
というエラーメッセージが表示されます。これは、企業が認定機関 (CA) に設定されており、プロキシの証明書が自己署名されているなどの要因により、AWS CLI がプロキシの証明書を信頼していないことが原因です。これにより、AWS CLI はローカル CA レジストリにある企業の CA ルート証明書を検索できません。この問題を解決するには、
ca_bundle
設定ファイルの設定、--ca-bundle コマンドラインオプション、またはAWS_CA_BUNDLE
環境変数を使用して、AWS CLI に企業ファイル.pem
の場所を指示します。考えられる原因: 設定が正しい CA ルート証明書の場所を指していない エラーの例:
$
aws s3 ls
SSL validation failed for
regionname
[Errno 2] No such file or directoryこれは、認証局 (CA) バンドルファイルの場所が、AWS CLI で正しく設定されていないことによって発生します。この問題を解決するには、企業の
.pem
ファイルの場所を確認し、ca_bundle
設定ファイルの設定、--ca-bundle コマンドラインオプション、またはAWS_CA_BUNDLE
環境変数を使用して、AWS CLI の設定を更新します。無効な JSON エラー
エラーの例:
$
aws dynamodb update-table \ --provisioned-throughput
'{"ReadCapacityUnits":15,WriteCapacityUnits":10}'
\ --table-name MyDDBTableError parsing parameter '--provisioned-throughput': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 25 (char 24) JSON received: {"ReadCapacityUnits":15,WriteCapacityUnits":10}
AWS CLI コマンドを使用すると、「
Invalid JSON
」というエラーメッセージが表示されます。これは通常、想定される JSON 形式のコマンドを入力し、AWS CLI が JSON を正しく読み取れないときに発生するエラーです。考えられる原因: AWS CLI が使用する有効な JSON を入力しなかった コマンドに有効な JSON を入力していることを確認します。形式に問題がある JSON には JSON バリデータを使用することをお勧めします。
コマンドラインでより高度な JSON を使用するには、
jq
のようなコマンドライン JSON プロセッサを使用して JSON 文字列を作成することを検討してください。jq
の詳細については、GitHub の jq repositoryを参照してください。 考えられる原因: ターミナルの引用ルールにより、有効な JSON がAWS CLI に送信されなくなっている AWS CLI がコマンドから何かを受け取る前に、ターミナルは独自の引用とエスケープのルールを使用してコマンドを処理します。ターミナルの書式ルールにより、コマンドが AWS CLI に渡される前に JSON コンテンツの一部が省かれている可能性があります。コマンドを作成するときは、必ずターミナルの引用ルールを使用してください。
トラブルシューティングを行うには、
echo
コマンドを使用して、シェルがパラメータをどのように処理しているかを確認します。
$
echo {"ReadCapacityUnits":15,"WriteCapacityUnits":10}
ReadCapacityUnits:15 WriteCapacityUnits:10
$
echo '{"ReadCapacityUnits":15,"WriteCapacityUnits":10}'
{"ReadCapacityUnits":15,"WriteCapacityUnits":10}
有効な JSON が返されるまでコマンドを変更します。
詳細なトラブルシューティングについては、
--debug
パラメータを使用して、AWS CLI に渡された内容を正確に表示するデバッグログを表示します。
$
aws dynamodb update-table \ --provisioned-throughput
'{"ReadCapacityUnits":15,WriteCapacityUnits":10}'
\ --table-name MyDDBTable \ --debug2022-07-19 22:25:07,741 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.196-119.356.amzn2int.x86_64 botocore/1.18.6 2022-07-19 22:25:07,741 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['dynamodb', 'update-table', '--provisioned-throughput', '{"ReadCapacityUnits":15,WriteCapacityUnits":10}', '--table-name', 'MyDDBTable', '--debug']
ターミナルの引用ルールを使用して、AWS CLI に送信されるときに JSON 入力で発生する問題を修正します。引用ルールの詳細については、「AWS CLI での文字列の引用符」を参照してください。
注記
有効な JSON を AWS CLI に渡す際に問題が発生する場合は、BLOB を使用して JSON データを直接 AWS CLI に渡すことにより、JSON データ入力に関するターミナルの引用ルールをバイパスすることをお勧めします。BLOB の詳細については、「blob」を参照してください。