Thursday, November 21, 2024

Sử dụng Terraform để tạo một bucket trên Amazon S3

-

Tổng quan.

Đây là một ví dụ về việc sử dụng Terraform để tạo một bucket trên Amazon S3. Ví dụ này sử dụng Terraform AWS Provider để tương tác với nhiều tài nguyên được hỗ trợ bởi AWS thông qua các API của nó và ví dụ này triển khai trên Terraform phiên bản 0.10.x.

Cấu hình các khóa truy cập AWS của bạn.

Vì lý do bảo mật, nên sử dụng người dùng IAM thay vì tài khoản gốc để truy cập vào AWS.

Cấu hình thông tin xác thực AWS để sử dụng bởi Terraform có thể được thực hiện theo nhiều cách khác nhau, nhưng đây là những cách tiếp cận được khuyến khích:

Cách 1: Cài đặt thông tin xác thực AWS trên hệ thống local của bạn, đối với Linux, macOS hoặc Unix:

~/.aws/credentials

Hoặc đối với Windows nằm tại.

C:\Users\USERNAME\.aws\credentials

File này nên chứa các dòng theo định dạng dưới, lưu ý hãy thay thế các giá trị thông tin xác thực AWS của bạn vào các giá trị <your_access_key_id> và <your_secret_access_key> trong file.

[default]
aws_access_key_id = <your_access_key_id>
aws_secret_access_key = <your_secret_access_key>

Cách 2: Đặt các biến môi trường AWS_ACCESS_KEY_ID và AWS_SECRET_ACCESS_KEY.

Để đặt các biến này trên Linux, macOS hoặc Unix, sử dụng lệnh export:

export AWS_ACCESS_KEY_ID=<your_access_key_id>
export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Đối với windows hãy sử dụng set:

set AWS_ACCESS_KEY_ID=<your_access_key_id>
set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Tạo file Terraform.

Đầu tiên chúng ta tạo file main.tf

# Configure the AWS provider
provider "aws" {
  region = "eu-west-1"
}

# Create a S3 bucket
resource "aws_s3_bucket" "terraform_state" {
  bucket		  = "${var.bucket_name}"
  
  versioning {
    enabled = true
  }  
  
  lifecycle {
    prevent_destroy = true
  }
}

File outputs.tf

# Output variable: S3 bucket
output "s3_bucket_arn" {
  value = "${aws_s3_bucket.terraform_state.arn}"
}

File vars.tf

# Input variable: S3 bucket name
variable "bucket_name" {
  description = "The name of the S3 bucket. Must be globally unique."
  default     = "terraform-state-my-bucket"
}

Đoạn code trên là một ví dụ về cách sử dụng Terraform để tạo một bucket trên Amazon S3 (Simple Storage Service).

  • Bắt đầu với cấu hình AWS provider để xác định khu vực mà sẽ được sử dụng cho tài nguyên AWS. Trong đoạn mã này, khu vực được đặt là “eu-west-1”.
  • Tiếp theo là khai báo tài nguyên S3 bucket, thông qua resource “aws_s3_bucket”. Bên trong tài nguyên S3 bucket này, ta định nghĩa tên bucket thông qua thuộc tính “bucket” (được đặt tên là “terraform_state” trong ví dụ này), và kích hoạt versioning cho bucket thông qua block “versioning”.
  • Tài nguyên S3 bucket được quản lý bởi Terraform với “lifecycle” block. Trong ví dụ này, ta đã thiết lập prevent_destroy bằng cách đặt giá trị true, điều này sẽ ngăn người dùng xoá bucket này một cách vô tình.
  • Cuối cùng, ta sử dụng output để hiển thị tài nguyên mới tạo ra, trong trường hợp này là arn của bucket.
  • Để cung cấp giá trị cho “bucket_name” variable, ta có thể sử dụng các giá trị mặc định hoặc chỉ định giá trị riêng bằng cách sử dụng block “variable”. Các input variable như “bucket_name” giúp cho việc tạo các tài nguyên AWS trở nên linh hoạt và tái sử dụng được.

Chi phí triển khai

Việc tính chi phí cho ví dụ trên sẽ phụ thuộc vào nhiều yếu tố, bao gồm khu vực AWS, kích thước và số lượng tài nguyên được sử dụng. Một số nguồn tài liệu cho biết chi phí tối thiểu cho việc triển khai một bucket S3 với phiên bản trong một khu vực cụ thể có thể ở khoảng $0,03-0,05 USD mỗi giờ. Tuy nhiên, tùy thuộc vào các yếu tố trên, chi phí có thể cao hơn hoặc thấp hơn.

Nếu bạn muốn biết chi tiết chi phí cho ví dụ trên, bạn nên truy cập vào bảng điều khiển AWS của mình để xem các thông tin chi tiết về việc sử dụng tài nguyên và các chi phí tương ứng.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories