에 대한 오류 해결 AWS CLI - AWS Command Line Interface

이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에 대한 오류 해결 AWS CLI

이 섹션에서는 문제를 해결하기 위해 따라야 할 일반적인 오류와 문제 해결 단계를 다룹니다. 먼저 일반 문제 해결을 따르는 것이 좋습니다.

먼저 시도해야 할 일반적인 문제 해결

오류가 발생하거나 에 문제가 발생하는 경우 AWS CLI문제를 해결하는 데 도움이 되는 다음과 같은 일반적인 팁을 권장합니다.

맨 위로 이동

AWS CLI 명령 형식 확인

명령이 존재하지 않는다는 오류가 발생하거나 명령이 설명서에서 사용 가능하다고 나열된 파라미터(Parameter validation failed)를 인식하지 못하는 오류가 발생할 경우 명령 형식이 잘못되었을 수 있습니다. 다음을 확인하는 것이 좋습니다.

특정 명령을 구성하는 방법에 대한 자세한 내용은 AWS CLI 참조 가이드 를 참조하세요.

맨 위로 이동

AWS CLI 명령이 사용 중인 AWS 리전 지 확인

참고

를 사용할 AWS 리전 때 명시적으로 AWS CLI또는 기본 리전을 설정하여 를 지정해야 합니다. 지정할 수 AWS 리전 있는 모든 의 목록은 의 AWS 리전 및 엔드포인트를 참조하세요Amazon Web Services 일반 참조. 에서 사용하는 AWS 리전 지정자는 및 서비스 엔드포인트에 AWS Management Console URLs 표시되는 것과 동일한 이름 AWS CLI 입니다.

지정된 에 를 사용할 수 AWS 서비스 없거나 리소스가 다른 에 있는 경우 오류 AWS 리전 또는 예상치 못한 결과가 발생할 수 있습니다 AWS 리전. 우선 순위에 따라 AWS 리전 는 다음과 같은 방식으로 설정됩니다.

리소스에 AWS 리전 올바른 를 사용하고 있는지 확인합니다.

맨 위로 이동

최신 버전의 AWS CLI를 실행 중인지 확인합니다.

명령이 존재하지 않거나 AWS CLI 참조 가이드 에서 사용할 수 있다고 말하는 파라미터를 인식하지 못한다는 오류가 발생하면 먼저 명령의 형식이 올바른지 확인합니다. 형식이 올바른 경우 AWS CLI의 최신 버전으로 업그레이드하는 것이 좋습니다. 의 업데이트된 버전 AWS CLI 은 거의 모든 영업일에 릴리스됩니다. 새로운 AWS 서비스, 기능 및 파라미터가 이러한 새 버전의 에 도입되었습니다 AWS CLI. 새로운 서비스, 기능 또는 파라미터에 액세스할 수 있는 유일한 방법은 해당 요소가 도입된 이후 릴리스된 버전으로 업그레이드하는 것입니다.

의 버전을 업데이트하는 방법은 에 설명된 대로 를 처음 설치한 방법에 AWS CLI 따라 달라집니다설치, 업데이트 및 제거 AWS CLI.

번들 설치 관리자 중 하나를 사용한 경우 운영 체제에 적합한 최신 버전을 다운로드하여 설치하기 전에 기존 설치를 제거해야 할 수 있습니다.

맨 위로 이동

--debug 옵션 사용

가 즉시 이해하지 못하는 오류를 AWS CLI 보고하거나 예상치 못한 결과를 생성하면 --debug 옵션을 사용하여 명령을 다시 실행하여 오류에 대한 자세한 내용을 확인할 수 있습니다. 이 옵션을 사용하면 AWS CLI 가 명령을 처리하는 데 필요한 모든 단계에 대한 세부 정보를 출력합니다. 출력에 있는 세부 정보를 통해 오류가 언제 발생했고 어디서 시작되었는지에 대한 단서를 확인할 수 있습니다.

