برنامه نویسی

سطل های ترافرم و s3؟! – انجمن DEV

Summarize this content to 400 words in Persian Lang
سرورها، vpcها، nics. مدیریت این منابع در محیط توسعه یا تولید می تواند خسته کننده، تکراری و طاقت فرسا باشد.

Terraform یک ابزار زیرساخت به‌عنوان کد است که برای مدیریت، تعیین و کنترل منابع مختلف در محیط‌های مختلف – cloud و whathaveyou استفاده می‌شود.

به طور خلاصه، نحوه ایجاد و مدیریت سطل های AWS s3 را با استفاده از Terraform بررسی خواهیم کرد.

توجه: اگر قبلاً با سطل‌های AWS و s3 آشنایی ندارید، توصیه می‌کنم اطلاعات اساسی در مورد آن‌ها کسب کنید. این مهم است که بدانید یک چیز چگونه کار می کند قبل از اینکه به طور خودکار آن را در نظر بگیرید.

اگر می خواهید در این مورد چیزی را جمع آوری کنم، در نظرات به من بگویید

با این کار، بیایید به آن برسیم!

یک سطل استاندارد s3 ایجاد کنید

terraform {
required_providers {
aws = {
source = “hashicorp/aws”
version = “~> 5.0”
}
}
}

provider “aws” {
region = “us-east-1” # Specify your region

}

# Create s3 bucket
resource “aws_s3_bucket” “testbucket” {
bucket = “my-new-bucket”

}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای جزئیات بیشتر در مورد ایجاد سطل های s3، مستندات را بررسی کنید

ایجاد یک سطل s3 یک چیز است. در دسترس قرار دادن آن برای عموم (در صورت لزوم) چیز دیگری است. بقیه این مقاله برای افرادی که سعی می کنند سطل خود یا اشیاء موجود در آن را عمومی کنند مفید خواهد بود.

سطل خود را در دسترس قرار دهید

# Bucket ownership controls
resource “aws_s3_bucket_ownership_controls” “buck-owner” {
bucket = aws_s3_bucket.testbucket.id
rule {
object_ownership = “BucketOwnerPreferred”
}
}

# Disable bucket default security
resource “aws_s3_bucket_public_access_block” “public-block” {
bucket = aws_s3_bucket.testbucket.id

block_public_acls = false
block_public_policy = false
ignore_public_acls = false
restrict_public_buckets = false
}

resource “aws_s3_bucket_acl” “buk-acl” {
depends_on = [
aws_s3_bucket_ownership_controls.buck-owner,
aws_s3_bucket_public_access_block.public-block,
]

bucket = aws_s3_bucket.testbucket.id
acl = “public-read”
}

