공식 Amazon ECR 퍼블릭 또는 도커 AWS CLI 이미지에서 실행 - AWS Command Line Interface

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

공식 Amazon ECR 퍼블릭 또는 도커 AWS CLI 이미지에서 실행

이 주제에서는 공식 Amazon Elastic 컨테이너 레지스트리 퍼블릭 (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 간에 결정하기

이미지에는 도커 허브보다 Amazon ECR 퍼블릭을 AWS CLI 사용하는 것이 좋습니다. 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 아마존 ECR 퍼블릭 이미지는 리포지토리의 Amazon ECR Public에서 호스팅됩니다. aws-cli/aws-cli

$ docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
Docker Hub

공식 AWS CLI 버전 2 Docker 이미지는 리포지토리의 Docker Hub에서 호스팅됩니다. amazon/aws-cli

$ docker run --rm -it amazon/aws-cli command

다음은 명령의 작동 방식입니다.

  • docker run --rm -it repository/name - aws 실행 파일과 동일합니다. 이 명령을 실행할 때마다 Docker는 다운로드한 이미지의 컨테이너를 구동하고 aws 명령을 실행합니다. 기본적으로 이미지는 최신 버전의 버전 2를 사용합니다. AWS CLI

    예를 들어 도커에서 aws --version 명령을 호출하려면 다음을 실행하세요.

    Amazon ECR Public
    $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli --version aws-cli/2.15.30 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.15.30 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  • --rm - 명령이 종료된 후 컨테이너를 정리하도록 지정합니다.

  • -it - 을 사용하여 가상 TTY를 열도록 지정합니다.stdin 이렇게 하면 컨테이너에서 실행되는 동안 (예: aws configureaws help 명령 사용) AWS CLI 버전 2에 입력을 제공할 수 있습니다. -it를 생략할지 여부를 선택할 때 다음 사항을 고려합니다.

    • 스크립트를 실행하는 경우 -it가 필요하지 않습니다.

    • 스크립트에 오류가 발생하는 경우 Docker 호출에서 -it를 생략하면 문제가 해결될 수 있습니다.

    • 출력을 파이프하려는 경우 -it로 인해 오류가 발생할 수 있으며 Docker 호출에서 -it를 생략하면 이 문제가 해결될 수 있습니다. -it 플래그를 유지하고 싶지만 여전히 출력을 파이프하려는 경우 AWS CLI 가 기본적으로 사용하는 클라이언트 측 호출기를 사용 중지하면 문제가 해결됩니다.

docker run 명령에 대한 자세한 내용은 도커 참조 안내서를 참조하세요.

공식 이미지의 인터페이스 및 이전 버전과의 호환성에 대한 참고 사항

  • 이미지에서 지원되는 유일한 도구는 AWS CLI입니다. aws 실행 파일만 직접 실행해야 합니다. 예를 들어 lessgroff 가 이미지에 명시적으로 설치되어 있더라도 명령 외부에서 직접 실행해서는 안 AWS CLI 됩니다.

  • /aws 작업 디렉터리는 사용자가 제어합니다. 사용자가 명령을 실행하도록 지시하지 않는 한 이미지는 이 디렉터리에 기록되지 않습니다. AWS CLI

  • 최신 태그에 의존할 때 이전 버전과의 호환성은 보장되지 않습니다. 이전 버전과의 호환성을 보장하려면 변경 불가능한 특정 <major.minor.patch> 태그에 고정해야 합니다. 이러한 태그는 한 번만 푸시됩니다.

특정 버전 및 태그 사용

공식 AWS CLI 버전 2 이미지에는 버전부터 시작하여 여러 버전을 사용할 수 있습니다. 2.0.6 특정 버전의 AWS CLI 버전 2를 실행하려면 docker run 명령에 적절한 태그를 추가하세요. 태그와 함께 docker run 명령을 처음 사용하면 해당 태그의 최신 이미지가 컴퓨터에 다운로드됩니다. 이후에 해당 태그와 함께 docker run 명령을 사용할 때마다 로컬 사본에서 실행됩니다.

두 가지 유형의 태그를 사용할 수 있습니다.

  • latest— 이미지에 대한 버전 2의 최신 AWS CLI 버전을 정의합니다. 최신 버전의 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

윈도우 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

윈도우 PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli command

-v 플래그 및 마운팅에 대한 자세한 내용은 도커 참조 안내서를 참조하세요.

참고

configcredentials 파일에 대한 정보는 구성 및 자격 증명 파일 설정 단원을 참조하세요.

예제 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

윈도우 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

윈도우 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

윈도우 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

윈도우 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

윈도우 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!

윈도우 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

윈도우 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

윈도우 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 $*

    윈도우 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 $*

    윈도우 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 $*

    윈도우 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 $*

    윈도우 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 $*

    윈도우 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 $*

    윈도우 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.15.30 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10