이후 검토를 위해 출력을 텍스트 파일로 보내거나 요청이 있을 때 출력을 AWS Support 에 보낼 수 있습니다.

--debug 옵션을 포함하면 다음과 같은 세부 정보가 포함됩니다.

  • 보안 인증 검색

  • 제공된 파라미터 구문 분석

  • AWS 서버로 전송된 요청 구성

  • 로 전송된 요청의 내용 AWS

  • 원시 응답의 내용

  • 형식이 지정된 출력

다음은 --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: POST / 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 명령 기록을 AWS CLI 기록합니다.

이 기록을 나열하려면 aws history list 명령을 사용하고 세부 정보를 보려면 aws history show 명령에 결과 command_ids를 사용할 수 있습니다. 자세한 내용은 AWS CLI 참조 가이드aws history 섹션을 참조하세요.

--debug 옵션을 포함하면 다음과 같은 세부 정보가 포함됩니다.

  • API botocore 호출

  • 상태 코드

  • HTTP 응답

  • 헤더

  • 반환 코드

이 정보를 사용하여 파라미터 데이터와 API 호출이 예상대로 작동하는지 확인한 다음 명령이 실패하는 프로세스의 단계를 추론할 수 있습니다.

맨 위로 이동

AWS CLI 가 구성되었는지 확인

configcredentials 파일 또는 IAM 사용자 또는 역할이 올바르게 구성되지 않은 경우 다양한 오류가 발생할 수 있습니다. configcredentials 파일 또는 IAM 사용자 또는 역할의 오류 해결에 대한 자세한 내용은 액세스 거부 오류 및 섹션을 참조하세요잘못된 보안 인증 정보 및 키 오류.

맨 위로 이동

명령을 찾을 수 없음 오류

이 오류는 운영 체제가 AWS CLI 명령을 찾을 수 없음을 의미합니다. 설치가 불완전하거나 업데이트가 필요할 수 있습니다.

가능한 원인: 설치된 버전보다 최신 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 ....

명령의 형식이 잘못되었거나 기능이 릴리스되기 전의 이전 버전을 사용하는 경우 여러 가지 오류가 발생할 수 있습니다. 이 두 가지 문제를 해결하는 방법에 대한 자세한 내용은 AWS CLI 명령 형식 확인최신 버전의 AWS CLI를 실행 중인지 확인합니다. 섹션을 참조하세요.

맨 위로 이동

가능한 원인: 설치 후 터미널을 다시 시작해야 함

오류 텍스트 예:

$ aws --version command not found: aws

를 처음 설치하거나 업데이트한 후 aws 명령을 찾을 수 없는 경우 AWS CLI업데이트를 인식하려면 터미널을 다시 시작해야 할 수 있습니다PATH.

맨 위로 이동

가능한 원인: 이 완전히 설치되지 AWS CLI 않음

오류 텍스트 예:

$ aws --version command not found: aws

를 처음 설치하거나 업데이트한 후 aws 명령을 찾을 수 없는 경우 완전히 설치되지 않았을 AWS CLI수 있습니다. 플랫폼에 해당하는 설치, 업데이트 및 제거 AWS CLI 단계에 따라 다시 설치해 봅니다.

맨 위로 이동

가능한 원인: AWS CLI 에 권한이 없음(Linux)

AWS CLI Linux에 를 처음 설치하거나 업데이트한 후 aws 명령을 찾을 수 없는 경우 설치된 폴더에 대한 execute 권한이 없을 수 있습니다. AWS CLI 설치에 를 사용하여 다음 명령을 실행PATH하여 에 chmod 권한을 부여합니다 AWS CLI.

$ sudo chmod -R 755 /usr/local/aws-cli/

맨 위로 이동

가능한 원인: 설치하는 동안 운영 체제 PATH가 업데이트되지 않음

오류 텍스트 예:

$ aws --version command not found: aws

