인스턴스 사용자 데이터 작업 - Amazon Elastic Compute Cloud

인스턴스 사용자 데이터 작업

인스턴스 사용자 데이터를 사용하여 인스턴스를 사용자 지정할 수 있습니다. 인스턴스를 시작할 때 파라미터 또는 스크립트를 사용자 데이터로 저장할 수 있습니다. 인스턴스를 시작할 때 사용자 데이터의 모든 스크립트가 실행됩니다. 사용자 데이터를 인스턴스 속성으로 볼 수 있습니다. 인스턴스 메타데이터 서비스(IMDS)를 통해 인스턴스의 사용자 데이터를 볼 수도 있습니다.

고려 사항
  • 사용자 데이터는 불투명 데이터로 취급됩니다. 검색 시 지정한 항목만 가져옵니다. 사용자 데이터 해석과 그에 따른 조치 수행은 인스턴스에 따라 다릅니다.

  • 사용자 데이터는 base64로 인코딩해야 합니다. 사용 중인 도구 또는 SDK에 따라 base64 인코딩이 자동으로 수행될 수 있습니다. 예:

    • Amazon EC2 콘솔은 base64 인코딩을 수행하거나 base64로 인코딩된 입력을 수락할 수 있습니다.

    • AWS CLI 버전 2는 기본적으로 바이너리 파라미터의 base64 인코딩을 자동으로 수행합니다. AWS CLI 버전 1은 --user-data 파라미터의 base64 인코딩을 자동으로 수행합니다.

    • AWS SDK for Python (Boto3)는 UserData 파라미터의 base64 인코딩을 자동으로 수행합니다.

  • 사용자 데이터는 base64로 인코딩되기 전에 원시 16KB 형식으로 제한됩니다. base64 인코딩 이후 n 길이의 문자열 크기는 ceil(n/3)*4입니다.

  • 사용자 데이터는 가져올 때 base64로 디코딩해야 합니다. 인스턴스 메타데이터 또는 콘솔을 사용하여 데이터를 가져오는 경우 데이터는 자동으로 디코딩됩니다.

  • 인스턴스를 중지하고 사용자 데이터를 수정한 다음 인스턴스를 시작할 경우 인스턴스를 시작할 때 업데이트된 사용자 데이터가 자동으로 실행되지 않습니다. Windows 인스턴스에서는 인스턴스를 시작할 때 한 번만 또는 인스턴스를 재부팅하거나 시작할 때마다 업데이트된 사용자 데이터 스크립트가 실행되도록 설정을 구성할 수 있습니다.

  • 사용자 데이터는 인스턴스 속성입니다. 인스턴스에서 AMI를 생성하는 경우 인스턴스 사용자 데이터는 AMI에 포함되지 않습니다.

시작 시 인스턴스 사용자 데이터 지정

인스턴스를 시작할 때 사용자 데이터를 지정할 수 있습니다. 콘솔 지침은 시작 시 인스턴스 사용자 데이터 지정 섹션을 참조하세요. AWS CLI를 사용하는 Linux의 예는 사용자 데이터 및 AWS CLI 섹션을 참조하세요. Windows PowerShell용 도구를 사용하는 Windows의 예는 사용자 데이터 및 Tools for Windows PowerShell 섹션을 참조하세요.

인스턴스 사용자 데이터 수정

EBS 루트 볼륨이 있는 인스턴스의 사용자 데이터를 수정할 수 있습니다. 인스턴스가 중지 상태여야 합니다. 콘솔 지침은 인스턴스 사용자 데이터 보기 및 업데이트 섹션을 참조하세요. AWS CLI를 사용하는 Linux의 예는 modify-instance-attribute를 참조하세요. Windows PowerShell용 도구를 사용하는 Windows의 예는 사용자 데이터 및 Tools for Windows PowerShell 섹션을 참조하세요.

인스턴스에서 인스턴스 사용자 데이터 검색

인스턴스에서 사용자 데이터를 검색하려면 다음 URI 중 하나를 사용합니다. IPv6 주소를 사용하여 사용자 데이터를 검색하려면 해당 주소를 활성화해야 하며, 인스턴스는 IPv6를 지원하는 서브넷의 AWS Nitro 시스템에 구축된 인스턴스여야 합니다.

IPv4

http://169.254.169.254/latest/user-data

IPv6

http://[fd00:ec2::254]/latest/user-data

사용자 데이터를 요청하면 데이터 자체(콘텐츠 유형 application/octet-stream)가 반환됩니다. 인스턴스에 사용자 데이터가 없는 경우 요청에서 404 - Not Found를 반환합니다.

예제: 쉼표로 구분된 텍스트 검색

이 예제는 쉼표로 구분된 텍스트로 지정된 사용자 데이터를 검색합니다.

cURL

IMDSv2

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,

IMDSv1

[ec2-user ~]$ curl http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
PowerShell

IMDSv2

PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,

IMDSv1

PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} ` -Method PUT -Uri http://169.254.169.254/latest/api/token} -Method GET -uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
예제: 스크립트 검색

이 예제는 스크립트로 지정된 사용자 데이터를 검색합니다.

cURL

IMDSv2

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data #!/bin/bash yum update -y service httpd start chkconfig httpd on

IMDSv1

[ec2-user ~]$ curl http://169.254.169.254/latest/user-data #!/bin/bash yum update -y service httpd start chkconfig httpd on
Powershell

IMDSv2

PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

IMDSv1

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

컴퓨터에서 인스턴스 사용자 데이터 검색

고유의 컴퓨터에서 인스턴스용 사용자 데이터를 검색할 수 있습니다. 콘솔 지침은 인스턴스 사용자 데이터 보기 및 업데이트 섹션을 참조하세요. AWS CLI를 사용하는 예는 사용자 데이터 및 AWS CLI 섹션을 참조하세요. Windows PowerShell용 도구를 사용하는 예는 사용자 데이터 및 Tools for Windows PowerShell 섹션을 참조하세요.