boto3를 사용하여 Python 스크립트로 3개의 특정 EC2 인스턴스를 중지하는 방법
Boto3는 Python용 Amazon Web Services(AWS) 소프트웨어 개발 키트(SDK)입니다. Elastic Compute Cloud(EC2), DynamoDB, AWS Config, Cloud Watch 및 Simple Storage Service를 포함한 모든 현재 AWS 클라우드 서비스를 지원합니다. 이를 통해 Python 스크립트에서 AWS 리소스를 직접 생성, 업데이트 및 삭제할 수 있습니다.
이 기사에서는 boto3와 함께 Python 스크립트를 사용하여 DEV 태그가 있는 3개의 EC2 인스턴스를 중지하는 방법을 보여 드리겠습니다.
목표:
메모:
Cloud9 EC2 인스턴스를 중지하지 않는 논리를 추가했습니다.
전제 조건:
사용된 리소스:
learn-to-code.workshop.aws
Boto3 documentation — Boto3 Docs 1.24.56 documentation
시작하자!
cloud9 환경에서 boto3_multiple_ec2라는 새 디렉터리를 만듭니다.
mkdir <directory name>
cd boto3_multiple_ec2
저는 이 스크립트로 작업할 때 "DEV"태그가 있는 3개의 EC2 인스턴스만 인쇄하고 Cloud9 환경의 EC2 인스턴스를 중단하지 않도록 작은 코드 덩어리로 작업하는 데 매우 주의했습니다.
Python 스크립트가 작동하면 코드를 복사하여 스크립트(boto3_multiple_ec2.py)에 붙여넣었습니다.
다음은 파이썬 스크립트의 요지입니다.
# --- boto3_python_projects/boto3_multiple_ec2.py ---
# AWS Python SDK
import boto3
# A low-level client representing Amazon Elastic Compute Cloud (EC2)
ec2_client=boto3.client("ec2")
# use Amazon service ec2
ec2_resource=boto3.resource("ec2")
# create 4 ec2 instances
ec2_resource.create_instances(
ImageId='ami-090fa75af13c156b4',
InstanceType='t2.micro',
MaxCount=5,
MinCount=5)
# List of ec2 instance ids
ec2_instance_ids = []
# iterate and prints all ec2 instances
# EXCEPT Cloud9 id - i-0e6238103c9b3f9a8
response=ec2_client.describe_instances()
# reservations = response['Reservations']
for reservation in response['Reservations']:
for instance in reservation['Instances']:
# instanceId = instance["InstanceId"]
# not to print Cloud9 id - i-0e6238103c9b3f9a8
if ("i-0e6238103c9b3f9a8" != instance["InstanceId"]):
print(instance["InstanceId"])
ec2_instance_ids.append(instance["InstanceId"])
# create tags for 3 ec2 instances
# with **Environment: Dev** tag
response=ec2_client.create_tags(
Resources=[
ec2_instance_ids[1], ec2_instance_ids[2], ec2_instance_ids[3],
],
Tags=[
{
'Key': 'Environment',
'Value': 'dev',
},
],
)
# filters **running** instances that have the **Environment: Dev** tag.
instances = ec2_resource.instances.filter(
Filters = [{'Name': 'instance-state-name', 'Values': ['running']},
{'Name': 'tag:Environment', 'Values':['dev']}])
# only stops **running** instances that have the **Environment: Dev** tag.
for instance in instances:
try:
instance.stop()
print(f'{instance} stopped')
except:
print(f'Error stopping {instance}')
내 GitHub repository에서도 동일한 코드를 볼 수 있습니다.
우리가 지금까지 한 일
"DEV"태그가 있는 3개의 특정 EC2 인스턴스를 중지하고 내 Cloud9 EC2 인스턴스를 활성 상태로 유지하기 위해 boto3로 Python 스크립트를 생성했습니다!!!
간단하고 간단한 스크립트처럼 보이지만 로직을 작동시키기 위해 많은 오류가 발생했습니다. 저는 파이썬을 좋아하고 그것으로 프로젝트를 하는 것이 재미있습니다.
Reference
이 문제에 관하여(boto3를 사용하여 Python 스크립트로 3개의 특정 EC2 인스턴스를 중지하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/how-to-stop-three-specific-ec2-instances-with-python-script-using-boto3-3kp0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)