내용으로 건너뛰기

Amazon S3 버킷에서 “cp” 또는 “sync” 명령을 실행할 때 발생하는 연결 오류 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

Amazon Simple Storage Service(S3) 버킷에서 “cp” 또는 “sync” AWS Command Line Interface(AWS CLI) 명령을 실행하려고 합니다. 그런데 오류가 발생합니다.

해결 방법

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

AWS CLI에서 cp 또는 sync 명령을 실행하려면 컴퓨터가 올바른 Amazon S3 엔드포인트에 연결되어야 합니다. 그렇지 않으면 서비스가 엔드포인트 URL에 연결할 수 없다거나 연결 시간이 초과되었다는 메시지와 함께 오류가 발생합니다. 표시되는 오류에 따라 다음 문제 해결 작업을 수행하십시오.

“엔드포인트 URL에 연결할 수 없음” 오류

올바른 리전 및 Amazon S3 엔드포인트를 사용하고 있는지 확인

AWS CLI에서 명령을 실행하면 AWS 리전의 기본 Amazon S3 엔드포인트로 API 요청이 전송됩니다. 리전을 지정하면 AWS CLI가 리전별 Amazon S3 엔드포인트로 API 요청을 보냅니다. 그러면 AWS CLI에서 요청을 버킷의 리전 Amazon S3 엔드포인트로 리디렉션합니다.

지정한 리전이나 엔드포인트에 오타나 오류가 있으면 “엔드포인트 URL에 연결할 수 없음” 오류가 발생할 수 있습니다. 예를 들어, 다음 명령에서는 엔드포인트 이름에 e가 추가로 있기 때문에 오류가 발생합니다.

aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --endpoint-url https://s3-acceleratee.amazonaws.com

cp 또는 sync 명령을 실행하기 전에 연결된 리전Amazon S3 엔드포인트가 올바른지 확인하십시오. AWS CLI 명령을 실행할 때 --debug 플래그를 사용하여 AWS CLI에서 사용하는 엔드포인트를 식별하십시오. 명령 예시:

aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --debug

참고: Amazon S3 Transfer Acceleration을 사용하는 경우 버킷에 대해 활성화하십시오. 엔드포인트 bucket-name.s3-accelerate.amazonaws.com을 사용하십시오. 또는 이중 스택 엔드포인트 bucket-name.s3-accelerate.dualstack.amazonaws.com을 사용하여 IPv6을 통해 버킷에 연결하십시오. bucket-name을 사용하는 버킷 이름으로 바꾸십시오.

DNS가 해당 Amazon S3 엔드포인트로 확인될 수 있는지 확인

DNS가 Amazon S3 엔드포인트로 확인될 수 있는지 확인하려면 nslookup, dig 또는 ping과 같은 DNS 쿼리 도구를 사용합니다. 명령 예시:

nslookup s3.amazonaws.com
dig s3.amazonaws.com
ping s3.amazonaws.com

DNS가 Amazon S3 엔드포인트로 확인되지 않으면 DNS 구성 문제를 해결하십시오. Amazon Route 53을 DNS 공급자로 사용하는 경우에는 Amazon Route 53 문제 해결을 참조하십시오.

“엔드포인트 URL 연결 시간 초과” 오류

네트워크가 해당 Amazon S3 엔드포인트에 연결할 수 있는지 확인

네트워크 방화벽이 Amazon S3 트래픽에 사용 중인 포트의 Amazon S3 엔드포인트로 가는 트래픽을 허용하는지 확인합니다.

예를 들어, 다음 telnet 명령은 포트 443에서 ap-southeast-2 Amazon S3 엔드포인트로 연결을 테스트합니다.

telnet s3.ap-southeast-2.amazonaws.com 443

네트워크 패킷을 캡처 및 분석하고 시스템이 Amazon S3 엔드포인트를 사용하여 TCP 핸드셰이크를 성공적으로 완료할 수 있는지 확인하려면 다음 tcpdump 명령을 실행합니다.

sudo tcpdump -i eth0 'host s3.ap-southeast-2.amazonaws.com and port 443' -s0 -w samplecapture.pcap

참고: eth0을 탄력적 네트워크 인터페이스로 바꾸고 ap-southeast-2를 Amazon S3 엔드포인트 리전으로 바꾸고 443을 사용하는 포트로 바꾸십시오. -s0 플래그는 전체 패킷을 캡처하고 -w samplecapture.pcap은 캡처 내용을 파일에 기록합니다. Wireshark와 같은 도구를 사용하여 파일의 정보를 분석할 수 있습니다.

연결을 확인하려면 TCP 3방향 핸드셰이크(SYN, SYN-ACK, ACK)를 찾아봅니다. SYN-ACK 응답이 없이 SYN 패킷만 표시되면 방화벽 또는 라우팅 문제가 있는 것입니다.

Amazon S3 엔드포인트 경로를 따라 발생하는 라우팅 문제 또는 패킷 손실을 감지하려면 다음 mtr 명령을 실행합니다.

mtr -n -T -c 200 s3.ap-southeast-2.amazonaws.com -P 443 --report

참고: ap-southeast-2를 해당 리전으로 바꾸고 443을 사용하는 포트로 바꾸십시오. -n 플래그는 테스트 속도를 높이기 위해 DNS 확인을 비활성화하며, -T 플래그는 Internet Control Messenger Protocol(ICMP) 보다 더 정확할 수 있는 TCP 패킷을 사용합니다. 위의 명령은 통계 정확도를 높이기 위해 200사이클의 테스트를 실행하고 보고서를 생성합니다.

Windows에서는 비슷한 라우팅 테스트에 WinMTR을 사용할 수 있습니다. Amazon S3 엔드포인트 연결에 영향을 미칠 수 있는 높은 지연 시간, 손실된 패킷 또는 라우팅 루프를 찾아보십시오.

Amazon EC2 인스턴스의 경우 VPC 구성 확인

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 “연결 시간 초과” 오류가 표시되는 경우 가상 프라이빗 클라우드(VPC) 구성을 확인하십시오.

EC2 인스턴스가 퍼블릭 서브넷에 있는 경우, 다음 설정을 확인하십시오.

EC2 인스턴스가 프라이빗 서브넷에 있는 경우, 다음 설정을 확인하십시오.

  • NAT 게이트웨이를 서브넷의 서브넷 라우팅 테이블에 연결했는지 확인합니다.
  • Amazon S3의 VPC 엔드포인트를 사용하는 경우, AWS CLI 구성 파일에 올바른 리전이 있는지 확인합니다.
    참고: Amazon S3의 VPC 엔드포인트는 리전별로 다릅니다. 예를 들어 --region us-west-1을 사용하여 sync를 실행하지만 VPC 엔드포인트는 다른 리전에 있습니다. 이로 인해 “엔드포인트 URL에 연결할 수 없음” 오류가 표시됩니다.

VPC 내에서 AWS PrivateLink를 사용하여 Amazon S3에 액세스할 때는 Reachability Analyzer를 사용하십시오. 이 도구를 사용하면 연결을 차단할 수 있는 보안 그룹, 네트워크 ACL 또는 라우팅 테이블의 잘못된 구성을 파악할 수 있습니다. 예를 들어, Reachability Analyzer 분석을 생성하여 인스턴스와 인터페이스 엔드포인트 간의 경로를 확인합니다.