0Pricing
Terraform Infrastructure as Code · บทเรียน

การจัดการบักเก็ต S3 และ IAM

เรียนรู้การจัดเตรียมและตั้งค่าบักเก็ตพื้นที่จัดเก็บ S3 รวมถึงจัดการทรัพยากร AWS Identity and Access Management (IAM) ด้วย Terraform

การจัดการบักเก็ต S3 และ IAM เป็นบทเรียน Terraform Infrastructure as Code ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Terraform Infrastructure as Code และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Terraform Infrastructure as Code มีบทเรียนทั้งหมด 4 บทเรียน

S3 และ Terraform: พื้นที่จัดเก็บข้อมูลบนคลาวด์

Amazon S3 (บริการจัดเก็บข้อมูลอย่างง่าย) ให้บริการจัดเก็บอ็อบเจ็กต์ที่ปรับขนาดได้สูง ทนทาน และพร้อมใช้งานสูง เหมาะอย่างยิ่งสำหรับการสำรองข้อมูล เว็บไซต์แบบคงที่ และการเก็บถาวรข้อมูล

การจัดการบัคเก็ต S3 ด้วย Terraform มีประโยชน์หลายประการ:

  • การทำงานอัตโนมัติ: สร้างและกำหนดค่าบัคเก็ตด้วยโปรแกรม
  • การควบคุมเวอร์ชัน: ติดตามการเปลี่ยนแปลงการกำหนดค่าบัคเก็ตของคุณ
  • ความสอดคล้อง: ทำให้แน่ใจว่าสภาพแวดล้อมทั้งหมดมีการตั้งค่า S3 เหมือนกัน

บัคเก็ต S3 แรกของคุณ

มากำหนดบัคเก็ต S3 แบบง่ายกันครับ โดยใช้ทรัพยากร aws_s3_bucket

ชื่อบัคเก็ตต้องไม่ซ้ำกันทั่วโลกในบัญชี AWS ทั้งหมด โปรดเลือกชื่อที่ไม่ซ้ำกันครับ

ลองเรียกใช้ตัวอย่างนี้:

resource "aws_s3_bucket" "my_unique_bucket" {
  bucket = "my-coddykit-unique-bucket-12345" # Replace with a globally unique name
}

output "bucket_id" {
  value = aws_s3_bucket.my_unique_bucket.id
}

การตั้งชื่อบัคเก็ตและรีเจียน

เมื่อสร้างบัคเก็ต S3 โปรดจำประเด็นสำคัญต่อไปนี้:

  • ไม่ซ้ำกันทั่วโลก: ชื่อบัคเก็ตต้องไม่ซ้ำกันทั่วโลกในบัญชี AWS ทั้งหมด
  • รีเจียน: แม้ชื่อจะเป็นชื่อที่ใช้ทั่วโลก แต่บัคเก็ตจะอยู่ในรีเจียน AWS ที่เฉพาะเจาะจง ซึ่งกำหนดโดยการตั้งค่าผู้ให้บริการ AWS ของคุณ
  • กฎการตั้งชื่อ: ชื่อต้องเป็นตัวพิมพ์เล็ก มีความยาว 3 ถึง 63 อักขระ และสามารถมีเครื่องหมายขีดกลางได้

การเลือกหลักเกณฑ์การตั้งชื่อที่ดีมีความสำคัญต่อการจัดระเบียบและความชัดเจน

ความปลอดภัยและคุณลักษณะของ S3

S3 มีคุณลักษณะต่าง ๆ เช่น การกำหนดเวอร์ชันเพื่อเก็บอ็อบเจ็กต์ไว้หลายเวอร์ชัน และการบล็อกการเข้าถึงแบบสาธารณะเพื่อความปลอดภัย โดยทั่วไปแล้ว การบล็อกการเข้าถึงแบบสาธารณะไว้เป็นค่าเริ่มต้นสำหรับบัคเก็ตส่วนใหญ่เป็นสิ่งสำคัญอย่างยิ่ง

ตัวอย่างนี้จะตั้งค่าการกำหนดเวอร์ชันและทำให้แน่ใจว่าการเข้าถึงแบบสาธารณะถูกบล็อก

