인스턴스 메타데이터를 사용해 EC2 인스턴스의 태그 보기
인스턴스 메타데이터를 사용해 EC2 인스턴스의 태그 보기
인스턴스 메타데이터에서 인스턴스의 태그에 접근할 수 있어요. 인스턴스 메타데이터에서 태그에 접근하면 더 이상 태그 정보를 검색하기 위해 DescribeInstances 또는 DescribeTags API 호출을 사용할 필요가 없어 초당 API 트랜잭션 수를 줄이고, 사용자가 제어하는 인스턴스 수에 맞춰 태그 검색을 확장할 수 있게 해줍니다. 또한 인스턴스에서 실행 중인 로컬 프로세스가 인스턴스 메타데이터에서 직접 태그 정보를 볼 수 있습니다.
출처: 문서
본문
기본적으로 태그는 인스턴스 메타데이터에서 사용할 수 없습니다. 접근을 명시적으로 허용해야 해요. 인스턴스 실행 시 또는 실행 후 실행 중이거나 중지된 인스턴스에서 접근을 허용할 수 있습니다. 실행 템플릿에서 이를 지정함으로써 태그 접근을 허용할 수도 있어요. 템플릿으로 실행된 인스턴스는 인스턴스 메타데이터에서 태그 접근을 허용합니다.
인스턴스 태그를 추가하거나 제거하면 인스턴스가 실행 중일 때 인스턴스 메타데이터가 즉시 업데이트되며, 인스턴스를 중지했다 시작할 필요가 없어요.
작업 (Tasks)
- Enable access to tags in instance metadata
- Retrieve tags from instance metadata
- Disable access to tags in instance metadata
인스턴스 메타데이터에서 태그 접근 활성화하기 (Enable access to tags in instance metadata)
기본적으로 인스턴스 메타데이터에는 인스턴스 태그에 대한 접근이 없어요. 각 인스턴스에 대해 접근을 명시적으로 활성화해야 합니다.
참고: 인스턴스 메타데이터에서 태그 접근을 허용하면 인스턴스 태그 키에 특정 제한이 적용됩니다. 이를 준수하지 않으면 새 인스턴스는 실행 실패, 기존 인스턴스는 오류가 발생합니다. 제한 사항은 다음과 같습니다.
- 문자(a-z, A-Z), 숫자(0-9), 다음 문자
+ - = . , _ : @만 포함할 수 있어요.- 공백이나
/를 포함할 수 없습니다..(마침표 하나),..(마침표 둘),_index만으로 구성될 수 없습니다.
자세한 내용은 Tag restrictions 문서를 참고하세요.
콘솔 (Console) — 인스턴스 실행 중 인스턴스 메타데이터에서 태그 접근을 활성화하려면
- 인스턴스를 실행하는 절차를 따릅니다.
- Advanced details를 펼치고 Allow tags in metadata에서 Enable을 선택합니다.
- Summary 패널에서 인스턴스 구성을 검토하고 Launch instance를 선택합니다. 자세한 내용은 Launch an EC2 instance using the launch instance wizard in the console 문서를 참고하세요.
콘솔 (Console) — 인스턴스 실행 후 인스턴스 메타데이터에서 태그 접근을 활성화하려면
- Amazon EC2 콘솔을 엽니다. https://console.aws.amazon.com/ec2/
- 탐색 창에서 Instances를 선택합니다.
- 인스턴스를 선택하고 Actions, Instance settings, Allow tags in instance metadata를 선택합니다.
- 인스턴스 메타데이터에서 태그 접근을 허용하려면 Allow 확인란을 선택합니다.
- Save를 선택합니다.
AWS CLI — 인스턴스 실행 중 인스턴스 메타데이터에서 태그 접근을 활성화하려면
run-instances 명령을 사용하고 다음 --metadata-options 옵션을 추가합니다.
--metadata-options "InstanceMetadataTags=enabled"
AWS CLI — 인스턴스 실행 후 인스턴스 메타데이터에서 태그 접근을 활성화하려면
다음 modify-instance-metadata-options 명령을 사용합니다.
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--instance-metadata-tags enabled
AWS CLI — 인스턴스 메타데이터에서 태그 접근이 활성화되었는지 확인하려면
describe-instances 명령을 사용하고 InstanceMetadataTags의 값을 확인합니다.
aws ec2 describe-instances \
--instance-ids i-1234567890abcdef0 \
--query "Reservations[*].Instances[].MetadataOptions[].InstanceMetadataTags"
다음은 출력 예시입니다. 값은 enabled 또는 disabled입니다.
[
"enabled"
]
PowerShell — 인스턴스 실행 중 인스턴스 메타데이터에서 태그 접근을 활성화하려면
New-EC2Instance cmdlet을 사용하고 다음 -MetadataOptions_InstanceMetadataTags 파라미터를 추가합니다.
-MetadataOptions_InstanceMetadataTags enabled
PowerShell — 인스턴스 실행 후 인스턴스 메타데이터에서 태그 접근을 활성화하려면
Edit-EC2InstanceMetadataOption cmdlet을 사용합니다.
Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-InstanceMetadataTags enabled
PowerShell — 인스턴스 메타데이터에서 태그 접근이 활성화되었는지 확인하려면
Get-EC2Instance cmdlet을 사용하고 InstanceMetadataTags의 값을 확인합니다.
(Get-EC2Instance `
-InstanceId i-1234567890abcdef0).Instances.MetadataOptions.InstanceMetadataTags.Value
다음은 출력 예시입니다. 값은 enabled 또는 disabled입니다.
enabled
인스턴스 메타데이터에서 태그 가져오기 (Retrieve tags from instance metadata)
인스턴스 메타데이터에서 인스턴스 태그 접근을 허용한 후에는, 인스턴스 메타데이터의 tags/instance 범주에 접근할 수 있어요. 자세한 내용은 Access instance metadata for an EC2 instance 문서를 참고하세요.
IMDSv2
Linux — Linux 인스턴스에서 다음 명령을 실행해 인스턴스의 모든 태그 키를 나열합니다.
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/meta-data/tags/instance
이 예시는 이전 예시에서 얻은 키의 값을 가져옵니다. IMDSv2 요청은 이전 예시의 명령으로 만든 저장된 토큰을 사용합니다. 토큰은 만료되지 않아야 해요.
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/tag-key
Windows — Windows 인스턴스에서 다음 cmdlet을 실행해 인스턴스의 모든 태그 키를 나열합니다.
$token = Invoke-RestMethod `
-Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
-Method PUT -Uri http://169.254.169.254/latest/api/token
Invoke-RestMethod `
-Headers @{"X-aws-ec2-metadata-token" = $token} `
-Method GET -Uri http://169.254.169.254/latest/meta-data/tags/instance
이 예시는 이전 예시에서 얻은 키의 값을 가져옵니다. IMDSv2 요청은 이전 예시의 명령으로 만든 저장된 토큰을 사용합니다. 토큰은 만료되지 않아야 해요.
Invoke-RestMethod `
-Headers @{"X-aws-ec2-metadata-token" = $token} `
-Method GET -Uri http://169.254.169.254/latest/meta-data/tags/instance/tag-key
IMDSv1
Linux — Linux 인스턴스에서 다음 명령을 실행해 인스턴스의 모든 태그 키를 나열합니다.
curl http://169.254.169.254/latest/meta-data/tags/instance
이 예시는 이전 예시에서 얻은 키의 값을 가져옵니다.
curl http://169.254.169.254/latest/meta-data/tags/instance/tag-key
Windows — Windows 인스턴스에서 다음 cmdlet을 실행해 인스턴스의 모든 태그 키를 나열합니다.
Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/tags/instance
이 예시는 이전 예시에서 얻은 키의 값을 가져옵니다.
Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/tags/instance/tag-key
인스턴스 메타데이터에서 태그 접근 비활성화하기 (Disable access to tags in instance metadata)
인스턴스 메타데이터에서 인스턴스 태그 접근을 비활성화할 수 있어요. 기본적으로 꺼져 있으므로 실행 시 인스턴스 메타데이터의 인스턴스 태그 접근을 비활성화할 필요는 없습니다.
콘솔 (Console)
인스턴스 메타데이터에서 태그 접근을 비활성화하려면
- Amazon EC2 콘솔을 엽니다. https://console.aws.amazon.com/ec2/
- 탐색 창에서 Instances를 선택합니다.
- 인스턴스를 선택하고 Actions, Instance settings, Allow tags in instance metadata를 선택합니다.
- 인스턴스 메타데이터에서 태그 접근을 끄려면 Allow 확인란을 선택 해제합니다.
- Save를 선택합니다.
AWS CLI
인스턴스 메타데이터에서 태그 접근을 비활성화하려면 다음 modify-instance-metadata-options 명령을 사용합니다.
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--instance-metadata-tags disabled
PowerShell
인스턴스 메타데이터에서 태그 접근을 비활성화하려면 Edit-EC2InstanceMetadataOption cmdlet을 사용합니다.
Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-InstanceMetadataTag disabled