استفاده از Boto3 برای AWS: راهنمای جامع با پایتون

استفاده از 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 مراجعه کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *