المدونة
أتمتة سير العمل السحابي باستخدام بايثون (GCP و AWS)

أتمتة سير العمل في السحابة باستخدام بايثون: بناء حلول ذكية لـ GCP وAWS
بايثون هي اللغة المثالية لأتمتة سير العمل السحابي عبر GCP وAWS، مما يمكن المطورين من كتابة سكريبتات لتوفير الموارد ومعالجة البيانات وإدارة البنية التحتية. مع مكتبات بايثون الواسعة وحزم تطوير البرمجيات السحابية، يمكنك إنشاء سكريبتات أتمتة فعالة توفر الوقت وتقلل الأخطاء البشرية وتوفر نتائج متسقة عبر بيئات السحابة المختلفة.
ليه بدأت أعمل أتمتة لكل حاجة في السحابة
السنة اللي فاتت، لقيت نفسي بضغط كتير على واجهة AWS للمرة المليون، وأنا بحاول إعداد بكت S3 تاني بنفس الصلاحيات بالظبط زي البكتات التانية. كان عندي الإحساس ده – أكيد عارفينه – لما دماغك بتصرخ “لازم يكون فيه طريقة أحسن من كده!” بينما صوابعك مستمرة في الشغل الممل على أي حال.
دي كانت نقطة التحول بتاعتي. بعد تلات فناجين قهوة، كتبت أول سكريبت بايثون بتاعي لأتمتة إنشاء موارد AWS. السكريبت مكانش شكله حلو (النسخة الأولى كان فيها غلطة إملائية خلت السكريبت ينشئ 50 بكت بدل 5 – يا حلاوة)، بس كان شغال. وده غير كل حاجة في طريقة تعاملي مع منصات السحابة.
لو لسه بتضغط وبتنقر في واجهات السحابة أو لو فضولي تعرف إزاي بايثون ممكن تغير سير عملك في السحابة، أنت في المكان الصح. خلينا نشرح بالظبط إزاي تخلي بايثون قوة خارقة بتاعتك في أتمتة السحابة.
إيه هي بالظبط أتمتة السحابة باستخدام بايثون؟
أتمتة السحابة باستخدام بايثون يعني استخدام سكريبتات بايثون للتحكم وإدارة موارد السحابة بتاعتك بشكل برمجي بدل ما تعمل الإعدادات يدوياً من خلال واجهات الويب. اعتبرها زي إنك بتدي لنفسك قوى خارقة – أنت في الأساس بتكتب تعليمات هتنفذها السحابة بالظبط زي ما كتبتها، كل مرة.
في جوهرها، أتمتة السحابة باستخدام بايثون بتتضمن:
- كتابة كود بيتفاعل مع واجهات برمجة التطبيقات (APIs) بتاعة مزودي الخدمات السحابية
- إنشاء أو تعديل أو حذف موارد السحابة بشكل برمجي
- جدولة المهام الروتينية عشان تشتغل من غير تدخل بشري
- تنفيذ منطق شرطي عشان تخلي البنية التحتية السحابية بتاعتك أذكى
الحلاوة إنك بمجرد ما تعمل أتمتة لعملية معينة، تقدر تشغلها باستمرار من غير أخطاء بشرية. وبايثون مثالية لده لأنها سهلة القراءة، قوية، وفيها مكتبات رائعة مصممة خصيصاً لمزودي الخدمات السحابية.
ليه بايثون هي أحسن صاحب ليك في أتمتة السحابة
ممكن تتساءل ليه بايثون بقت اللغة المفضلة لأتمتة السحابة. ده مش صدفة – فيه أسباب مقنعة:
- سهولة القراءة: كود بايثون تقريباً زي قراءة الإنجليزي، مما يخليه أسهل في الفهم والصيانة
- دعم SDK رسمي: كل من AWS (boto3) و GCP (google-cloud) بيقدموا مكتبات بايثون شاملة
- مجتمع ضخم: أمثلة لا حصر لها، إجابات على Stack Overflow، ومشاريع مفتوحة المصدر للتعلم منها
- تنوع الاستخدامات: من سكريبتات بسيطة لتطبيقات معقدة، بايثون بتتوسع مع احتياجاتك
- متعدد المنصات: بتشتغل على ويندوز، ماك، لينكس – في أي مكان محتاج تشغل فيه الأتمتة بتاعتك
جربت الأتمتة بلغات تانية، بس مفيش حاجة بتنافس الإعداد اللي بياخد خمس دقايق والتركيب البديهي اللي بايثون بتقدمه. لما بكون تحت ضغط مواعيد نهائية، آخر حاجة محتاجها هي تصحيح أخطاء غريبة في اللغة بدل ما أحل المشكلة الفعلية.
مكتبات بايثون الأساسية لأتمتة السحابة
قبل ما ندخل في الأمثلة، خلينا نتكلم بسرعة عن المكتبات الأساسية اللي هتحتاجها في مجموعة أدوات أتمتة السحابة:
لـ AWS:
- Boto3: SDK الرسمي لـ AWS لبايثون، بيديك وصول لكل خدمات AWS
- AWS CLI: أداة سطر أوامر ممكن تستدعيها من سكريبتات بايثون باستخدام subprocess
لـ GCP:
- google-cloud: مكتبة العميل الرسمية لـ Google Cloud لبايثون
- google-auth: بتتعامل مع المصادقة لخدمات Google Cloud
أدوات عامة:
- Requests: لعمل طلبات HTTP لواجهات برمجة REST
- PyYAML/JSON: لتحليل ملفات الإعدادات
- Pandas: لمعالجة البيانات لو الأتمتة بتاعتك بتتضمن معالجة بيانات
- Schedule/APScheduler: لجدولة سكريبتات الأتمتة عشان تشتغل في أوقات محددة
تثبيت دول سهل باستخدام pip:
pip install boto3 google-cloud-storage pyyaml requests pandas schedule
أمثلة عملية: أتمتة AWS باستخدام بايثون
خلينا نبدأ ببعض أمثلة أتمتة AWS العملية اللي وفرتلي ساعات كتير:
مثال 1: أتمتة إنشاء وإعداد بكتات S3
import boto3
def create_configured_bucket(bucket_name, region="us-east-1"):
"""Create and configure an S3 bucket with standard settings"""
s3 = boto3.client('s3', region_name=region)
# Create the bucket
s3.create_bucket(
Bucket=bucket_name,
CreateBucketConfiguration={'LocationConstraint': region}
)
# Enable versioning
s3.put_bucket_versioning(
Bucket=bucket_name,
VersioningConfiguration={'Status': 'Enabled'}
)
# Set default encryption
s3.put_bucket_encryption(
Bucket=bucket_name,
ServerSideEncryptionConfiguration={
'Rules': [
{
'ApplyServerSideEncryptionByDefault': {
'SSEAlgorithm': 'AES256'
}
}
]
}
)
print(f"Bucket {bucket_name} created and configured successfully!")
# Example usage
create_configured_bucket('my-secure-data-bucket', 'us-west-2')
السكريبت ده بينشئ بكت S3 مع تفعيل الإصدارات والتشفير – وهو متطلب شائع لتخزين البيانات بشكل آمن. بدل ما تضغط خلال شاشات متعددة في واجهة AWS، بتشغل سكريبت واحد وبتحصل على نتائج متسقة في كل مرة.
مثال 2: مراقبة وإدارة نسخ EC2 بشكل آلي
import boto3
import time
def monitor_and_manage_instances(max_cpu_percent=70):
"""Monitor EC2 instances and stop any with low utilization"""
ec2 = boto3.resource('ec2')
cloudwatch = boto3.client('cloudwatch')
# Get all running instances
running_instances = ec2.instances.filter(
Filters=[{'Name': 'instance-state-name', 'Values': ['running']}]
)
for instance in running_instances:
# Get CPU utilization for the last hour
response = cloudwatch.get_metric_statistics(
Namespace='AWS/EC2',
MetricName='CPUUtilization',
Dimensions=[
{'Name': 'InstanceId', 'Values': [instance.id]}
],
StartTime=time.time() - 3600,
EndTime=time.time(),
Period=300,
Statistics=['Average']
)
# Check if any datapoints were returned
if response['Datapoints']:
avg_cpu = max([d['Average'] for d in response['Datapoints']])
print(f"Instance {instance.id}: Average CPU = {avg_cpu}%")
# If CPU utilization is below threshold, stop the instance
if avg_cpu < max_cpu_percent:
print(f"Stopping instance {instance.id} due to low utilization")
instance.stop()
else:
print(f"No metrics available for instance {instance.id}")
السكريبت ده بيراقب نسخ EC2 بتاعتك وبيوقف أي نسخة مش مستخدمة كويس – مثالي لتحسين التكلفة. ممكن تجدول ده عشان يشتغل يومياً وتوفر مئات الدولارات في فاتورة السحابة بتاعتك.
أمثلة عملية: أتمتة GCP باستخدام بايثون
دلوقتي خلينا نشوف بعض أمثلة Google Cloud Platform:
مثال 1: إنشاء وإدارة بكتات تخزين GCP
from google.cloud import storage
def create_and_configure_gcs_bucket(bucket_name, location="us-central1"):
"""Create and configure a GCS bucket with standard settings"""
# Initialize the client
storage_client = storage.Client()
# Create the bucket
bucket = storage_client.create_bucket(bucket_name, location=location)
# Set lifecycle rules (delete objects older than 90 days)
bucket.lifecycle_rules = [
{
'action': {'type': 'Delete'},
'condition': {'age': 90}
}
]
bucket.patch()
# Enable versioning
bucket.versioning_enabled = True
bucket.patch()
print(f"Bucket {bucket_name} created and configured successfully!")
# Example usage
create_and_configure_gcs_bucket('my-gcp-data-bucket')
على غرار مثالنا في AWS، ينشئ هذا النص البرمجي دلو تخزين سحابي من Google Cloud Storage مع تمكين الإصدار وقاعدة دورة الحياة لحذف الكائنات القديمة تلقائيًا – وهو نمط شائع لإدارة تكاليف التخزين.
مثال 2: الإدارة الآلية لمثيلات الآلة الافتراضية في GCP
from google.cloud import compute_v1
def start_stop_vms_by_label(project_id, zone, label_key, label_value, action="stop"):
"""Start or stop all VMs with a specific label"""
instance_client = compute_v1.InstancesClient()
# List all instances in the zone
instances = instance_client.list(project=project_id, zone=zone)
# Filter instances by label
matching_instances = [
instance for instance in instances
if instance.labels and
label_key in instance.labels and
instance.labels[label_key] == label_value
]
for instance in matching_instances:
if action.lower() == "stop" and instance.status == "RUNNING":
print(f"Stopping instance: {instance.name}")
instance_client.stop(project=project_id, zone=zone, instance=instance.name)
elif action.lower() == "start" and instance.status == "TERMINATED":
print(f"Starting instance: {instance.name}")
instance_client.start(project=project_id, zone=zone, instance=instance.name)
print(f"Completed {action} operation on {len(matching_instances)} instances")
# Example usage - stop all development environment VMs on Friday evening
start_stop_vms_by_label(
project_id="my-project",
zone="us-central1-a",
label_key="environment",
label_value="development",
action="stop"
)
يعثر هذا البرنامج النصي على جميع الأجهزة الافتراضية ذات التسمية المحددة ويبدأ تشغيلها أو إيقافها – وهو مثالي لجدولة بيئات التطوير لإيقاف التشغيل في عطلات نهاية الأسبوع وتوفير التكاليف.
بناء استراتيجية الأتمتة عبر السحابة
إن أحد أقوى جوانب استخدام Python لأتمتة السحابة هو القدرة على إنشاء برامج نصية تعمل عبر العديد من موفري الخدمات السحابية. فيما يلي كيفية :التعامل مع الأتمتة متعددة السحابةإن أحد أقوى جوانب استخدام Python لأتمتة السحابة هو القدرة على إنشاء برامج نصية تعمل عبر العديد من موفري الخدمات السحابية. فيما يلي كيفية :التعامل مع الأتمتة متعددة السحابة
1. Create Abstraction Layers
بدلًا من استدعاء واجهات برمجة تطبيقات AWS أو GCP مباشرةً في كل مكان في التعليمات البرمجية الخاصة بك، أنشئ دوال مجمعة تستخلص الموفر الأساسي. هذا يجعل من الأسهل: تبديل الموفرين أو دعم السحب المتعددةبدلًا من استدعاء واجهات برمجة تطبيقات AWS أو GCP مباشرةً في كل مكان في التعليمات البرمجية الخاصة بك، أنشئ دوال مجمعة تستخلص الموفر الأساسي. هذا يجعل من الأسهل: تبديل الموفرين أو دعم السحب المتعددة
الأسئلة الشائعة
لماذا تحظى لغة بايثون بشعبية كبيرة في أتمتة السحابة؟
هل يمكنني استخدام بايثون لأتمتة كل من AWS وGCP؟
كيف يمكنني جدولة سكربتات بايثون لتعمل بانتظام؟
schedule
وAPScheduler
تتيحان لك تعريف جداول مشابهة لـ cron أو تشغيل السكربتات في أوقات محددة من اليوم أو الأسبوع أو الشهر. وهذا يتيح لك أتمتة مهام إدارة السحابة المتكررة بالكامل دون تدخل يدوي.