AWS CLI 버전 2의 새로운 기능 및 변경 사항 - AWS Command Line Interface

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

AWS CLI 버전 2의 새로운 기능 및 변경 사항

이 주제에서는 AWS CLI 버전 1과 AWS CLI 버전 2 간의 새로운 기능 및 동작 변경 사항에 관해 설명합니다. 이러한 변경으로 인해 버전 1에서와 동일한 동작을 버전 2에서도 얻을 수 있도록 스크립트 또는 명령을 업데이트해야 할 수 있습니다.

AWS CLI 버전 2의 새로운 기능

AWS CLI 버전 2는 AWS CLI의 최신 메이저 버전이며 모든 최신 기능을 지원합니다. 버전 2에 도입된 일부 기능은 버전 1과 백포트되지 않으므로 이러한 기능에 액세스하려면 업그레이드해야 합니다. 이러한 기능은 다음과 같습니다.

Python 인터프리터 필요 없음

AWS CLI 버전 2에서는 Python을 별도로 설치할 필요가 없습니다. 여기에는 임베디드 버전이 포함되어 있습니다.

마법사

AWS CLI 버전 2에서는 마법사를 사용할 수 있습니다. 마법사가 특정 명령을 구성하는 과정을 안내합니다.

IAM Identity Center 인증

AWS IAM Identity Center(IAM Identity Center)을 사용하는 조직의 사용자는 Active Directory 또는 기본 제공 IAM Identity Center 디렉터리에 로그인하거나 IAM Identity Center에 연결된 다른 IdP에 로그인할 수 있습니다. 그런 다음 AWS CLI 명령을 실행할 수 있는 AWS Identity and Access Management(IAM) 역할에 매핑됩니다.

자동 프롬프트

활성화된 경우 aws 명령을 실행할 때 명령, 파라미터 및 리소스에 대한 AWS CLI 버전 2 프롬프트를 사용할 수 있습니다.

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

AWS CLI의 공식 도커 이미지는 AWS가 직접 지원하고 유지하는 격리, 이동성 및 보안을 제공합니다. 이렇게 하면 설치를 직접 관리할 필요 없이 컨테이너 기반 환경에서 AWS CLI 버전 2를 사용할 수 있습니다.

클라이언트 측 페이저

AWS CLI 버전 2에서는 출력에 클라이언트 측 페이저 프로그램을 사용할 수 있습니다. 기본적으로 이 기능은 켜져 있으며 운영 체제의 기본 페이저 프로그램을 통해 모든 출력을 반환합니다.

aws configure import

AWS Management Console에서 생성된 .csv 보안 인증 정보를 가져옵니다. IAM 사용자 이름과 일치하는 프로파일 이름을 이용해 .csv 파일을 가져옵니다.

aws configure list-profiles

구성한 모든 프로파일의 이름을 나열합니다.

YAML 스트림 출력 형식

yamlyaml-stream 형식은 YAML 형식을 활용하는 동시에 데이터를 스트리밍하여 대용량 데이터 세트를 보다 빠르게 볼 수 있도록 합니다. 전체 쿼리가 다운로드되기 전에 YAML 데이터를 보고 사용할 수 있습니다.

DynamoDB용 새로운 상위 수준 ddb 명령

AWS CLI 버전 2에는 상위 수준 Amazon DynamoDB 명령 ddb putddb select가 있습니다. 이러한 명령은 DynamoDB 테이블에 항목을 배치하고 DynamoDB 테이블 또는 인덱스에서 검색하는 간단한 인터페이스를 제공합니다.

aws logs tail

AWS CLI 버전 2에는 Amazon CloudWatch Logs 그룹에 대한 로그를 추적하는 사용자 지정 aws logs tail 명령이 있습니다. 기본적으로 이 명령은 지난 10분 동안 연결된 모든 CloudWatch Logs 스트림의 로그를 반환합니다.

상위 수준 s3 명령에 메타데이터 지원 추가

AWS CLI 버전 2에서는 상위 수준 s3 명령에 --copy-props 파라미터가 추가되었습니다. 이 파라미터를 사용하여 Amazon Simple Storage Service(Amazon S3)에 대한 추가 메타데이터 및 태그를 구성할 수 있습니다.