ลองเรียกใช้ตัวอย่างนี้:

resource "aws_s3_bucket" "my_versioned_bucket" {
  bucket = "coddykit-versioned-bucket-98765" # Replace with a unique name
}

resource "aws_s3_bucket_versioning" "my_versioned_bucket_versioning" {
  bucket = aws_s3_bucket.my_versioned_bucket.id
  versioning_configuration {
    status = "Enabled"
  }
}

resource "aws_s3_bucket_public_access_block" "my_versioned_bucket_public_access_block" {
  bucket = aws_s3_bucket.my_versioned_bucket.id

  block_public_acls       = true
  block_public_and_cross_account_access = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

output "bucket_name_versioned" {
  value = aws_s3_bucket.my_versioned_bucket.bucket
}

AWS IAM: ข้อมูลประจำตัวและการเข้าถึง

AWS IAM (การจัดการข้อมูลประจำตัวและการเข้าถึง) เป็นบริการเว็บที่ช่วยให้คุณควบคุมการเข้าถึงทรัพยากร AWS ได้อย่างปลอดภัย ซึ่งเป็นพื้นฐานสำคัญของความปลอดภัย

ด้วย IAM คุณสามารถ:

  • จัดการผู้ใช้และการเข้าถึงผ่านโปรแกรมหรือคอนโซลของผู้ใช้
  • มอบสิทธิ์อย่างละเอียดให้กับทรัพยากร AWS ที่เฉพาะเจาะจง
  • ควบคุมว่าใครสามารถทำอะไรในบัญชี AWS ของคุณได้บ้าง

Terraform ช่วยให้คุณกำหนดและจัดการทรัพยากร IAM ได้เช่นเดียวกับบัคเก็ต S3

การจัดเตรียมผู้ใช้ IAM

มาสร้างผู้ใช้ IAM ใหม่โดยใช้ Terraform กันครับ ผู้ใช้ IAM แทนบุคคลหรือบริการที่โต้ตอบกับ AWS

ผู้ใช้นี้ยังไม่มีสิทธิ์ใด ๆ เราจะเพิ่มสิทธิ์ในขั้นตอนถัดไป

ลองเรียกใช้ตัวอย่างนี้:

resource "aws_iam_user" "coddykit_user" {
  name = "coddykit-app-user"
  path = "/system/"
  tags = {
    Department = "DevOps"
  }
}

output "iam_user_name" {
  value = aws_iam_user.coddykit_user.name
}

output "iam_user_arn" {
  value = aws_iam_user.coddykit_user.arn
}

ทำความเข้าใจนโยบาย IAM

นโยบาย IAM คือเอกสารที่กำหนดสิทธิ์ โดยระบุว่าการดำเนินการใดได้รับอนุญาตหรือถูกปฏิเสธกับทรัพยากรใด และภายใต้เงื่อนไขใด

นโยบายเขียนด้วย JSON และสามารถแนบกับผู้ใช้ กลุ่ม หรือบทบาทได้

  • นโยบายตามข้อมูลประจำตัว: แนบกับข้อมูลประจำตัว IAM (ผู้ใช้ กลุ่ม หรือบทบาท)
  • นโยบายตามทรัพยากร: แนบกับทรัพยากร (เช่น บัคเก็ต S3 หรือคิว SQS)

การมอบสิทธิ์ S3

ตอนนี้มาสร้างนโยบายที่มอบสิทธิ์การเข้าถึงแบบอ่านอย่างเดียวให้ผู้ใช้ IAM ของเราในบัคเก็ต S3 ที่เฉพาะเจาะจง แล้วแนบนโยบายดังกล่าวกันครับ

ทรัพยากร aws_iam_policy ใช้กำหนดนโยบาย ส่วน aws_iam_user_policy_attachment ใช้เชื่อมนโยบายเข้ากับผู้ใช้

ลองเรียกใช้ตัวอย่างนี้:

resource "aws_s3_bucket" "policy_target_bucket" {
  bucket = "coddykit-policy-bucket-112233" # Unique name
}

resource "aws_iam_user" "s3_reader_user" {
  name = "coddykit-s3-reader"
}

data "aws_iam_policy_document" "s3_read_only_policy" {
  statement {
    actions = [
      "s3:GetObject",
      "s3:ListBucket"
    ]
    resources = [
      aws_s3_bucket.policy_target_bucket.arn,
      "${aws_s3_bucket.policy_target_bucket.arn}/*"
    ]
  }
}

resource "aws_iam_policy" "s3_read_only" {
  name        = "CoddyKitS3ReadOnlyPolicy"
  description = "Grants read-only access to a specific S3 bucket"
  policy      = data.aws_iam_policy_document.s3_read_only_policy.json
}

resource "aws_iam_user_policy_attachment" "attach_s3_read_only" {
  user       = aws_iam_user.s3_reader_user.name
  policy_arn = aws_iam_policy.s3_read_only.arn
}

output "s3_reader_user_name" {
  value = aws_iam_user.s3_reader_user.name
}

output "s3_read_only_policy_arn" {
  value = aws_iam_policy.s3_read_only.arn
}

การจัดระเบียบด้วยกลุ่ม IAM

เพื่อให้จัดการได้ดียิ่งขึ้น โดยเฉพาะเมื่อมีผู้ใช้จำนวนมาก คุณสามารถใช้กลุ่ม IAM ได้ กลุ่มคือชุดรวมของผู้ใช้ IAM

แทนที่จะแนบนโยบายกับผู้ใช้แต่ละราย คุณสามารถแนบนโยบายกับกลุ่ม และผู้ใช้ทั้งหมดในกลุ่มนั้นจะสืบทอดสิทธิ์ดังกล่าว

วิธีนี้ช่วยให้การจัดการสิทธิ์ง่ายขึ้น และปฏิบัติตามหลักสิทธิ์น้อยที่สุดได้สะดวกยิ่งขึ้น

ตรวจสอบอย่างรวดเร็ว: S3 และ IAM

ข้อความใดต่อไปนี้เกี่ยวกับการจัดการบัคเก็ต AWS S3 และผู้ใช้หรือนโยบาย IAM ด้วย Terraform เป็นจริง

ทบทวน: S3 และ IAM

ทำได้ดีมากครับ ในบทเรียนนี้ คุณได้เรียนรู้วิธีจัดการบัคเก็ต AWS S3 และทรัพยากร IAM โดยใช้ Terraform แล้ว

  • เราได้จัดเตรียมบัคเก็ต S3 กำหนดค่าการกำหนดเวอร์ชัน และบล็อกการเข้าถึงแบบสาธารณะ
  • เราได้สร้างผู้ใช้ IAM และแนบนโยบายแบบกำหนดเองเพื่อมอบสิทธิ์ที่เฉพาะเจาะจง
  • ตอนนี้คุณเข้าใจความสำคัญของ S3 สำหรับการจัดเก็บข้อมูล และ IAM สำหรับควบคุมการเข้าถึง AWS อย่างปลอดภัย โดยกำหนดทุกอย่างเป็นโค้ดแล้วครับ

ถัดไป เราจะเจาะลึกเทคนิคการจัดการสถานะขั้นสูง

คำถามที่พบบ่อย

บทเรียน “การจัดการบักเก็ต S3 และ IAM” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดการบักเก็ต S3 และ IAM” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Terraform Infrastructure as Code ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Terraform Infrastructure as Code มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการบักเก็ต S3 และ IAM”

เรียนรู้การจัดเตรียมและตั้งค่าบักเก็ตพื้นที่จัดเก็บ S3 รวมถึงจัดการทรัพยากร AWS Identity and Access Management (IAM) ด้วย Terraform คุณปฏิบัติ Terraform Infrastructure as Code ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Terraform Infrastructure as Code หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Terraform Infrastructure as Code บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การจัดการบักเก็ต S3 และ IAM” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Terraform Infrastructure as Code นี้ได้ไหม

ได้ บทเรียน Terraform Infrastructure as Code ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตั้งค่าผู้ให้บริการ AWS
  2. การจัดเตรียมอินสแตนซ์ EC2
  3. การจัดการบักเก็ต S3 และ IAM
  4. การตั้งค่า VPC และเครือข่าย
← กลับไปที่ Terraform Infrastructure as Code