AWS CLI에 대한 공식 Amazon ECR 퍼블릭 또는 Docker 이미지 실행
이 주제에서는 공식 Amazon Elastic Container Registry Public(Amazon ECR Public) 또는 Docker Hub 이미지 중 하나를 사용하여 Docker에서 AWS CLI 버전 2를 실행, 버전 제어 및 구성하는 방법에 관해 설명합니다. Docker를 사용하는 방법에 대한 자세한 내용은 Docker 설명서를 참조하세요.
공식 이미지는 AWS가 직접 지원하고 유지하는 격리, 이동성 및 보안을 제공합니다. 이렇게 하면 설치를 직접 관리할 필요 없이 컨테이너 기반 환경에서 AWS CLI 버전 2를 사용할 수 있습니다.
사전 조건
도커가 설치되어 있어야 합니다. 설치 지침은 도커 웹 사이트를 참조하세요.
도커의 설치를 확인하려면 다음 명령을 실행하고 출력이 있는지 확인하세요.
$
docker --version
Docker version 19.03.1
Amazon ECR Public과 Docker Hub 간에 결정하기
AWS CLI 이미지에는 Docker Hub를 통한 Amazon ECR Public을 사용하는 것이 좋습니다. Docker Hub는 Public 소비자에 대한 속도 제한이 더 엄격하여 제한 문제가 발생할 수 있습니다. 또한 Amazon ECR Public은 두 개 이상의 리전에 이미지를 복제하여 강력한 가용성을 제공하고 리전 중단 문제를 처리합니다.
Docker Hub 속도 제한에 대한 자세한 내용은 Docker 웹 사이트의 Docker Hub 속도 제한 이해 섹션을 참조하세요.
공식 AWS CLI 버전 2 이미지 실행
docker run
명령을 처음 사용하면 최신 이미지가 컴퓨터에 다운로드됩니다. 이후에 docker run
명령을 사용할 때마다 로컬 사본에서 실행됩니다.
AWS CLI 버전 2 Docker 이미지를 실행하려면 docker run
명령을 사용합니다.
- Amazon ECR Public
-
공식 AWS CLI 버전 2 Amazon ECR Public 이미지는 aws-cli/aws-cli
리포지토리의 Amazon ECR Public에서 호스팅됩니다.
$
docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
- Docker Hub
-
공식 AWS CLI 버전 2 Docker 이미지는 amazon/aws-cli
리포지토리의 Docker Hub에서 호스팅됩니다.
$
docker run --rm -it amazon/aws-cli command
다음은 명령의 작동 방식입니다.
-
docker run --rm -it repository/name
- aws
실행 파일과 동일합니다. 이 명령을 실행할 때마다 Docker는 다운로드한 이미지의 컨테이너를 구동하고 aws
명령을 실행합니다. 기본적으로 이미지는 최신 버전의 AWS CLI 버전 2를 사용합니다.
예를 들어 도커에서 aws --version
명령을 호출하려면 다음을 실행하세요.
- Amazon ECR Public
-
$
docker run --rm -it public.ecr.aws/aws-cli/aws-cli --version
aws-cli/2.17.20 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
- Docker Hub
-
$
docker run --rm -it amazon/aws-cli --version
aws-cli/2.17.20 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
-
--rm
- 명령이 종료된 후 컨테이너를 정리하도록 지정합니다.
-
-it
- 을 사용하여 가상 TTY를 열도록 지정합니다.stdin
이렇게 하면 컨테이너에서 실행되는 동안 aws configure
및 aws help
명령을 사용하여 AWS CLI 버전 2에 입력을 제공할 수 있습니다. -it
를 생략할지 여부를 선택할 때 다음 사항을 고려합니다.
-
스크립트를 실행하는 경우 -it
가 필요하지 않습니다.
-
스크립트에 오류가 발생하는 경우 Docker 호출에서 -it
를 생략하면 문제가 해결될 수 있습니다.
-
출력을 파이프하려는 경우 -it
로 인해 오류가 발생할 수 있으며 Docker 호출에서 -it
를 생략하면 이 문제가 해결될 수 있습니다. -it
플래그를 유지하고 싶지만 여전히 출력을 파이프하려는 경우 AWS CLI가 기본적으로 사용하는 클라이언트 측 호출기를 사용 중지하면 문제가 해결됩니다.
docker run
명령에 대한 자세한 내용은 도커 참조 안내서를 참조하세요.
공식 이미지의 인터페이스 및 이전 버전과의 호환성에 대한 참고 사항
-
이미지에서 지원되는 유일한 도구는 AWS CLI입니다. aws
실행 파일만 직접 실행해야 합니다. 예를 들어 less
및 groff
가 이미지에 명시적으로 설치되어 있어도 AWS CLI 명령 외부에서 직접 실행해서는 안 됩니다.
-
/aws
작업 디렉터리는 사용자가 제어합니다. AWS CLI 명령을 실행할 때 사용자가 지시하지 않는 한 이미지는 이 디렉터리에 기록되지 않습니다.
-
최신 태그에 의존할 때 이전 버전과의 호환성은 보장되지 않습니다. 이전 버전과의 호환성을 보장하려면 변경 불가능한 특정 <major.minor.patch>
태그에 고정해야 합니다. 이러한 태그는 한 번만 푸시됩니다.
특정 버전 및 태그 사용
공식 AWS CLI 버전 2 이미지에는 버전 2.0.6
부터 시작되는 여러 버전이 있습니다. 특정 버전의 AWS CLI 버전 2를 실행하려면 docker run
명령에 적절한 태그를 추가합니다. 태그와 함께 docker run
명령을 처음 사용하면 해당 태그의 최신 이미지가 컴퓨터에 다운로드됩니다. 이후에 해당 태그와 함께 docker run
명령을 사용할 때마다 로컬 사본에서 실행됩니다.
두 가지 유형의 태그를 사용할 수 있습니다.
-
latest
– 이미지에 대한 AWS CLI 버전 2의 최신 버전을 정의합니다. 최신 버전의 AWS CLI 버전 2를 원하는 경우 latest
태그를 사용하는 것이 좋습니다. 그러나 이 태그에 의존할 때 이전 버전과의 호환성은 보장되지 않습니다. latest
태그는 기본적으로 docker run
명령에서 사용됩니다. 명시적으로 latest
태그를 사용하려면 컨테이너 이미지 이름에 태그를 추가합니다.
- Amazon ECR Public
-
$
docker run --rm -it public.ecr.aws/aws-cli/aws-cli:latest command
- Docker Hub
-
$
docker run --rm -it amazon/aws-cli:latest command
-
<major.minor.patch>
– 이미지에 대한 AWS CLI 버전 2의 특정 버전을 정의합니다. 프로덕션 환경에서 공식 이미지를 사용하려는 경우 이전 버전과의 호환성을 보장하기 위해 특정 버전의 AWS CLI 버전 2를 사용하는 것이 좋습니다. 예를 들어 버전 2.0.6
을 실행하려면 컨테이너 이미지 이름에 버전을 추가합니다.
- Amazon ECR Public
-
$
docker run --rm -it public.ecr.aws/aws-cli/aws-cli:2.0.6 command
- Docker Hub
-
$
docker run --rm -it amazon/aws-cli:2.0.6 command
최신 공식 이미지로 업데이트
최신 이미지는 docker run
명령을 처음 사용할 때만 컴퓨터에 다운로드되므로 업데이트된 이미지를 수동으로 가져와야 합니다. 최신 버전으로 수동으로 업데이트하려면 latest
태그가 지정된 이미지를 가져오는 것이 좋습니다. 이미지를 가져오면 최신 버전이 컴퓨터에 다운로드됩니다.
- Amazon ECR Public
-
$
docker pull public.ecr.aws/aws-cli/aws-cli:latest
- Docker Hub
-
$
docker pull amazon/aws-cli:latest
호스트 파일, 자격 증명, 환경 변수 및 구성 공유
AWS CLI 버전 2는 컨테이너에서 실행되므로 기본적으로 CLI는 구성 및 자격 증명을 포함하는 호스트 파일 시스템에 액세스할 수 없습니다. 호스트 파일 시스템, 자격 증명 및 구성을 컨테이너에 공유하려면 ~/.aws
명령에 /root/.aws
플래그를 사용하여 호스트 시스템의 -v
디렉터리를 docker run
의 컨테이너에 마운트합니다. 이렇게 하면 컨테이너에서 실행 중인 AWS CLI 버전 2가 호스트 파일 정보를 찾을 수 있습니다.
- Amazon ECR Public
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
- Docker Hub
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli command
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli command
-v
플래그 및 마운팅에 대한 자세한 내용은 도커 참조 안내서를 참조하세요.
예제 1: 자격 증명 및 구성 제공
이 예제에서는 s3 ls
명령을 실행하여 Amazon Simple Storage Service(Amazon S3)에 버킷을 나열할 때 호스트 자격 증명 및 구성을 제공합니다. 아래 예제에서는 AWS CLI 자격 증명 및 구성 파일의 기본 위치를 사용하고 다른 위치를 사용하고 파일 경로를 변경합니다.
- Amazon ECR Public
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws
public.ecr.aws/aws-cli/aws-cli s3 ls
- Docker Hub
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws
amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws
amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws
amazon/aws-cli s3 ls
-e
플래그를 사용하여 특정 시스템의 환경 변수를 호출할 수 있습니다. 환경 변수를 사용하려면 이름으로 호출합니다.
- Amazon ECR Public
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME
public.ecr.aws/aws-cli/aws-cli s3 ls
- Docker Hub
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME
amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME
amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME
amazon/aws-cli s3 ls
예제 2: 호스트 시스템에 Amazon S3 파일 다운로드
일부 AWS CLI 버전 2 명령의 경우 컨테이너의 호스트 시스템에서 파일을 읽거나 컨테이너에서 호스트 시스템으로 파일을 쓸 수 있습니다.
이 예제에서는 현재 작업 디렉터리를 컨테이너의 S3
디렉터리에 마운트하여 로컬 파일 시스템으로 s3://aws-cli-docker-demo/hello
객체 /aws
를 다운로드합니다. hello
객체를 컨테이너의 /aws
디렉터리에 다운로드하면 파일이 호스트 시스템의 현재 작업 디렉터리에 저장됩니다.
- Amazon ECR Public
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
- Docker Hub
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
다운로드한 파일이 로컬 파일 시스템에 있는지 확인하려면 다음을 실행합니다.
Linux 및 macOS
$
cat hello
Hello from Docker!
Windows PowerShell
$
type hello
Hello from Docker!
예제 3: AWS_PROFILE 환경 변수 사용
-e
플래그를 사용하여 특정 시스템의 환경 변수를 호출할 수 있습니다. 사용하려는 각 환경 변수를 호출합니다. 이 예제에서는 s3 ls
명령을 실행하여 Amazon Simple Storage Service(Amazon S3)의 버킷을 나열할 때 호스트 자격 증명, 구성 및 AWS_PROFILE
환경 변수를 제공합니다.
- Amazon ECR Public
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE
public.ecr.aws/aws-cli/aws-cli s3 ls
- Docker Hub
-
Linux 및 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE
amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 명령 프롬프트
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE
amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE
amazon/aws-cli s3 ls
Docker 실행 명령 단축
docker run
명령을 단축하려면 운영 체제의 기능을 사용하여 symbolic
link
(symlink) 또는 alias
(Linux 및 macOS) 또는 doskey
(Windows)를 만드는 것이 좋습니다. aws
별칭을 설정하려면 다음 명령 중 하나를 실행할 수 있습니다.
-
aws
명령에 대한 기본 액세스를 위해 다음을 실행합니다.
- Amazon ECR Public
-
Linux 및 macOS
$
alias aws='docker run --rm -it public.ecr.aws/aws-cli/aws-cli'
Windows 명령 프롬프트
C:\>
doskey aws=docker run --rm -it public.ecr.aws/aws-cli/aws-cli $*
Windows PowerShell
C:\>
Function AWSCLI {docker run --rm -it public.ecr.aws/aws-cli/aws-cli $args}
Set-Alias -Name aws -Value AWSCLI
- Docker Hub
-
Linux 및 macOS
$
alias aws='docker run --rm -it amazon/aws-cli'
Windows 명령 프롬프트
C:\>
doskey aws=docker run --rm -it amazon/aws-cli $*
Windows PowerShell
C:\>
Function AWSCLI {docker run --rm -it amazon/aws-cli $args}
Set-Alias -Name aws -Value AWSCLI
-
aws
명령 사용 시 호스트 파일 시스템 및 구성 설정에 액세스하려면 다음을 실행합니다.
- Amazon ECR Public
-
Linux 및 macOS
$
alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli'
Windows 명령 프롬프트
C:\>
doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli $*
Windows PowerShell
C:\>
Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli $args}
Set-Alias -Name aws -Value AWSCLI
- Docker Hub
-
Linux 및 macOS
$
alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'
Windows 명령 프롬프트
C:\>
doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli $*
Windows PowerShell
C:\>
Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli $args}
Set-Alias -Name aws -Value AWSCLI
-
aws
별칭에 사용할 특정 버전을 할당하려면 버전 태그를 추가합니다.
- Amazon ECR Public
-
Linux 및 macOS
$
alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli:2.0.6
'
Windows 명령 프롬프트
C:\>
doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6
$*
Windows PowerShell
C:\>
Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6
$args}
Set-Alias -Name aws -Value AWSCLI
- Docker Hub
-
Linux 및 macOS
$
alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.0.6
'
Windows 명령 프롬프트
C:\>
doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli:2.0.6
$*
Windows PowerShell
C:\>
Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli:2.0.6
$args}
Set-Alias -Name aws -Value AWSCLI
별칭을 설정한 후 호스트 시스템에 설치된 것처럼 컨테이너 내에서 AWS CLI 버전 2를 실행할 수 있습니다.
$
aws --version
aws-cli/2.17.20 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10