AWS SDK로 AWS 인프라 관리하기(boto3 설치 및 구성)
[매뉴얼] Boto3가 AWS의 자격증명(Credentials)을 확인하는 순서 .from Python
boto3은 Python을 위한 AWS SDK이다.
boto3을 사용하기 위해서는 boto3을 설치하고, AWS IAM 액세스 키를 발급받아야 한다.
pip install boto3
콘솔에서 우측 상단 계정명 클릭 > 보안 자격 증명 > 액세스 키 > [액세스 키 만들기] 로 액세스 키를 생성한다.

~/.aws 디렉터리를 생성하고 credentials 파일과 config 파일을 생성 후 다음과 같이 작성한다. 스크립트에서 따옴표는 사용하지 않는다.
# ~/.aws/credentials
[default]
aws_access_key_id = <YOUR_ACCESS_KEY>
aws_secret_access_key = <YOUR_SECRET_KEY>
# ~/.aws/config
[default]
region = <YOUR_REGION>
import boto3
s3 = boto3.resource('s3')
print("Your s3's are:")
for bucket in s3.buckets.all():
print(bucket.name)


import boto3
s3 = boto3.client('s3')
response = s3.list_buckets()
print(response)
print()
print("Your s3 buckets are:")
for bucket in response['Buckets']:
print(bucket["Name"])

import boto3
AWS_ACCESS_KEY_ID ="[access_key]"
AWS_SECRET_ACCESS_KEY = "[secret_key]"
AWS_DEFAULT_REGION = "ap-northeast-2"
client = boto3.client('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
region_name=AWS_DEFAULT_REGION
) # 권한을 얻음
response = client.list_buckets()
print(response)
describe_instances()
import boto3
client = boto3.client('ec2')
response = client.**describe_instances**()
for reservation in response['Reservations']:
for instance in reservation['Instances']:
print(instance['InstanceId'], instance['State']['Name'])
start_instances()
import boto3
instances = ['i-xxx', 'i-xxx'] # ec2 인스턴스 id
ec2 = boto3.client('ec2')
ec2.**start_instances**(InstanceIds=instances)
print('Start your instances ' + str(instances))
stop_instances()
import boto3
instances = ['i-xxx', 'i-xxx'] # ec2 인스턴스 id
ec2 = boto3.client('ec2')
ec2.**stop_instances**(InstanceIds=instances)
print('Stopped your instances ' + str(instances))
즉 API와 client 메서드는 거의 1:1 매핑되어 있기에 콘솔과 번갈아 사용하는 데에 있어 사용성이 편리하다.
예를 들어 AWS CLI 에서 ec2 인스턴스를 검색하기 위해서는
aws ec2 **describe-instances** --instance-id <instance-id>
명령어를 사용한다. boto3의 client 메소드로는
import boto3
client = ec2.client('ec2')
response = client.**describe_instances**(
InstanceIds=['<instance-id>']
)
로 구현한다. api와 메소드 명이 거의 유사하다.
export AWS_ACCESS_KEY_ID=*YOUR_ACCESS_KEY*
export AWS_SECRET_ACCESS_KEY=*YOUR_SECRET_KEY*
export AWS_DEFAULT_REGION=*AWS_REGION_INFO*
env # 환경 구성 확인하기
공유 자격증명 파일(credentials)은 자격증명과 관련한 변수인 aws_access_key_id, aws_secret_access_key, aws_session_token만 지정할 수 있다. 각 프로필에 해당하는 섹션 이름이 있는 INI 형식으로 작성한다. (aws_session_token은 옵션)
파일의 기본 위치는 ~/.aws/credentials 이고, AWS_SHARED_CREDENTIALS_FILE 환경 변수를 설정하여 credentials 파일의 위치를 변경할 수 있다.
[default]
aws_access_key_id = YOUR_ACCESS_KEY1
aws_secret_access_key = YOUR_SECRET_KEY1
aws_session_token = YOUR_SESSION_TOKEN1
[dev]
aws_access_key_id = YOUR_ACCESS_KEY2
aws_secret_access_key = YOUR_SECRET_KEY2
[prod]
aws_access_key_id = YOUR_ACCESS_KEY3
aws_secret_access_key = YOUR_SECRET_KEY3