오류 문제 해결 AWS CLI - AWS Command Line Interface

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

오류 문제 해결 AWS CLI

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

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

오류가 발생하거나 에서 문제가 발생하는 경우 문제 해결에 AWS CLI도움이 되는 다음과 같은 일반 팁을 따르는 것이 좋습니다.

맨 위로 이동

AWS CLI 명령 형식을 확인하세요.

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

특정 명령을 구성하는 방법에 대한 자세한 내용은 참조하십시오.

맨 위로 이동

명령어가 어떤 AWS 리전AWS CLI 명령을 사용하고 있는지 확인하세요.

참고

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

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

리소스에 AWS 리전 맞는 것을 사용하고 있는지 확인하세요.

맨 위로 이동

최신 버전의 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 옵션을 포함하면 다음과 같은 세부 정보가 포함됩니다.

  • botocore에 대한 API 호출

  • 상태 코드

  • 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 명령을 찾을 수 없는 경우 터미널을 다시 시작해야 PATH 업데이트가 인식될 수 있습니다. AWS CLI

맨 위로 이동

가능한 원인: 완전히 설치되지 AWS CLI 않았습니다.

오류 텍스트 예:

$ aws --version command not found: aws

를 처음 설치하거나 업데이트한 후 aws 명령을 찾을 수 없다면 완전히 설치되지 않은 것일 수 있습니다. AWS CLI플랫폼에 해당하는 최신 버전의 AWS CLI설치 또는 업데이트 단계에 따라 다시 설치해 봅니다.

맨 위로 이동

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

Linux에서 를 처음 설치하거나 업데이트한 후 aws 명령을 찾을 수 없는 경우 명령이 설치된 폴더에 대한 execute 권한이 없는 것일 수 있습니다. AWS CLI 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. 경로를 선택한 다음 편집을 선택합니다.

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

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

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

맨 위로 이동

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

터미널에서 예상과 다른 결과가 PATH 반환될 수 있습니다. AWS CLI

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

aws 명령에 잘못된 버전이 표시되는 경우 PATH 업데이트를 인식하도록 터미널을 다시 시작해야 할 수 있습니다. 활성 터미널뿐만 아니라 열려 있는 모든 터미널을 닫아야 합니다.

맨 위로 이동

가능한 원인: 설치 후 시스템을 다시 시작해야 함

aws 명령에 잘못된 버전이 표시되고 터미널을 다시 시작해도 문제가 해결되지 않는 경우 PATH 업데이트를 인식하도록 시스템을 다시 시작해야 할 수 있습니다.

맨 위로 이동

가능한 원인: 여러 버전이 있습니다. AWS CLI

를 AWS CLI 업데이트하고 기존 설치와 다른 설치 방법을 사용한 경우 여러 버전이 설치될 수 있습니다. 예를 들어 Linux 또는 macOS에서 현재 설치에 pip를 사용했지만 .pkg 설치 파일을 사용하여 업데이트를 시도한 경우 특히 이전 버전을 가리키는 PATH와 충돌이 발생할 수 있습니다.

이 문제를 해결하려면 모든 버전의 AWS CLI를 제거하고 새로 설치를 수행합니다.

모든 버전을 제거한 후 운영 체제에 해당하는 지침을 따라 AWS CLI 버전 1 또는 AWS CLI 버전 2의 원하는 버전을 설치합니다.

참고

버전 1을 기존에 설치한 상태에서 AWS CLI 버전 2를 설치한 후에 이 문제가 발생하는 경우 AWS CLI 버전 따르십시오. AWS CLI 버전 2 마이그레이션 지침

맨 위로 이동

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 버전 1과AWS CLI 버전 2의 각 제거 방법에 대한 지침을 따르십시오. AWS CLI

    참고

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

맨 위로 이동

매개 AWS CLI 변수 이름이 불완전하여 명령을 처리했습니다.

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

AWS CLI 는 Python을 사용하여 빌드되었으므로 allow_abbrev인수를 포함한 Python argparse 라이브러리를 AWS CLI 사용합니다. 매개 변수의 약어는 에서 인식되고 처리됩니다. AWS CLI

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

$ aws cloudformation create-change-set --stack-name my-stack --change-set-n my-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 작업이 수행됩니다. 연결된 정책은 사용자가 AWS CLI에서 실행하는 명령에 해당하는 API 작업을 호출할 수 있는 권한을 부여해야 합니다.

대부분의 명령은 명령 이름과 일치하는 이름으로 한 가지 작업을 호출합니다. 그러나 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

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

맨 위로 이동

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

유효한 보안 인증 정보를 사용 중이라면 클록이 동기화되지 않았을 수 있습니다. 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 서버로 보내 적절한 AWS 서비스 작업을 수행합니다. AWS CLI 자격 증명 (액세스 키 및 비밀 키) 은 암호화에 포함되며 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 이상 인식하지 못하는 것으로 변환될 수 있습니다.

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

맨 위로 이동

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 신뢰하지 않기 때문입니다. 이렇게 하면 로컬 CA AWS CLI 레지스트리에서 회사의 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 리전AWS CLI 명령을 사용하고 있는지 확인하세요. 섹션을 참조하세요.

맨 위로 이동

가능한 원인: TLS 버전을 업데이트해야 합니다.

오류 텍스트 예:

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

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

맨 위로 이동

잘못된 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 프로세서(예: jq)를 사용하여 JSON 문자열을 생성하는 것이 좋습니다. 에 대한 자세한 내용은 의 jq jq 리포지토리를 참조하십시오. GitHub

맨 위로 이동

가능한 원인: 터미널의 인용 규칙으로 인해 유효한 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 \ --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을 에 가져오는 데 문제가 있는 경우 AWS CLI, Blob을 사용하여 JSON 데이터를 로 직접 전달함으로써 터미널의 JSON 데이터 입력 인용 규칙을 우회하는 것이 좋습니다. AWS CLI Blob에 대한 자세한 내용은 Blob 섹션을 참조하세요.

맨 위로 이동

추가적인 리소스

AWS CLI 문제에 대한 추가 지원이 필요한 경우 커뮤니티 또는 커뮤니티를 방문하세요.AWS CLIGitHubAWS re:Post

맨 위로 이동