AWS_REGION

AWS CLI 버전 2에는 AWS_REGION이라는 AWS SDK 호환 환경 변수가 있습니다. 이 변수는 요청을 보낼 AWS 리전을 지정합니다. 이는 AWS CLI에서만 적용 가능한 AWS_DEFAULT_REGION 환경 변수를 재정의합니다.

AWS CLI 버전 1과 AWS CLI 버전 2 간의 주요 변경 사항

이 섹션에서는 AWS CLI 버전 1과 AWS CLI 버전 2 간의 모든 동작 변경 사항에 관해 설명합니다. 이러한 변경으로 인해 버전 1에서와 동일한 동작을 버전 2에서도 얻을 수 있도록 스크립트 또는 명령을 업데이트해야 할 수 있습니다.

텍스트 파일 인코딩을 설정하도록 환경 변수 추가

기본적으로 Blob의 텍스트 파일은 설치된 로캘과 동일한 인코딩을 사용합니다. AWS CLI 버전 2는 Python의 임베디드 버전을 사용하기 때문에 PYTHONUTF8PYTHONIOENCODING 환경 변수는 지원되지 않습니다. 텍스트 파일의 인코딩을 로캘과 다르게 설정하려면 AWS_CLI_FILE_ENCODING 환경 변수를 사용합니다. 다음 예제에서는 Windows에서 UTF-8을 사용하여 텍스트 파일을 열도록 AWS CLI를 설정합니다.

AWS_CLI_FILE_ENCODING=UTF-8

자세한 정보는 구성할 환경 변수 AWS CLI을 참조하세요.

기본적으로 이진 파라미터가 base64 인코딩 문자열로 전달됨

AWS CLI에서 일부 명령에는 base64 인코딩 문자열이 필요하고 다른 명령에는 UTF8 인코딩 바이트 문자열이 필요했습니다. AWS CLI 버전 1에서 두 개의 인코딩된 문자열 유형 간에 데이터를 전달하려면 종종 중간 처리가 필요했습니다. AWS CLI 버전 2를 사용하면 바이너리 파라미터를 보다 일관되게 처리할 수 있으므로 한 명령에서 다른 명령으로 값을 보다 안정적으로 전달할 수 있습니다.

AWS CLI 버전 2에서는 기본적으로 모든 이진 입력 및 이진 출력 파라미터를 base64 인코딩 문자열 blobs(이진 대용량 객체)로 전달합니다. 자세한 내용은 Blob 섹션을 참조하세요.

AWS CLI 버전 1 동작으로 되돌리려면 cli_binary_format 파일 구성 또는 --cli-binary-format 파라미터를 사용합니다.

멀티파트 복사를 수행할 때 Amazon S3의 파일 속성 및 태그 처리가 개선됨

aws s3 네임스페이스의 AWS CLI 버전 1 명령을 사용하여 한 S3 버킷 위치에서 다른 위치로 파일을 복사하고 해당 작업에서 멀티파트 복사를 사용하는 경우 소스 객체의 파일 속성이 대상 객체로 복사되지 않습니다.

기본적으로 AWS CLI 버전 2의 해당 명령은 소스의 모든 태그와 일부 속성을 대상 복사본으로 전송합니다. AWS CLI 버전 1과 비교할 때 이로 인해 Amazon S3 엔드포인트에 대해 더 많은 AWS API 호출이 수행될 수 있습니다. AWS CLI 버전 2 에서 s3 명령의 기본 동작을 변경하려면 --copy-props 파라미터를 사용

자세한 내용은 멀티파트 복사의 파일 속성 및 태그 섹션을 참조하세요.

파라미터에 대한 http:// 또는 https:// URL의 자동 검색 안 함

AWS CLI 버전 2는 파라미터 값이 http:// 또는 https://로 시작하는 경우 GET 작업을 수행하지 않으며 반환된 내용을 파라미터 값으로 사용하지 않습니다. 결과적으로 연결된 명령줄 옵션 cli_follow_urlparam이 AWS CLI 버전 2에서 제거됩니다.

