파일에서 AWS CLI 파라미터 로드 - AWS Command Line Interface

이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.

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

파일에서 AWS CLI 파라미터 로드

어떤 파라미터는 파일 이름을 인수로 예상하며 AWS CLI가 데이터를 로드합니다. 다른 어떤 파라미터는 파라미터 값을 명령줄에 입력된 텍스트 또는 파일에서 읽은 텍스트로 지정할 수 있습니다. 파일이 필수인지 또는 선택 사항인지에 관계없이 AWS CLI에서 파일을 이해할 수 있도록 파일을 올바르게 인코딩해야 합니다. 파일의 인코딩은 읽는 시스템의 기본 로캘과 일치해야 합니다. Python locale.getpreferredencoding() 메서드를 사용하여 이를 확인할 수 있습니다.

참고

기본적으로 Windows PowerShell은 텍스트를 UTF-16으로 출력하며, 이는 JSON 파일과 여러 Linux 시스템에서 사용하는 UTF-8 인코딩과 충돌합니다. -Encoding ascii에서 결과 파일을 읽을 수 있도록 PowerShell Out-File 명령과 함께 AWS CLI를 사용하는 것이 좋습니다.

파일에서 파라미터를 로드하는 방법

모두 명령줄 파라미터 값으로 입력하려고 하는 것보다 파일에서 파라미터 값을 가져오는 것이 편리할 때가 있습니다(예: 파라미터가 복잡한 JSON 문자열일 때). 값을 포함하는 파일을 지정하려면 파일 URL을 다음 형식으로 지정합니다.

file://complete/path/to/file
  • 처음 두 개의 슬래시 '/' 문자는 사양의 일부입니다. 필수 경로가 '/'로 시작하면 결과는 슬래시 문자 세 개(file:///folder/file)입니다.

  • URL은 실제 파라미터 내용이 포함된 파일로의 경로를 제공합니다.

  • 공백이나 특수 문자가 있는 파일을 사용하는 경우 터미널의 인용 및 이스케이프 규칙을 따릅니다.

참고

이미 URL을 예측한 파라미터(예: AWS CloudFormation 템플릿 URL를 식별하는 파라미터)에서는 이 동작이 자동으로 비활성화됩니다. 또한 AWS CLI 구성 파일에서 cli_follow_urlparam 설정을 사용 중지하여 이 동작을 사용 중지할 수도 있습니다.

다음 예제의 파일 경로는 현재 작업 디렉터리를 기준으로 해석됩니다.

Linux or macOS
// Read from a file in the current directory $ aws ec2 describe-instances --filters file://filter.json // Read from a file in /tmp $ aws ec2 describe-instances --filters file:///tmp/filter.json // Read from a file with a filename with whitespaces $ aws ec2 describe-instances --filters 'file://filter content.json'
Windows command prompt
// Read from a file in C:\temp C:\> aws ec2 describe-instances --filters file://C:\temp\filter.json // Read from a file with a filename with whitespaces C:\> aws ec2 describe-instances --filters "file://C:\temp\filter content.json"

file:// 접두사 옵션은 "~/", "./", "../"를 포함한 Unix 스타일의 확장을 지원합니다. Windows에서는 "~/" 표현식이 %USERPROFILE% 환경 변수에 저장된 사용자 디렉터리로 확장합니다. 예를 들어, Windows 10은 일반적으로 C:\Users\UserName\ 아래에 사용자 디렉터리가 있습니다.

다른 JSON 문서 값으로 포함되는 JSON 문서는 계속 이스케이프해야 합니다.

$ aws sqs create-queue --queue-name my-queue --attributes file://attributes.json

attributes.json

{ "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-west-2:0123456789012:deadletter\", \"maxReceiveCount\":\"5\"}" }

이진 파일

이진 데이터를 파라미터로 갖고 있는 명령의 경우 fileb:// 접두사를 사용하여 데이터가 이진 콘텐츠임을 지정합니다. 이진 데이터를 수락하는 명령은 다음과 같습니다.

  • aws ec2 run-instances: --user-data 파라미터.

  • aws s3api put-object: --sse-customer-key 파라미터.

  • aws kms decrypt: --ciphertext-blob 파라미터.

다음 예제에서는 Linux 명령줄 도구를 사용하여 이진 256비트 AES 키를 생성한 다음, 이를 Amazon S3에 제공하여 업로드된 파일 서버측을 암호화합니다.

$ dd if=/dev/urandom bs=1 count=32 > sse.key 32+0 records in 32+0 records out 32 bytes (32 B) copied, 0.000164441 s, 195 kB/s $ aws s3api put-object \ --bucket my-bucket \ --key test.txt \ --body test.txt \ --sse-customer-key fileb://sse.key \ --sse-customer-algorithm AES256 { "SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==", "SSECustomerAlgorithm": "AES256", "ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\"" }

원격 파일

또한 AWS CLI는 http:// 또는 https:// URL을 사용하여 인터넷에서 호스트되는 파일에서 파라미터 로드를 지원합니다. 다음 예제에서는 Amazon S3 버킷에 저장된 파일을 참조합니다. 이렇게 하면 모든 컴퓨터에서 파라미터 파일에 액세스할 수 있지만, 컨테이너에 공개적으로 액세스할 수 있어야 합니다.

$ aws ec2 run-instances \ --image-id ami-12345678 \ --block-device-mappings http://my-bucket.s3.amazonaws.com/filename.json

위의 예제에서는 filename.json 파일에 다음 JSON 데이터가 포함된 것으로 가정합니다.

[ { "DeviceName": "/dev/sdb", "Ebs": { "VolumeSize": 20, "DeleteOnTermination": false, "VolumeType": "standard" } } ]

JSON 형식의 파라미터를 포함하는 파일을 참조하는 다른 예제는 IAM관리형 정책을 사용자에게 연결 섹션을 참조하세요.