aws 실행 파일을 운영 체제의 PATH 환경 변수에 추가해야 할 수 있습니다. 를 AWS CLI 에 추가하려면 운영 체제에 대해 다음 지침을 PATH사용합니다.

Linux and macOS
  1. 사용자 디렉터리에서 셸의 프로파일 스크립트를 찾습니다. 어떤 셸을 가지고 있는지 잘 모르는 경우 echo $SHELL을 실행합니다.

    $ ls -a ~ . .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads
    • Bash - .bash_profile, .profile 또는 .bash_login

    • Zsh.zshrc

    • Tcsh - .tcshrc, .cshrc 또는 .login

  2. 내보내기 명령을 프로필 스크립트에 추가하세요. 다음 명령은 현재 PATH 변수에 로컬 bin을 추가합니다.

    export PATH=/usr/local/bin:$PATH
  3. 현재 세션에 업데이트된 프로파일을 다시 로드합니다.

    $ source ~/.bash_profile
Windows
  1. Windows 명령 프롬프트에서 where 명령을 /R path 파라미터와 함께 사용하여 aws 파일 위치를 찾습니다. aws를 포함한 모든 폴더가 반환됩니다.

    C:\> where /R c:\ aws c:\Program Files\Amazon\AWSCLIV2\aws.exe ...

    기본적으로 AWS CLI 버전 2는 다음 위치에 있습니다.

    c:\Program Files\Amazon\AWSCLIV2\aws.exe
  2. Windows 키를 누르고 environment variables를 입력하세요.

  3. 제안 목록에서 Edit environment variables for your account를 선택합니다.

  4. PATH를 선택한 다음 편집을 선택합니다.

  5. 첫 번째 단계에서 찾은 경로(예: C:\Program Files\Amazon\AWSCLIV2\aws.exe)를 Variable value 필드에 추가합니다.

  6. 확인을 두 번 선택하여 새 설정을 적용합니다.

  7. 실행 중인 명령 프롬프트를 모두 닫았다가 명령 프롬프트 창을 다시 엽니다.

맨 위로 이동

'aws --version' 명령이 설치한 버전과 다른 버전을 반환함

터미널이 예상 AWS CLI 과 다른 에 PATH 대해 를 반환할 수 있습니다.

가능한 원인: 설치 후 터미널을 다시 시작해야 함

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 버전 1에서 마이그레이션할 때 설치 지침 의 마이그레이션 지침을 따릅니다.

맨 위로 이동

aws --version” 명령은 를 제거한 후 버전을 반환합니다. AWS CLI

이는 시스템에 가 아직 AWS CLI 설치되어 있을 때 발생하는 경우가 많습니다.

가능한 원인: 제거 후 터미널을 다시 시작해야 함

aws --version 명령이 여전히 작동하는 경우 터미널 업데이트를 인식하도록 터미널을 다시 시작해야 할 수 있습니다.

맨 위로 이동

가능한 원인: AWS CLI 시스템에 여러 버전의 가 있거나 원래 설치에 사용한 것과 동일한 제거 방법을 사용하지 않았습니다. AWS CLI

설치에 사용한 것과 다른 방법을 AWS CLI 사용하여 를 제거하거나 여러 버전을 설치한 경우 가 올바르게 제거되지 AWS CLI 않을 수 있습니다. 예를 들어 현재 설치에 pip를 사용한 경우 pip를 사용하여 제거해야 합니다. 이 문제를 해결하려면 설치에 사용한 것과 동일한 방법을 AWS CLI 사용하여 를 제거합니다.

  1. 운영 체제 및 원래 설치 방법에 해당하는 지침을 따라 AWS CLI 버전 1AWS CLI 버전 2를 제거합니다.

  2. 열려 있는 터미널을 모두 닫습니다.

  3. 원하는 터미널을 열고 다음 명령에 입력한 후 버전이 반환되지 않는지 확인합니다.

    $ aws --version command not found: aws

    출력에 여전히 버전이 나열된 경우 가 다른 방법을 사용하여 설치 AWS CLI 되었거나 버전이 여러 개 있을 가능성이 높습니다. 를 설치한 메서드를 모르는 경우 AWS CLI버전 출력이 수신되지 않을 때까지 운영 체제에 적합한 AWS CLI 버전 1AWS CLI 버전 2의 각 제거 메서드에 대한 지침을 따릅니다.

    참고

    패키지 관리자를 사용하여 AWS CLI (pip, apt, brew 등)를 설치한 경우 동일한 패키지 관리자를 사용하여 제거해야 합니다. 모든 버전의 패키지를 제거하는 방법에 대해 패키지 관리자가 제공하는 지침을 따르세요.

