עם הרכיב של טכנולוגיית המידע מוצא את שורשיה בכל ארגון פיננסי ובכל התעשיות, קיבולת אחסון חזקה מהווה את התשתית לזמינות, עמידות וקידמה. בין אלה, Amazon S3 היא אחת מהשירותים הפופולריים ביותר לעמידה בצרכים אלה. במידה וחברות מרחיבות את הפעילות שלהן באופן גיאוגרפי, הצורך בשכפול נתונים בין מיקומים מתחיל להתרגש באופן משמעותי. לכן, עולה צורך לפתח שכפול בין מחוזים ב-Amazon S3, כאשר שכפול הנתונים בין דלי מקור מאזור AWS אחד לדלי אחר באזור AWS שונה מאושר.
המאמר יתאר כיצד להגדיר שכפול בין מחוזים ב-Amazon S3 באמצעות Terraform, תוכנת IaC. הוא נותן סקירה כללית על כיצד להגדיר SLAs, מדבר על סיבות למימוש שכפול בין מחוזים, ומראה כיצד להפעיל הוכחת עקרון.
מהו שכפול בין מחוזים?
CRR עומדת למילת Cross-Region Replication, תכונה של Amazon S3 שמשכפלת אובייקטים מדלי אחד לדלי אחר באזור שונה. שכפול זה מסייע בעמידות לתקני ההתאם, השחזור מהאסון, ואופטימיזציה של ביצועים על ידי אחסון של נתונים קרוב יותר למשתמשים.
תכונות מרכזיות של CRR
- הוא משכפל אובייקטים באופן אוטומטי בין דליים.
- המחוזות עצמם עצמאיים; כלומר, דליי מקור ויעד יכולים להיות ממחוזים שונים.
- כללים: זה מאפשר שליטה גרנולרית על מה מתבצע שם שכפול.
- הצפנה ותמיכה בתיוג: תומך בשיכפול של נתונים מוצפנים ותגי אובייקט.
למה להשתמש ב-Terraform עבור CRR?
Terraform מאפשר ניהול משאבי ענן דרך תצורה דקלרטיבית. בזמן ש-קונסולת ניהול של AWS מגיעה עם מדיניות שיכפול ברירת מחדל, Terraform מאפשר תבניות שנשמרות בגרסאות.
יתרונות של Terraform
- עקביות. התהליך מפחית את הסיכויים לשוניות בהגדרות.
- אוטומציה. מאפשר הטמעה מהירה, עדכון והשלכת המערכת.
- בקרת גרסאות. זה מקל על ביצוע חזרות אחורה ומעקב אחר היסטוריה.
דרישות מוקדמות
לפני התקנת CRR עם Terraform, יש לוודא שיש:
- חשבון AWS עם הרשאות ל-S3 ו- IAM
- Terraform מותקן מקומית
- הגדרת AWS CLI לשימוש באימות
הטמעה
שלב 1: הגדרת דלי ה-S3 שלך
יש ליצור לפחות שני דליים: דלי מקור ודלי יעד
resource "aws_s3_bucket" "source_bucket" {
bucket = "my-source-bucket-example"
acl = "private"
versioning {
enabled = true
}
tags = {
Name = "SourceBucket"
Environment = "Production"
}
}
resource "aws_s3_bucket" "destination_bucket" {
bucket = "my-destination-bucket-example"
acl = "private"
versioning {
enabled = true
}
tags = {
Name = "DestinationBucket"
Environment = "Production"
}
}
שלב 2: צור תפקיד IAM עבור שיכפול
כדי להשתמש ב-CRR, יש ליצור תפקיד IAM עם ההרשאות שנדרשות ל-CRR. בואו ניצור:
resource "aws_iam_role" "replication_role" {
name = "s3-replication-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Principal = {
Service = "s3.amazonaws.com"
}
}
]
})
}
resource "aws_iam_policy" "replication_policy" {
name = "s3-replication-policy"
description = "Allows S3 to replicate objects"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"s3:GetObject",
"s3:ListBucket",
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"
]
Effect = "Allow"
Resource = [
"arn:aws:s3:::my-source-bucket-example/*",
"arn:aws:s3:::my-source-bucket-example"
]
},
{
Action = "s3:PutObject"
Effect = "Allow"
Resource = "arn:aws:s3:::my-destination-bucket-example/*"
}
]
})
}
resource "aws_iam_role_policy_attachment" "replication_role_attachment" {
role = aws_iam_role.replication_role.name
policy_arn = aws_iam_policy.replication_policy.arn
}
שלב 3: הגדרת שיכפול ב-S3
להגדיר הגדרת שיכפול לשייך בין דליי המקור והיעד
resource "aws_s3_bucket_replication_configuration" "replication_config" {
bucket = aws_s3_bucket.source_bucket.id
role = aws_iam_role.replication_role.arn
rule {
id = "ReplicationRule1"
status = "Enabled"
filter {
prefix = ""
}
destination {
bucket = aws_s3_bucket.destination_bucket.arn
storage_class = "STANDARD"
}
}
}
שלב 4: אתחול ויישום התצורה
בצע את תצורת ה-Terraform באמצעות הפקודות הבאות:
terraform init
terraform apply
במהלך ביצוע של terraform apply
, רק בדוק את התוכנית ואשר את ביצועה.
כיצד לבדוק את הגדרת CRR
צור אובייקט בסל המקור ובדוק האם הוא משוכפל בסל היעד.
# Put a file in the source bucket
aws s3 cp test-file.txt s3://my-source-bucket-example/
# Check if file is there in the destination bucket
aws s3 ls s3://my-destination-bucket-example/
יתרונות של שילוב מערכת שילוב בין אזורים
- שחזור פוגעים. הגן על הנתונים על ידי השקפתם בין אזורים גיאוגרפיים שונים.
- התאמה להגבלות. עמד בדרישות הרגולטוריות למיקום נתונים וגיבוי.
- ביצועים משופרים. הפחת את הלטנציה על ידי אחסון הנתונים קרוב יותר למשתמשים.
- אוטומציה של גיבויים. ניהול גיבויים וארכיונים בלי כלים או סקריפטים נוספים.
טיפים לפתרון בעיות
- שגיאות הרשאה. ודא שלכות ה- IAM מכילה הרשאות נכונות בסלים המקור והיעד.
- אפשרות של אין גרסא. וודא שהאפשרות של גרסא מופעלת בשני הסלים – המקור והיעד.
- איחורים בשילוב. השילוב הוא תקף בסופו של דבר. מעקב אחר השילוב באמצעות CloudWatch.
סיכום
Amazon S3 שילוב בין אזורים הוא יכולת עוצמתית מאוד לכל עסק להשיג רדונדנציה נתונים מתאימה והתאמה לדרישות הכפית. Terraform מאפשר לך לאוטומטизציה ולשטוח את תהליך היישום כך שהגדרת התשתית תישאר עקבית ונמכרת.
במדריך זה, למדנו איך ליישם CRR באמצעות Terraform, מתצורת דלפק ועד הגדרות כללי השכפול. על סמך השיטה שתוארה במאמר זה, ניתן לעצב ארכיטקטורת אחסון אופטימלית כדי לטפל בצרכי אפליקציה לעסקים מודרניים.
Source:
https://dzone.com/articles/amazon-s3-cross-region-replication-terraform