# Enable read access
resource “aws_s3_bucket_policy” “allow-public-access” {
bucket = aws_s3_bucket.testbucket.id

policy = jsonencode({
Version = “2012-10-17”
Statement = [
{
Effect = “Allow”
Principal = “*”
Action = [
“s3:GetObject”,
“s3:PutObject”
] Resource = [
“${aws_s3_bucket.store-ket.arn}/*”
] }
] })
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر مرحله از این بخش از اهمیت بالایی برخوردار است. برای کسب اطلاعات بیشتر در مورد این تنظیمات، به برخی از این منابع مراجعه کنید:

برخی از تنظیمات اضافی که می توانید به سطل s3 خود اضافه کنید شامل نسخه سازی و رمزگذاری سمت سرور است

نسخه سازی

resource “aws_s3_bucket_versioning” “enable-versioning” {
bucket = aws_s3_bucket.testbucket.id
versioning_configuration {
status = “Enabled”
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای مطالعه بیشتر: مستندات

رمزگذاری سمت سرور

روش‌های مختلفی برای فعال کردن رمزگذاری سمت سرور وجود دارد، اما برای سادگی، ما به یکی از آنها پایبند هستیم.

resource “aws_s3_bucket_server_side_encryption_configuration” “encrypt-ket” {
bucket = aws_s3_bucket.testbucket.id

rule {
apply_server_side_encryption_by_default {
sse_algorithm = “AES256”
}
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما به پایان این آموزش کوتاه رسیدیم. اما به عنوان یک امتیاز، در صورتی که نمی‌پرسید آیا می‌توانید فایل‌ها را مستقیماً از کد خود در سطل آپلود کنید. بله، شما می توانید!

فایل HTML را آپلود کنید

resource “aws_s3_object” “upload” {
key = “index.html”
bucket = aws_s3_bucket.testbucket.id
source = “buk-list/index.html”
acl = “public-read”
server_side_encryption = “AES256”
content_type = “text/html”
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مطمئن شوید که source به محل فایلی که می خواهید آپلود کنید اشاره می کند. من توصیه می کنم یک پوشه در فهرست پروژه خود ایجاد کنید تا منبع به این شکل باشد ./folder/index.html

از اینکه در این مورد به من پیوستید متشکرم. امیدوارم این مورد برای شما مفید بوده باشد. سوالات خود را برای من در نظرات بنویسید و من مطمئناً هر طور که می توانم کمک خواهم کرد!

سرورها، vpcها، nics. مدیریت این منابع در محیط توسعه یا تولید می تواند خسته کننده، تکراری و طاقت فرسا باشد.

Terraform یک ابزار زیرساخت به‌عنوان کد است که برای مدیریت، تعیین و کنترل منابع مختلف در محیط‌های مختلف – cloud و whathaveyou استفاده می‌شود.

به طور خلاصه، نحوه ایجاد و مدیریت سطل های AWS s3 را با استفاده از Terraform بررسی خواهیم کرد.

توجه: اگر قبلاً با سطل‌های AWS و s3 آشنایی ندارید، توصیه می‌کنم اطلاعات اساسی در مورد آن‌ها کسب کنید. این مهم است که بدانید یک چیز چگونه کار می کند قبل از اینکه به طور خودکار آن را در نظر بگیرید.

اگر می خواهید در این مورد چیزی را جمع آوری کنم، در نظرات به من بگویید

با این کار، بیایید به آن برسیم!

یک سطل استاندارد s3 ایجاد کنید

terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "us-east-1" # Specify your region

}

# Create s3 bucket
resource "aws_s3_bucket" "testbucket" {
  bucket = "my-new-bucket"

}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای جزئیات بیشتر در مورد ایجاد سطل های s3، مستندات را بررسی کنید

ایجاد یک سطل s3 یک چیز است. در دسترس قرار دادن آن برای عموم (در صورت لزوم) چیز دیگری است. بقیه این مقاله برای افرادی که سعی می کنند سطل خود یا اشیاء موجود در آن را عمومی کنند مفید خواهد بود.

سطل خود را در دسترس قرار دهید

# Bucket ownership controls
resource "aws_s3_bucket_ownership_controls" "buck-owner" {
  bucket = aws_s3_bucket.testbucket.id
  rule {
    object_ownership = "BucketOwnerPreferred"
  }
}

# Disable bucket default security
resource "aws_s3_bucket_public_access_block" "public-block" {
  bucket = aws_s3_bucket.testbucket.id

  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

resource "aws_s3_bucket_acl" "buk-acl" {
  depends_on = [
    aws_s3_bucket_ownership_controls.buck-owner,
    aws_s3_bucket_public_access_block.public-block,
  ]

  bucket = aws_s3_bucket.testbucket.id
  acl    = "public-read"
}

# Enable read access
resource "aws_s3_bucket_policy" "allow-public-access" {
  bucket = aws_s3_bucket.testbucket.id

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Principal = "*"
        Action = [
          "s3:GetObject",
          "s3:PutObject"
        ]
        Resource = [
          "${aws_s3_bucket.store-ket.arn}/*"
        ]
      }
    ]
  })
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر مرحله از این بخش از اهمیت بالایی برخوردار است. برای کسب اطلاعات بیشتر در مورد این تنظیمات، به برخی از این منابع مراجعه کنید:

برخی از تنظیمات اضافی که می توانید به سطل s3 خود اضافه کنید شامل نسخه سازی و رمزگذاری سمت سرور است

نسخه سازی

resource "aws_s3_bucket_versioning" "enable-versioning" {
  bucket = aws_s3_bucket.testbucket.id
  versioning_configuration {
    status = "Enabled"
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای مطالعه بیشتر: مستندات

رمزگذاری سمت سرور

روش‌های مختلفی برای فعال کردن رمزگذاری سمت سرور وجود دارد، اما برای سادگی، ما به یکی از آنها پایبند هستیم.

resource "aws_s3_bucket_server_side_encryption_configuration" "encrypt-ket" {
  bucket = aws_s3_bucket.testbucket.id

  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm     = "AES256"
    }
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما به پایان این آموزش کوتاه رسیدیم. اما به عنوان یک امتیاز، در صورتی که نمی‌پرسید آیا می‌توانید فایل‌ها را مستقیماً از کد خود در سطل آپلود کنید. بله، شما می توانید!

فایل HTML را آپلود کنید

resource "aws_s3_object" "upload" {
  key                    = "index.html"
  bucket                 = aws_s3_bucket.testbucket.id
  source                 = "buk-list/index.html"
  acl                    = "public-read"
  server_side_encryption = "AES256"
  content_type           = "text/html"
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مطمئن شوید که source به محل فایلی که می خواهید آپلود کنید اشاره می کند. من توصیه می کنم یک پوشه در فهرست پروژه خود ایجاد کنید تا منبع به این شکل باشد ./folder/index.html

از اینکه در این مورد به من پیوستید متشکرم. امیدوارم این مورد برای شما مفید بوده باشد. سوالات خود را برای من در نظرات بنویسید و من مطمئناً هر طور که می توانم کمک خواهم کرد!

نوشته های مشابه

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

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

دکمه بازگشت به بالا