URL을 검색하고 해당 URL의 콘텐츠를 파라미터 값으로 전달해야 하는 경우 curl 또는 유사한 도구를 사용하여 URL의 콘텐츠를 로컬 파일로 다운로드하는 것이 좋습니다. 그런 다음 file:// 구문을 사용하여 해당 파일의 콘텐츠를 읽고 파라미터의 값으로 사용합니다.

예를 들어 다음 명령은 더 이상 http://www.example.com에서 찾은 페이지의 콘텐츠를 검색하고 해당 콘텐츠를 파라미터로 전달하지 않습니다. 대신 리터럴 텍스트 문자열 https://example.com을 파라미터로 전달합니다.

$ aws ssm put-parameter \ --value http://www.example.com \ --name prod.microservice1.db.secret \ --type String 2

웹 URL의 콘텐츠를 검색하여 파라미터로 사용해야 할 경우 버전 2에서 다음을 수행하면 됩니다.

$ curl https://my.example.com/mypolicyfile.json -o mypolicyfile.json $ aws iam put-role-policy \ --policy-document file://./mypolicyfile.json \ --role-name MyRole \ --policy-name MyReadOnlyPolicy

이전의 예에서 -o 파라미터는 curl에 소스 파일과 동일한 이름으로 현재 폴더에 파일을 저장하도록 지시합니다. 두 번째 명령은 다운로드한 파일의 콘텐츠를 검색하고 해당 콘텐츠를 --policy-document 값으로 전달합니다.

기본적으로 모든 출력에 사용되는 페이저

기본적으로 AWS CLI 버전 2는 운영 체제의 기본 페이저 프로그램을 통해 모든 출력을 반환합니다. 이 프로그램은 Linux 또는 macOS에서는 less 프로그램이며 Windows에서는 more 프로그램입니다. 이렇게 하면 한 번에 한 페이지씩 출력을 표시함으로써 서비스에서 많은 양의 출력을 탐색할 수 있습니다.

다른 페이징 프로그램을 사용하거나 전혀 사용하지 않도록 AWS CLI 버전 2를 구성할 수 있습니다. 자세한 내용은 클라이언트 측 페이저 섹션을 참조하세요.

타임스탬프 출력 값이 ISO 8601 형식으로 표준화됨

기본적으로 AWS CLI 버전 2는 모든 타임스탬프 응답 값을 ISO 8601 형식으로 반환합니다. AWS CLI 버전 1에서 명령은 HTTP API 응답에 의해 반환된 형식으로 타임스탬프 값을 반환했으며 이는 서비스마다 다를 수 있습니다.

HTTP API 응답에 의해 반환된 형식으로 타임스탬프를 보려면 config 파일에 wire 값을 사용합니다. 자세한 내용은 cli_timestamp_format 섹션을 참조하세요.

변경 사항이 없는 CloudFormation 배포 처리가 개선됨

기본적으로 AWS CLI 버전 1에서 변경 사항이 없는 AWS CloudFormation 템플릿을 배포하면 AWS CLI가 실패 오류 코드를 반환합니다. 이를 오류로 간주하지 않고 스크립트를 계속 실행하려고 할 경우 문제가 발생합니다. 0을 반환하는 -–no-fail-on-empty-changeset 플래그를 추가하여 AWS CLI 버전 1에서 이 문제를 해결할 수 있습니다.

이는 일반적인 시나리오이므로 AWS CLI 버전 2에서는 배포로 인한 변경 사항이 없고 작업에서 빈 변경 세트가 반환되는 경우 기본적으로 성공적인 종료 코드 0이 반환됩니다.

원래 동작으로 되돌리려면 --fail-on-empty-changeset 플래그를 추가해야 합니다.

us-east-1 리전의 리전 Amazon S3 엔드포인트 기본 동작이 변경됨

