본문 바로가기
공부/IaC

[Boto3] Linux에서 Python으로 AWS 리소스 프로비저닝하기 (IAM, Key Pair, VPC, EC2)

by haejang 2020. 8. 18.
728x90
728x90

 

먼저 Linux에서 필요한 패키지들을 받는다

yum -y update
yum -y install epel-release
yum -y install python3
yum -y install vim
python3 --version

 

 

파이썬 3.6.8로 해야한다

pip3 install awscli
pip3 install awscli --upgrade pip
pip install boto3
which aws

 

 

aws의 위치를 확인했으면, 이를 이제 환경변수 PATH에 추가해줘야 한다

export PATH=$PATH:/usr/local/bin/aws
echo $PATH

 

 

PATH에 경로가 추가된 것을 확인할 수 있다

aws 버전도 확인해보면

aws --version

 

 

이렇게 뜬다

이제 aws 설정을 해줘야 한다

aws 콘솔로 들어가서 본인 계정의 액세스 키와 시크릿 액세스 키를 얻어야 한다

 

 

서비스 >> IAM >> 루트 액세스 키 삭제 >> 보안 자격 증명 관리

 

 

액세스 키 >> 새 액세스 키 만들기 를 해서 액세스 키와 시크릿 액세스 키를 복사해둔다

 

이제 다시 리눅스로 돌아와서, aws config를 해보자

aws configure

 

 

리전은 본인이 원하는 리전 써도 된다

이제 폴더 하나를 생성해서 들어간 후, 파이썬 파일들을 만들어보자

 

1. IAM 사용자 생성 + 정책 연결

mkdir aws-boto3
cd aws-boto3
vim create-assign-policy.py

이 파일에서 IAM 사용자를 하나 생성할 것이다

관리자의 모든 권한을 줄 것이기 때문에 AdministratorAccess  AdministratorAccess 정책의 ARN을 복사해준다

 

 

 

create-assign-policy.py 파일을 다음과 같이 작성해준다

import boto3
iam=boto3.client('iam')				#boto3 모듈의 client란 함수의 iam이란 변수

#create user
iam.create_user(UserName='hong')		#UserName이 hong인 사용자 생성

#attach policy					#AdministratorAccess 정책 연결
iam.attach_user_policy(
 UserName='hong',
 PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess'
)

boto3는 aws 사용할 수 있는 함수들이 모아져 있는 모듈이다

그리고 파이썬 파일을 실행하자

python3 create-assign-policy.py

이제 콘솔로 돌아가보면

 

 

hong 이라는 사용자가 만들어져 있다

hong을 클릭해보면

 

 

정책도 잘 연결되어 있다

 

추가로 파이썬으로 현재 내 계정의 사용자 목록들을 출력해보겠다

vim verify-users.py

 

import boto3

client=boto3.client('iam')
response=client.list_users()
for x in response['Users']:
  print(x['UserName'])

그리고 이제 실행해보면

python3 verify-users.py

 

 

내 계정의 사용자 목록이 잘 출력된다

 

2. 키 페어 생성

vim create-keypair.py

 

import boto3

ec2=boto3.resource('ec2')

outfile=open('ec2-keypair.pem','w')

key_pair=ec2.create_key_pair(KeyName='ec2-keypair')

KeyPairOut=str(key_pair.key_material)
print(KeyPairOut)
outfile.write(KeyPairOut)

3번째줄 : ec2-keypair.pem을 write 권한으로 열겠다는 뜻이다

실행해보면

 

python3 create-keypair.py

 

 

키를 print 해준다. 콘솔에도 들어가보면

 

 

키 페어가 생성되어 있다

 

3. VPC 생성(+subnet, internet gateway)

vim create-vpc.py
#Creating a VPC, subnet, gateway
import boto3

ec2=boto3.resource('ec2')
client=boto3.client('ec2')

vpc=ec2.create_vpc(CidrBlock='10.30.0.0/16')
subnet=vpc.create_subnet(CidrBlock='10.30.0.0/24')
internetgateway=ec2.create_internet_gateway()
vpc.attach_internet_gateway(InternetGatewayId=internetgateway.id)

#assign a name to VPC
vpc.create_tags(Tags=[{"Key":"Name","Value":"vpc-A"}])
vpc.wait_until_available()

ec2와 vpc에 cidr 블록을 설정해주고, internet gateway를 생성해 vpc에 연결해준다

그리고 vpc의 Name 태그를 vpc-A로 설정을 한다

python3 create-vpc.py

콘솔 가서 확인해보면

 

vpc
서브넷
인터넷 게이트웨이

 

모두 다 만들어져 있다

 

추가로 vpc를 확인하는 파일도 만들어보자

vim verify-vpcid.py
import boto3

ec2=boto3.resource('ec2')
ec2client=boto3.client('ec2')

response=ec2client.describe_vpcs()
for vpc in response["Vpcs"]:
    print("VpcId = " + vpc["VpcId"] + " uses CIDR of " + vpc["CidrBlock"])
python3 verify-vpcid.py

 

 

현재 내 리전의 vpc 목록들이 뜰 것이다

물론 난 지금 만든거밖에 없어서 하나만 뜬다

 

4. EC2 생성

일단 기본 VPC가 있어야 한다. 없으면 만들자

vim create-ec2.py
import boto3
ec2=boto3.resource('ec2')

#create new EC2 instance
instances=ec2.create_instances(
    ImageId='ami-08c8b5clce9598c3',
    MinCount=1,
    MaxCount=1,
    InstanceType='t2.micro',
    KeyName='ec2-keypair'
)
python3 create-ec2.py

실행하고 콘솔에 가보면

 

 

설정한 대로의 EC2가 만들어져 있다

728x90
728x90

댓글