728x90
[AWS] boto3 filter
저번 포스팅에서 boto3 라이브러리를 이용하여 ec2의 정보를 구했었다.
filter
특정 조건에 맞는 ec2 정보를 받아오는 파이썬 코드를 구현하던 중,
boto3에는 filter를 사용하면 특정 상태, 특정 인스턴스 id 또는 특정 태그값에 맞는 인스턴스 정보를
받아 올 수 있다는 것을 알게됐다.
참고로 aws CLI에서도 다음과 같은 기능을 제공한다.
aws ec2 describe-instances --filters Name=instance-type,Values=m5.large,m5d.large
참고 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/Using_Filtering.html
boto3에서 사용하는 방법은 다음과 같다.
상태가 running 중인 ec2만 가져오고싶다고 할때, filter를 먼저 정의해준다.
filter는 딕셔너리 형태로 정의를 해주면 된다, Key는 Name, Values고
가지고 오고싶은 상태등을 Name으로 지정하고 Values에는 값을 넣어주면 된다.
Values의 값은 리스트나 튜플이여야 하며, 문자열로 넣으면 오류가 발생한다.
filters = [{
'Name':'instance-state-name',
'Values':['running']
}]
filter를 정의했으면 ec2_describe에 적용해준다.
response = ec2.describe_instances(Filters=filters)
state를 출력했을 때, running만 나오는 모습을 확인할 수 있다.
for reservation in response["Reservations"]:
for i in reservation["Instances"]:
print(i['State']['Name'])
tag값에 filter를 걸고싶을 땐, 다음과 같이 걸 수 있으며
*, ? 와 같은 표현식 사용이 가능하다.
filters = [{
'Name':'instance-state-name',
'Values':['running']
},
{
'Name':'tag:Name',
'Values':['test-*']
}]
참고
https://stackoverflow.com/questions/38122563/filter-instances-by-state-with-boto3
반응형
'💻 CSP > AWS' 카테고리의 다른 글
[AWS] profile 확인 (0) | 2024.01.02 |
---|---|
[AWS Cli] 리전에서 사용가능한 인스턴스 유형 확인하기 (0) | 2023.12.29 |
[AWS] ec2metadata (0) | 2023.11.29 |
[AWS] boto3로 EC2 Instance 정보 구하기 (0) | 2023.11.28 |
[AWS Cli] S3 총 객체 수 확인하기 (0) | 2023.11.20 |