먼저 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를 확인하는 파일도 만들어보자
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가 만들어져 있다
'공부 > IaC' 카테고리의 다른 글
[AWS CloudFormation] #0 실습 전 개념 정리 (0) | 2021.01.04 |
---|---|
[Ansible] Role 사용법과 변수 파일(vars) 설정, 암호화 (1) | 2020.11.11 |
[Ansible] Ansible로 Git 레포지토리 연결하기 (0) | 2020.11.08 |
[Ansible] Ansible 기초 개념과 AWS에서 사용하기(VPC, EC2) (0) | 2020.11.08 |
[Boto3] 윈도우에서 Python으로 AWS 리소스 프로비저닝하기 (0) | 2020.10.22 |
댓글