استفاده از Boto3 برای AWS: راهنمای جامع با پایتون
Boto3 کتابخانه رسمی توسعه داده شده توسط آمازون برای تعامل با سرویسهای وب آمازون (AWS) از طریق پایتون است. این کتابخانه امکان خودکارسازی وظایف مدیریتی، توسعه برنامههای کاربردی مبتنی بر ابر و مدیریت منابع AWS را فراهم میکند. این مقاله به عنوان بخشی از مجموعه آموزشهای پایتون در دستهبندی ‘کتابخانههای خاص و کاربردی’ به بررسی عمیق Boto3 و نحوه استفاده از آن میپردازد.
پیشنیازها
قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:
- پایتون نصب شده (نسخه 3.6 یا بالاتر توصیه میشود)
- یک حساب کاربری AWS
- تنظیمات اعتبار AWS (Access Key ID و Secret Access Key)
- نصب Boto3:
pip install boto3
مقدمهای بر Boto3
Boto3 یک رابط برنامهنویسی کاربردی (API) را برای سرویسهای AWS فراهم میکند. این بدان معناست که شما میتوانید با استفاده از کد پایتون، به جای استفاده از کنسول وب AWS، با سرویسهای مختلف AWS تعامل داشته باشید. Boto3 از مدلهای مختلفی برای تعامل با AWS پشتیبانی میکند، از جمله:
- Clients: رابطی سطح پایین برای ارسال درخواستهای مستقیم به سرویسهای AWS.
- Resources: رابطی سطح بالا که انتزاعیتر است و کار با منابع AWS را آسانتر میکند.
پیکربندی اعتبار AWS
Boto3 برای دسترسی به سرویسهای AWS به اعتبارنامههای شما نیاز دارد. چندین روش برای پیکربندی اعتبارنامهها وجود دارد:
- متغیرهای محیطی: تنظیم متغیرهای محیطی
AWS_ACCESS_KEY_IDوAWS_SECRET_ACCESS_KEY. - فایل پیکربندی AWS: ایجاد یک فایل به نام
~/.aws/credentialsبا فرمت زیر:[default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY - نقشهای IAM: استفاده از نقشهای IAM برای دسترسی به منابع AWS، به ویژه در محیطهای EC2.
کار با S3 (Simple Storage Service)
S3 یک سرویس ذخیرهسازی ابری است که برای ذخیره و بازیابی دادهها استفاده میشود. در اینجا نحوه استفاده از Boto3 برای کار با S3 آورده شده است:
ایجاد یک Bucket
import boto3
s3 = boto3.client('s3')
bucket_name = 'your-unique-bucket-name'
try:
s3.create_bucket(Bucket=bucket_name)
print(f"Bucket '{bucket_name}' created successfully.")
except Exception as e:
print(f"Error creating bucket: {e}")
آپلود یک فایل
file_name = 'your_file.txt'
bucket_name = 'your-unique-bucket-name'
try:
s3.upload_file(file_name, bucket_name, file_name)
print(f"File '{file_name}' uploaded to bucket '{bucket_name}' successfully.")
except Exception as e:
print(f"Error uploading file: {e}")
دانلود یک فایل
file_name = 'your_file.txt'
bucket_name = 'your-unique-bucket-name'
try:
s3.download_file(bucket_name, file_name, file_name)
print(f"File '{file_name}' downloaded from bucket '{bucket_name}' successfully.")
except Exception as e:
print(f"Error downloading file: {e}")
لیست کردن فایلها در یک Bucket
bucket_name = 'your-unique-bucket-name'
try:
response = s3.list_objects_v2(Bucket=bucket_name)
if 'Contents' in response:
for obj in response['Contents']:
print(obj['Key'])
else:
print(f"Bucket '{bucket_name}' is empty.")
except Exception as e:
print(f"Error listing objects: {e}")
کار با EC2 (Elastic Compute Cloud)
EC2 یک سرویس محاسباتی ابری است که به شما امکان میدهد ماشینهای مجازی (Instances) را در ابر AWS اجرا کنید.
راهاندازی یک Instance
import boto3
ec2 = boto3.client('ec2')
image_id = 'ami-xxxxxxxxxxxxxxxxx' # Replace with a valid AMI ID
instance_type = 't2.micro'
try:
response = ec2.run_instances(
ImageId=image_id,
InstanceType=instance_type,
MinCount=1,
MaxCount=1
)
instance_id = response['Instances'][0]['InstanceId']
print(f"Instance '{instance_id}' launched successfully.")
except Exception as e:
print(f"Error launching instance: {e}")
توقف یک Instance
instance_id = 'i-xxxxxxxxxxxxxxxxx' # Replace with your instance ID
try:
ec2.stop_instances(InstanceIds=[instance_id])
print(f"Instance '{instance_id}' stopped successfully.")
except Exception as e:
print(f"Error stopping instance: {e}")
شروع یک Instance
instance_id = 'i-xxxxxxxxxxxxxxxxx' # Replace with your instance ID
try:
ec2.start_instances(InstanceIds=[instance_id])
print(f"Instance '{instance_id}' started successfully.")
except Exception as e:
print(f"Error starting instance: {e}")
لیست کردن Instances
try:
response = ec2.describe_instances()
for reservation in response['Reservations']:
for instance in reservation['Instances']:
print(f"Instance ID: {instance['InstanceId']}, State: {instance['State']['Name']}")
except Exception as e:
print(f"Error describing instances: {e}")
کار با DynamoDB
DynamoDB یک سرویس پایگاه داده NoSQL کاملاً مدیریت شده است.
ایجاد یک جدول
import boto3
dynamodb = boto3.client('dynamodb')
table_name = 'your_table_name'
try:
dynamodb.create_table(
TableName=table_name,
KeySchema=[
{
'AttributeName': 'id',
'KeyType': 'HASH' # Partition key
}
],
AttributeDefinitions=[
{
'AttributeName': 'id',
'AttributeType': 'S' # String
}
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)
print(f"Table '{table_name}' created successfully.")
except Exception as e:
print(f"Error creating table: {e}")
اضافه کردن یک آیتم
table_name = 'your_table_name'
try:
dynamodb.put_item(
TableName=table_name,
Item={
'id': {'S': '123'},
'name': {'S': 'Example Item'}
}
)
print("Item added successfully.")
except Exception as e:
print(f"Error adding item: {e}")
دریافت یک آیتم
table_name = 'your_table_name'
try:
response = dynamodb.get_item(
TableName=table_name,
Key={
'id': {'S': '123'}
}
)
if 'Item' in response:
print(response['Item'])
else:
print("Item not found.")
except Exception as e:
print(f"Error getting item: {e}")
نتیجهگیری
Boto3 یک ابزار قدرتمند برای تعامل با سرویسهای AWS از طریق پایتون است. این مقاله تنها یک مقدمه بر قابلیتهای Boto3 بود. با استفاده از این کتابخانه، میتوانید وظایف خود را در AWS خودکار کنید، برنامههای کاربردی مبتنی بر ابر ایجاد کنید و مدیریت منابع AWS را آسانتر کنید. برای اطلاعات بیشتر و جزئیات کاملتر، به مستندات رسمی Boto3 مراجعه کنید.

بدون دیدگاه