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

การสืบค้นข้อมูลด้วยแหล่งข้อมูล

ใช้แหล่งข้อมูลเพื่อดึงข้อมูลเกี่ยวกับโครงสร้างพื้นฐานที่มีอยู่หรือบริการภายนอก ทำให้สามารถสร้างการกำหนดค่าที่ปรับเปลี่ยนได้และยืดหยุ่นมากขึ้น

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

แหล่งข้อมูลคืออะไร

ใน Terraform เรามักต้องอ้างอิงโครงสร้างพื้นฐานที่มีอยู่หรือข้อมูลภายนอกซึ่งไม่ได้รับการจัดการโดยการกำหนดค่าปัจจุบันของเรา

นี่คือจุดที่ แหล่งข้อมูล มีบทบาท แหล่งข้อมูลช่วยให้การกำหนดค่า Terraform ดึงข้อมูลเกี่ยวกับทรัพยากรที่จัดเตรียมไว้แล้วหรือบริการภายนอกได้

แหล่งข้อมูลกับทรัพยากร

การแยกความแตกต่างระหว่างแหล่งข้อมูลกับทรัพยากรเป็นสิ่งสำคัญ

  • ทรัพยากรใช้กำหนดโครงสร้างพื้นฐานที่ Terraform จะสร้าง อัปเดต หรือลบ
  • แหล่งข้อมูลใช้ดึงข้อมูลเกี่ยวกับโครงสร้างพื้นฐานหรือข้อมูลที่มีอยู่เท่านั้น โดยจะไม่สร้างหรือแก้ไขสิ่งใด

ลองนึกภาพว่าแหล่งข้อมูลคือการสืบค้นโครงสร้างพื้นฐานของคุณแบบอ่านอย่างเดียว

กรณีการใช้งานจริง

แหล่งข้อมูลมีประโยชน์อย่างมากสำหรับ:

  • ค้นหา ID ของ Virtual Private Cloud (VPC) ที่มีอยู่
  • รับ Amazon Machine Image (AMI) ล่าสุดสำหรับอินสแตนซ์ EC2
  • เรียกข้อมูลลับจากบริการจัดการข้อมูลลับ
  • ค้นหาระเบียน DNS หรือการกำหนดค่าเครือข่าย

แหล่งข้อมูลช่วยให้การกำหนดค่าของคุณทำงานแบบไดนามิกมากขึ้นและกำหนดค่าตายตัวน้อยลง

กำหนดแหล่งข้อมูล

บล็อกแหล่งข้อมูลมีลักษณะคล้ายกับบล็อกทรัพยากร โดยเริ่มต้นด้วยคีย์เวิร์ด data ตามด้วยผู้ให้บริการและประเภท แล้วจึงตามด้วยชื่อภายใน

data "aws_vpc" "selected" {
  filter {
    name   = "tag:Name"
    values = ["my-existing-vpc"]
  }
}

ใช้ข้อมูลที่ดึงมา

เมื่อแหล่งข้อมูลดึงข้อมูลแล้ว แอตทริบิวต์ของแหล่งข้อมูลจะพร้อมให้ส่วนอื่น ๆ ของการกำหนดค่าของคุณใช้งาน คุณสามารถอ้างอิงแอตทริบิวต์เหล่านั้นด้วยไวยากรณ์: data.<TYPE>.<NAME>.<ATTRIBUTE>

ตัวอย่างเช่น หากต้องการรับ ID ของ VPC ที่เราเลือก:

output "vpc_id" {
  value = data.aws_vpc.selected.id
}

ดึง AMI ล่าสุด

งานที่พบบ่อยคือการค้นหา Amazon Machine Image (AMI) ล่าสุดสำหรับอินสแตนซ์ EC2 วิธีนี้ช่วยหลีกเลี่ยงการกำหนด AMI IDs แบบตายตัว ทำให้การกำหนดค่าของคุณมีความยืดหยุ่นและทนทานมากขึ้น

ต่อไปนี้คือวิธีดึง AMI ของ Amazon Linux 2 ล่าสุด:

provider "aws" {
  region = "us-east-1"
}

data "aws_ami" "amazon_linux_2" {
  most_recent = true
  owners      = ["amazon"]

  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-*-x86_64-gp2"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

output "latest_ami_id" {
  value = data.aws_ami.amazon_linux_2.id
}

เอกสารนโยบาย S3 แบบไดนามิก

แหล่งข้อมูลไม่ได้มีไว้สำหรับทรัพยากรบนคลาวด์เท่านั้น แหล่งข้อมูล aws_iam_policy_document ช่วยสร้างนโยบาย IAM ที่ซับซ้อนอย่างเป็นระบบ

แหล่งข้อมูลนี้ไม่ได้สร้างนโยบาย แต่จะสร้างเอกสาร JSON ที่คุณสามารถนำไปใช้กับทรัพยากร เช่น บักเก็ต S3 ได้

provider "aws" {
  region = "us-east-1"
}

data "aws_iam_policy_document" "s3_read_only_policy" {
  statement {
    principals {
      type        = "AWS"
      identifiers = ["arn:aws:iam::123456789012:user/example-user"]
    }
    actions = [
      "s3:GetObject",
      "s3:ListBucket"
    ]
    resources = [
      "arn:aws:s3:::my-example-bucket",
      "arn:aws:s3:::my-example-bucket/*"
    ]
  }
}

output "policy_json" {
  value = data.aws_iam_policy_document.s3_read_only_policy.json
}

ปรับการค้นหาให้ละเอียดขึ้น

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

โดยทั่วไป ตัวกรองจะรับ name (แอตทริบิวต์ที่จะใช้กรอง) และ values (รายการค่าที่ยอมรับได้สำหรับแอตทริบิวต์นั้น)

data "aws_instance" "web" {
  instance_state_names = ["running"]
  filter {
    name   = "tag:Environment"
    values = ["production"]
  }
  filter {
    name   = "instance-type"
    values = ["t2.micro", "t3.micro"]
  }
}

แนวทางปฏิบัติที่ดีที่สุดสำหรับแหล่งข้อมูล

เพื่อให้การกำหนดค่าของคุณเป็นระเบียบและมีประสิทธิภาพ:

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

แบบทดสอบแหล่งข้อมูล

ข้อความใดต่อไปนี้เป็น TRUE เกี่ยวกับแหล่งข้อมูลของ Terraform

สรุป: การสืบค้นข้อมูล

คุณได้เรียนรู้ว่า แหล่งข้อมูล ของ Terraform ช่วยให้การกำหนดค่าของคุณสืบค้นและดึงข้อมูลเกี่ยวกับโครงสร้างพื้นฐานที่มีอยู่หรือบริการภายนอกได้อย่างไร

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

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

บทเรียน “การสืบค้นข้อมูลด้วยแหล่งข้อมูล” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การสืบค้นข้อมูลด้วยแหล่งข้อมูล”

ใช้แหล่งข้อมูลเพื่อดึงข้อมูลเกี่ยวกับโครงสร้างพื้นฐานที่มีอยู่หรือบริการภายนอก ทำให้สามารถสร้างการกำหนดค่าที่ปรับเปลี่ยนได้และยืดหยุ่นมากขึ้น คุณปฏิบัติ Terraform Infrastructure as Code ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “การสืบค้นข้อมูลด้วยแหล่งข้อมูล” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การสืบค้นข้อมูลด้วยแหล่งข้อมูล
  2. ตัวจัดเตรียม local และ remote exec
  3. ทรัพยากร Null และทริกเกอร์
  4. การใช้ข้อมูลภายนอกและแม่แบบ
← กลับไปที่ Terraform Infrastructure as Code