맨 위로 이동

이 불완전한 파라미터 이름을 가진 명령을 AWS CLI 처리했습니다.

가능한 원인: AWS CLI 파라미터의 알려진 약어를 사용했습니다.

AWS CLI 는 Python을 사용하여 구축되므로 는 allow_abbrev 인수를 포함하여 Python argparse 라이브러리를 AWS CLI 사용합니다. 파라미터의 약어는 에서 인식하고 AWS CLI 처리합니다.

다음 create-change-set 명령 예제는 CloudFormation 스택 이름을 변경합니다. 파라미터는 의 약어로 인식되며 --change-set-name--change-set-n는 명령을 AWS CLI 처리합니다.

$ aws cloudformation create-change-set --stack-name my-stack --change-set-n my-change-set

약어가 여러 명령일 수 있는 경우 파라미터는 약어로 인식되지 않습니다.

다음 create-change-set 명령 예제는 CloudFormation 스택 이름을 변경합니다. --change-set-name--change-set-type와 같이 약어가 될 수 있는 여러 파라미터가 있기 때문에 --change-set- 파라미터는 약어로 인식되지 않습니다. 따라서 AWS CLI 는 명령을 처리하지 않습니다.

$ aws cloudformation create-change-set --stack-name my-stack --change-set- my-change-set
주의

의도적으로 파라미터 약어를 사용하지 마세요. 신뢰할 수 없으며 이전 버전과도 호환되지 않습니다. 약어를 혼동시키는 새 파라미터가 명령에 추가되면 명령이 손상됩니다.

또한 파라미터가 단일 값 인수인 경우 명령에서 예상치 못한 동작이 발생할 수 있습니다. 단일 값 인수의 여러 인스턴스가 전달되면 마지막 인스턴스만 실행됩니다. 다음 예에서 --filters 파라미터는 단일 값 인수를 사용합니다. --filters--filter 파라미터는 지정됩니다. --filter 파라미터는 --filters의 약어입니다. 이로 인해 --filters의 두 인스턴스가 적용되고 마지막 --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 증명에 작업을 수행할 권한이 없습니다.

오류 텍스트 예:

$ aws s3 ls An error occurred (AcessDenied) when calling the ListBuckets operation: Access denied.

AWS CLI 명령을 실행하면 IAM 사용자를 계정 또는 역할과 연결하는 보안 인증 정보를 사용하여 사용자를 대신하여 AWS 작업이 수행됩니다. 연결된 정책은 에서 실행하는 명령에 해당하는 API 작업을 호출할 수 있는 권한을 부여해야 합니다 AWS CLI.

대부분의 명령은 명령 이름과 일치하는 이름으로 한 가지 작업을 호출합니다. 그러나 와 같은 사용자 지정 명령은 여러 을 aws s3 sync 호출합니다APIs. --debug 옵션을 사용하여 명령APIs이 호출하는 항목을 확인할 수 있습니다.

사용자 또는 역할에 정책에서 할당한 적절한 권한이 있다고 확신하는 경우 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