us-east-1 리전을 사용하도록 AWS CLI 버전 1을 구성하는 경우 AWS CLI는 us-east-1 리전에 물리적으로 호스트된 글로벌 s3.amazonaws.com 엔드포인트를 사용합니다. AWS CLI 버전 2에서는 해당 리전을 지정할 때 true 리전 엔드포인트 s3.us-east-1.amazonaws.com이 사용됩니다. AWS CLI 버전 2에서 글로벌 엔드포인트를 사용하려면 명령의 리전을 aws-global로 설정하면 됩니다.

리전 AWS STS 엔드포인트의 기본 동작이 변경됨

기본적으로 AWS CLI 버전 2는 모든 AWS Security Token Service(AWS STS) API 요청을 현재 구성된 AWS 리전의 리전 엔드포인트로 보냅니다.

기본적으로 AWS CLI 버전 1은 AWS STS 요청을 글로벌 AWS STS 엔드포인트로 보냅니다. 버전 1에서 sts_regional_endpoints 설정을 사용하여 이 기본 동작을 제어할 수 있습니다.

ecr get-login이 제거되고 ecr get-login-password로 대체됨

AWS CLI 버전 2에서는 aws ecr get-login 명령이 컨테이너 인증과의 자동 통합을 개선한 aws ecr get-login-password 명령으로 바뀌었습니다.

aws ecr get-login-password 명령을 사용하면 프로세스 목록, 셸 기록 또는 기타 로그 파일에 자격 증명이 노출되는 위험을 줄일 수 있습니다. 또한 docker login 명령과의 호환성을 개선하여 더 나은 자동화를 제공합니다.

aws ecr get-login-password 명령은 AWS CLI 버전 1.17.10 이상과 AWS CLI 버전 2에서 사용할 수 있습니다. 이전 aws ecr get-login 명령은 이전 버전과의 호환성을 위해 AWS CLI 버전 1에서 계속 사용할 수 있습니다.

aws ecr get-login-password 명령을 사용하면 암호를 검색하는 다음 코드를 바꿀 수 있습니다.

$ (aws ecr get-login --no-include-email)

셸 기록 또는 로그에 암호가 노출되는 위험을 줄이려면, 대신 다음 예제 명령을 사용합니다. 이 예제에서 암호는 docker login 옵션에 의해 password 파라미터에 지정되는 --password-stdin 명령으로 직접 파이프됩니다.

$ aws ecr get-login-password | docker login --username AWS --password-stdin MY-REGISTRY-URL

자세한 내용은 AWS CLI 버전 2 참조 가이드aws ecr get-login-password 섹션을 참조하세요.

플러그인에 대한 AWS CLI 버전 2 지원 변경

AWS CLI 버전 2의 플러그인 지원은 전적으로 임시적이며 안정적이고 업데이트된 플러그인 인터페이스가 출시될 때까지 사용자가 AWS CLI 버전 1에서 마이그레이션하는 것을 돕기 위한 것입니다. 특정 플러그인 또는 AWS CLI 플러그인 인터페이스가 AWS CLI 버전 2의 향후 버전에서 지원될 것이라고 보장할 수는 없습니다. 플러그인을 사용하고 있는 경우, 업그레이드할 때 AWS CLI의 특정 버전으로 잠그고 플러그인의 기능을 테스트해야 합니다.

플러그인 지원을 활성화하려면 [plugins]에서 ~/.aws/config 섹션을 만듭니다.

[plugins] cli_legacy_plugin_path = <path-to-plugins>/python3.7/site-packages <plugin-name> = <plugin-module>

[plugins] 섹션에서는 cli_legacy_plugin_path 변수를 정의하고 해당 값을 플러그인 모듈이 상주하는 Python 사이트 패키지 경로로 설정합니다. 그런 다음 플러그인의 소스 코드가 들어 있는 Python 모듈(plugin-module)의 파일 이름과 플러그인(plugin-name)의 이름을 제공하여 플러그인을 구성할 수 있습니다. AWS CLI는 해당 plugin-module을 가져오고 해당 awscli_initialize 함수를 호출하여 각 플러그인을 로드합니다.

숨겨진 별칭 지원이 제거됨

AWS CLI 버전 2에서는 버전 1에서 지원된 다음과 같은 숨겨진 별칭을 더 이상 지원하지 않습니다.

