מבוא לשירותי AWS: המדריך המקיף
מבוא לשירותי AWS
Amazon Web Services (AWS) היא פלטפורמת הענן המובילה בעולם, המציעה מגוון רחב של שירותים לארגונים בכל הגדלים. בחלק זה נסקור את היתרונות המרכזיים של AWS:
• גמישות ויכולת הרחבה אוטומטית
• תשלום לפי שימוש
• אבטחה ועמידה בתקנים בינלאומיים
• זמינות גבוהה ופריסה גלובלית
• תמיכה במגוון רחב של טכנולוגיות
דוגמה מעשית:
```python
import boto3
# יצירת חיבור לשירות S3
s3 = boto3.client('s3',
aws_access_key_id='YOUR_ACCESS_KEY',
aws_secret_access_key='YOUR_SECRET_KEY',
region_name='us-east-1'
)
# יצירת bucket חדש
s3.create_bucket(Bucket='my-first-bucket')
```
• גמישות ויכולת הרחבה אוטומטית
• תשלום לפי שימוש
• אבטחה ועמידה בתקנים בינלאומיים
• זמינות גבוהה ופריסה גלובלית
• תמיכה במגוון רחב של טכנולוגיות
דוגמה מעשית:
```python
import boto3
# יצירת חיבור לשירות S3
s3 = boto3.client('s3',
aws_access_key_id='YOUR_ACCESS_KEY',
aws_secret_access_key='YOUR_SECRET_KEY',
region_name='us-east-1'
)
# יצירת bucket חדש
s3.create_bucket(Bucket='my-first-bucket')
```
שירותי המחשוב: EC2 ו-Lambda
Amazon EC2 (Elastic Compute Cloud) מאפשר להריץ שרתים וירטואליים בענן, בעוד ש-Lambda מציע פתרון serverless לריצת קוד. נבחן את ההבדלים והשימושים:
EC2:
• שליטה מלאה על הסביבה
• תמיכה בכל שפת תכנות ומערכת הפעלה
• מתאים לאפליקציות מסורתיות
Lambda:
• תשלום לפי זמן ריצה בלבד
• ללא צורך בניהול שרתים
• אידיאלי לפונקציות קצרות וממוקדות
דוגמה ל-Lambda:
```python
def lambda_handler(event, context):
# פונקציה שמטפלת בבקשות API
return {
'statusCode': 200,
'body': 'Hello from Lambda!'
}
```
EC2:
• שליטה מלאה על הסביבה
• תמיכה בכל שפת תכנות ומערכת הפעלה
• מתאים לאפליקציות מסורתיות
Lambda:
• תשלום לפי זמן ריצה בלבד
• ללא צורך בניהול שרתים
• אידיאלי לפונקציות קצרות וממוקדות
דוגמה ל-Lambda:
```python
def lambda_handler(event, context):
# פונקציה שמטפלת בבקשות API
return {
'statusCode': 200,
'body': 'Hello from Lambda!'
}
```
אחסון בענן: S3 ו-EBS
Amazon S3 (Simple Storage Service) מספק אחסון אובייקטים, בעוד EBS (Elastic Block Store) מציע אחסון בלוקים למופעי EC2.
S3:
• אחסון קבצים ללא הגבלת גודל
• גישה דרך HTTP/HTTPS
• אפשרויות לשכבות אחסון שונות
דוגמה לשימוש ב-S3 עם פוליסת גישה:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
```
S3:
• אחסון קבצים ללא הגבלת גודל
• גישה דרך HTTP/HTTPS
• אפשרויות לשכבות אחסון שונות
דוגמה לשימוש ב-S3 עם פוליסת גישה:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
```
שירותי רשת: VPC ו-Route 53
Amazon VPC מאפשר ליצור רשת וירטואלית מבודדת, ו-Route 53 מספק שירותי DNS וניהול דומיינים.
תכנון VPC:
• הגדרת טווחי IP
• יצירת subnet-ים ציבוריים ופרטיים
• הגדרת טבלאות ניתוב
דוגמה ליצירת VPC:
```python
import boto3
ec2 = boto3.client('ec2')
# יצירת VPC חדש
vpc = ec2.create_vpc(CidrBlock='10.0.0.0/16')
vpc.create_tags(Tags=[{"Key": "Name", "Value": "MyVPC"}])
vpc.wait_until_available()
```
תכנון VPC:
• הגדרת טווחי IP
• יצירת subnet-ים ציבוריים ופרטיים
• הגדרת טבלאות ניתוב
דוגמה ליצירת VPC:
```python
import boto3
ec2 = boto3.client('ec2')
# יצירת VPC חדש
vpc = ec2.create_vpc(CidrBlock='10.0.0.0/16')
vpc.create_tags(Tags=[{"Key": "Name", "Value": "MyVPC"}])
vpc.wait_until_available()
```
שירותי מסד נתונים: RDS ו-DynamoDB
AWS מציעה פתרונות מסדי נתונים מנוהלים - RDS למסדי נתונים רלציוניים ו-DynamoDB למסדי נתונים NoSQL.
RDS:
• תמיכה ב-MySQL, PostgreSQL, Oracle ועוד
• גיבוי וניטור אוטומטיים
• יכולות קריאה מרובה
דוגמה לשימוש ב-DynamoDB:
```javascript
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: 'Users',
Item: {
userId: '123',
name: 'ישראל ישראלי',
email: 'israel@example.com'
}
};
dynamodb.put(params).promise()
.then(data => console.log('נשמר בהצלחה'))
.catch(err => console.error('שגיאה:', err));
```
RDS:
• תמיכה ב-MySQL, PostgreSQL, Oracle ועוד
• גיבוי וניטור אוטומטיים
• יכולות קריאה מרובה
דוגמה לשימוש ב-DynamoDB:
```javascript
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: 'Users',
Item: {
userId: '123',
name: 'ישראל ישראלי',
email: 'israel@example.com'
}
};
dynamodb.put(params).promise()
.then(data => console.log('נשמר בהצלחה'))
.catch(err => console.error('שגיאה:', err));
```
אבטחה וניהול זהויות: IAM ו-Security Groups
IAM (Identity and Access Management) מאפשר ניהול הרשאות וזהויות, בעוד Security Groups מספקים חומת אש ברמת המופע.
עקרונות מפתח:
• הענקת הרשאות מינימליות
• שימוש בתפקידים (Roles) במקום מפתחות גישה
• הפרדת סביבות פיתוח וייצור
דוגמה למדיניות IAM:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
```
עקרונות מפתח:
• הענקת הרשאות מינימליות
• שימוש בתפקידים (Roles) במקום מפתחות גישה
• הפרדת סביבות פיתוח וייצור
דוגמה למדיניות IAM:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
```