키 페어 세부 정보를 확인하려면 configcredentials 파일을 검토합니다. configcredentials 파일에 대한 자세한 내용은 의 구성 및 보안 인증 파일 설정 AWS CLI 섹션을 참조하세요. 보안 인증 정보 우선 순위를 비롯한 인증 및 보안 인증에 대한 자세한 내용은 에 대한 인증 및 액세스 자격 증명 AWS CLI 섹션을 참조하세요.

맨 위로 이동

가능한 원인: 컴퓨터의 클록이 동기화되지 않음

유효한 보안 인증 정보를 사용 중이라면 클록이 동기화되지 않았을 수 있습니다. 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 서버와 동기화되지 않음

재생 공격(Replay Attack)으로부터 보호하기 위해 암호화/암호 해독 프로세스 동안 현재 시간이 사용될 수 있습니다. 클라이언트 및 서버의 시간이 허용된 시간을 넘는 경우 프로세스가 실패할 수 있으며 요청이 거부됩니다. 이는 클록이 호스트 머신의 클록과 동기화되지 않은 가상 머신에서 명령을 실행할 때에도 발생할 수 있습니다. 한 가지 가능한 원인은 가상 머신이 최대 절전 모드에 있다가 활성화된 후 얼마 뒤 클록을 호스트 머신과 동기화할 때입니다.

Linux 또는 macOS에서 date를 실행하여 시간을 확인합니다.

$ date

몇 분 안에 시스템 클록이 정확하지 않으면 ntpd를 사용하여 동기화합니다.

$ sudo service ntpd stop $ sudo ntpdate time.nist.gov $ sudo service ntpd start $ ntpstat

Windows에서는 제어판의 날짜 및 시간 옵션을 사용하여 시스템 클록을 구성합니다.

맨 위로 이동

가능한 원인: 운영 체제에서 특정 특수 문자가 포함된 AWS 키를 잘못 처리하고 있습니다.

AWS 키에 , -, + /또는 와 같은 특정 특수 문자가 포함된 경우 %일부 운영 체제 변형은 문자열을 부적절하게 처리하고 키 문자열을 잘못 해석합니다.

생성 과정에서 새 인스턴스에 보안 인증 파일을 빌드하는 도구와 같은 다른 도구 또는 스크립트를 사용하여 키를 처리하는 경우 이러한 도구 및 스크립트는 특수 문자를 자체적으로 처리하여 더 이상 인식 AWS 하지 못하는 것으로 변환될 수 있습니다.

문제를 일으키는 특수 문자가 포함되지 않은 비밀 키를 얻으려면 비밀 키를 다시 생성하는 것이 좋습니다.

맨 위로 이동

Windows 콘솔을 찾을 수 없음 오류

오류 텍스트 예:

$ aws s3 ls No Windows console found. Are you running cmd.exe?

AWS CLI 명령을 사용하면 “Windows 콘솔을 찾을 수 없습니다. cmd.exe를 실행 중입니까?” 오류 메시지를 받게 됩니다. 이는 일반적으로 설치prompt_toolkit한 Python이 오래된 경우 AWS CLI 버전 1에 표시되는 오류입니다. 이 문제를 해결하려면 Python 웹 사이트에서 prompt_toolkit 최신 버전을 설치하세요.

맨 위로 이동

SSL 인증서 오류

가능한 원인: AWS CLI 가 프록시의 인증서를 신뢰하지 않음

오류 텍스트 예:

$ 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 구성 .pem 파일 설정, --ca-bundle 명령줄 옵션 또는 AWS_CA_BUNDLE 환경 변수를 사용하여 회사 파일을 찾을 수 AWS CLI 있는 위치를 에 지시합니다.

맨 위로 이동

가능한 원인: 구성이 올바른 CA 루트 인증서 위치를 가리키지 않음

오류 텍스트 예:

$ aws s3 ls SSL validation failed for regionname [Errno 2] No such file or directory