다음 표의 첫 번째 열에는 AWS CLI 버전 2를 포함하여 모든 버전에서 작동하는 서비스, 명령 및 파라미터가 나와 있고, 두 번째 열에는 AWS CLI 버전 2에서 더 이상 작동하지 않는 별칭이 나와 있습니다.

작동하는 서비스, 명령 및 파라미터 폐기된 별칭
cognito-identity create-identity-pool open-id-connect-provider-arns open-id-connect-provider-ar-ns
storagegateway describe-tapes tape-arns tape-ar-ns
storagegateway.describe-tape-archives.tape-arns tape-ar-ns
storagegateway.describe-vtl-devices.vtl-device-arns vtl-device-ar-ns
storagegateway.describe-cached-iscsi-volumes.volume-arns volume-ar-ns
storagegateway.describe-stored-iscsi-volumes.volume-arns volume-ar-ns
route53domains.view-billing.start-time start
deploy.create-deployment-group.ec2-tag-set ec-2-tag-set
deploy.list-application-revisions.s3-bucket s-3-bucket
deploy.list-application-revisions.s3-key-prefix s-3-key-prefix
deploy.update-deployment-group.ec2-tag-set ec-2-tag-set
iam.enable-mfa-device.authentication-code1 authentication-code-1
iam.enable-mfa-device.authentication-code2 authentication-code-2
iam.resync-mfa-device.authentication-code1 authentication-code-1
iam.resync-mfa-device.authentication-code2 authentication-code-2
importexport.get-shipping-label.street1 street-1
importexport.get-shipping-label.street2 street-2
importexport.get-shipping-label.street3 street-3
lambda.publish-version.code-sha256 code-sha-256
lightsail.import-key-pair.public-key-base64 public-key-base-64
opsworks.register-volume.ec2-volume-id ec-2-volume-id

api_versions 구성 파일 설정은 지원되지 않음

AWS CLI 버전 2에서는 api_versions 구성 파일 설정을 사용하여 이전 버전의 AWS 서비스 API 호출을 지원하지 않습니다. 모든 AWS CLI 명령은 이제 현재 엔드포엔트에서 지원하는 서비스 API의 최신 버전을 호출합니다.

AWS CLI 버전 2는 Signature v4만 사용하여 Amazon S3 요청을 인증함

AWS CLI 버전 2는 Amazon S3 엔드포인트로 전송된 서비스 요청을 암호화 방식으로 인증하는 이전 서명 알고리즘을 지원하지 않습니다. 서명은 모든 Amazon S3 요청에서 자동으로 수행되며 Signature Version 4 서명 프로세스만 지원됩니다. 서명 버전은 구성할 수 없습니다. 모든 Amazon S3 버킷에 사전 서명된 URL은 이제 SigV4만 사용하며 최대 만료 기간은 1주일입니다.

AWS CLI 버전 2에서는 페이징 파라미터에 대한 일관성이 개선됨

AWS CLI 버전 1에서는 명령줄에서 페이지 매김 파라미터를 지정하면 자동 페이지 매김이 예상대로 꺼집니다. 그러나 ‐‐cli-input-json 파라미터가 있는 파일을 사용하여 페이지 매김 파라미터를 지정할 경우 자동 페이지 매김이 꺼지지 않아 예기치 않은 출력이 발생할 수 있습니다. AWS CLI 버전 2는 파라미터를 제공하는 방법에 관계없이 자동 페이지 매김을 끕니다.

AWS CLI 버전 2는 모든 명령에서 보다 일관된 반환 코드를 제공함

AWS CLI 버전 2는 AWS CLI 버전 1에 비해 모든 명령에서 더 일관되고 적절한 종료 코드를 제대로 반환합니다. 종료 코드 252, 253 및 254도 추가되었습니다. 종료 코드에 대한 자세한 내용은 AWS CLI에서 코드 반환 섹션을 참조하세요.

AWS CLI 버전 1이 반환 코드 값을 사용하는 방식에 대한 종속성이 있는 경우 종료 코드를 확인하여 예상 값을 얻고 있는지 확인하는 것이 좋습니다.