이것은 AWS CLI에서 인증 기관(CA) 번들 파일 위치가 잘못 구성되었기 때문에 발생합니다. 이 문제를 해결하려면 회사 .pem 파일의 위치를 확인하고 ca_bundle 구성 파일 설정, --ca-bundle 명령줄 옵션 또는 AWS_CA_BUNDLE 환경 변수를 사용하여 AWS CLI 구성을 업데이트합니다.

맨 위로 이동

가능한 원인: 구성이 올바른 를 사용하지 않습니다. AWS 리전

오류 텍스트 예:

$ aws s3 ls [SSL: CERTIFICATE_ VERIFY_FAILED] certificate verify failed

지정된 에 를 사용할 수 AWS 서비스 없거나 리소스가 다른 에 있는 경우 오류 AWS 리전 또는 예상치 못한 결과가 발생할 수 있습니다 AWS 리전. 문제 해결 단계는 AWS CLI 명령이 사용 중인 AWS 리전 지 확인 섹션을 참조하세요.

맨 위로 이동

가능한 원인: TLS 버전을 업데이트해야 함

오류 텍스트 예:

$ aws s3 ls [SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled

AWS 서비스 는 디바이스 버전과 호환되지 TLS 않는 TLS 버전을 사용하고 있습니다. 이 문제를 해결하려면 지원되는 TLS 버전으로 업데이트하세요. 자세한 내용은 에 TLS 대한 최소 버전 적용 AWS CLI 단원을 참조하십시오.

맨 위로 이동

잘못된 JSON 오류

오류 텍스트 예:

$ aws dynamodb update-table \ --provisioned-throughput '{"ReadCapacityUnits":15,WriteCapacityUnits":10}' \ --table-name MyDDBTable Error 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 형식의 명령을 입력할 때 나타나는 오류이며 가 를 JSON 올바르게 읽을 AWS CLI 수 없습니다.

가능한 원인: 사용할 에 JSON 대해 유효한 AWS CLI 를 입력하지 않았습니다.

명령에 유효한 를 JSON 입력했는지 확인합니다. 형식 지정에 문제가 있는 JSON 경우 JSON 검사기를 사용하는 것이 좋습니다.

명령줄에서 더 고급JSON으로 사용하려면 와 같은 명령줄 JSON 프로세서를 사용하여 JSON 문자열을 생성하는 jq것이 좋습니다. 에 대한 자세한 내용은 의 jq 리포지토리jq참조하세요GitHub.

맨 위로 이동

가능한 원인: 터미널의 견적 규칙으로 인해 로 유효한 전송이 불가능할 JSON 수 있습니다. AWS CLI

이 명령에서 무언가를 AWS CLI 수신하기 전에 터미널은 자체 인용 및 이스케이프 규칙을 사용하여 명령을 처리합니다. 터미널의 형식 지정 규칙으로 인해 명령이 에 전달되기 전에 일부 JSON 콘텐츠가 제거될 수 있습니다 AWS CLI. 명령을 공식화할 때 터미널의 인용 규칙을 사용해야 합니다.

문제를 해결하려면 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 \ --debug 2022-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']

터미널의 견적 규칙을 사용하여 JSON 입력이 로 전송될 때 발생하는 모든 문제를 해결합니다 AWS CLI. 인용 규칙에 대한 자세한 내용은 에서 문자열과 함께 따옴표 및 리터럴 사용 AWS CLI 섹션을 참조하세요.

참고

에 대한 유효성을 얻는 JSON 데 문제가 있는 경우 Blobs를 사용하여 JSON 데이터를 에 직접 전달하여 JSON 데이터 입력에 대한 터미널의 견적 규칙을 우회하는 것이 AWS CLI좋습니다 AWS CLI. Blob에 대한 자세한 내용은 Blob 섹션을 참조하세요.

맨 위로 이동

추가 리소스

AWS CLI 문제에 대한 추가 도움이 필요하면 GitHub 또는 AWS CLI 커뮤니티 AWS re:Post 에서 커뮤니티를 참조하세요.

맨 위로 이동