Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator Terraform AWS

Gotowy main.tf dla bucketu S3, instancji EC2 lub bazy RDS z tagami, outputami i bezpiecznymi ustawieniami domyślnymi.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}

Np. eu-central-1 (Frankfurt).

Unikalna w całym AWS, małe litery.

Tag Name dodajemy automatycznie z nazwy zasobu.

main.tf

terraform { required_version = ">= 1.5" required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } provider "aws" { region = "eu-central-1" } resource "aws_s3_bucket" "app_bucket" { bucket = "app-bucket" tags = { Name = "app-bucket" Environment = "prod" Project = "demo" } } resource "aws_s3_bucket_versioning" "app_bucket" { bucket = aws_s3_bucket.app_bucket.id versioning_configuration { status = "Enabled" } } resource "aws_s3_bucket_public_access_block" "app_bucket" { bucket = aws_s3_bucket.app_bucket.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } output "app_bucket_id" { value = aws_s3_bucket.app_bucket.id } output "app_bucket_arn" { value = aws_s3_bucket.app_bucket.arn }
890 znaków · 97 słów · 47 linii

Zasób

S3

Region

eu-central-1

Bloków resource

3

Linii

47

Rozmiar

891 B

Dostęp publiczny

Zablokowany
OK

Wszystkie 4 blokady włączone.

Co zawiera wygenerowany plik
Typ blokuAdres w TerraformCo robi
terraform terraform Wymagana wersja Terraform i providera AWS 5.x
provider aws Region eu-central-1
resource aws_s3_bucket.app_bucket Bucket app-bucket
resource aws_s3_bucket_versioning.app_bucket Wersjonowanie obiektów włączone
resource aws_s3_bucket_public_access_block.app_bucket Blokada dostępu publicznego
output app_bucket_id Wartość po apply: id
output app_bucket_arn Wartość po apply: arn

Zapisz plik jako main.tf w pustym katalogu i uruchom terraform init, terraform plan, terraform apply.

Ściąga: polecenia Terraform krok po kroku

Typowa kolejność pracy z plikiem main.tf
PolecenieDo czego służy
terraform init Pobiera providera hashicorp/aws i przygotowuje katalog roboczy (raz na początku i po zmianie wersji).
terraform fmt Formatuje pliki .tf według stylu Terraform.
terraform validate Sprawdza składnię i spójność konfiguracji bez tworzenia zasobów.
terraform plan -out=tfplan Pokazuje, co zostanie utworzone, zmienione lub usunięte, i zapisuje plan.
terraform apply tfplan Wykonuje zapisany plan w AWS.
terraform output Wyświetla wartości z bloków output (np. ID, adres bazy).
terraform destroy Usuwa wszystkie zasoby opisane w tej konfiguracji.

AMI zależy od regionu

ID obrazu AMI jest inne w każdym regionie, a stare obrazy są wycofywane. Dlatego generator nie wpisuje stałego ID, tylko blok data "aws_ami", który przy plan wyszukuje najnowszy Amazon Linux 2023 lub Ubuntu 24.04. Typy Graviton (t4g, m6g, c7g) wymagają obrazu arm64, więc filtr dobiera architekturę do typu instancji.

Hasła i plik stanu

Wartość var.db_password zapisuje się w terraform.tfstate jawnym tekstem, nawet ze sensitive = true. Stan trzymaj w zdalnym, szyfrowanym backendzie z ograniczonym dostępem. Opcja Secrets Manager (manage_master_user_password) sprawia, że hasło tworzy i przechowuje AWS, a Terraform zna tylko ARN sekretu.

Reguły nazw

Bucket S3: 3–63 znaki, małe litery, cyfry, kropki i myślniki, nazwa unikalna w całym AWS. Identyfikator RDS: mała litera na początku, bez „--” i bez myślnika na końcu. Etykieta Terraform (np. app_bucket) powstaje z nazwy po zamianie znaków na „_”, a zaczynająca się cyfrą dostaje prefiks r_.

Bezpieczne ustawienia domyślne

S3 dostaje blokadę dostępu publicznego (4 przełączniki). EC2 wymaga IMDSv2, co utrudnia wykradzenie poświadczeń roli przez SSRF. RDS ma szyfrowany dysk. skip_final_snapshot = true jest wygodne w testach; na produkcji odznacz tę opcję, aby przed usunięciem bazy powstał snapshot.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator Terraform AWS

Terraform opisuje infrastrukturę jako kod. Zamiast klikać w konsoli AWS, definiujesz zasoby w plikach i wdrażasz je powtarzalnie. Generator Terraform AWS składa kompletny plik main.tf dla jednego zasobu: bucketu S3, instancji EC2 albo bazy RDS, razem z blokiem terraform, providerem, tagami i outputami.

Wspierane zasoby

ZasóbZastosowanieCo trafia do pliku
S3magazyn plików, backup, hosting statycznyaws_s3_bucket, opcjonalnie aws_s3_bucket_versioning i aws_s3_bucket_public_access_block; outputy id i arn
EC2maszyna wirtualnadata "aws_ami" (Amazon Linux 2023 lub Ubuntu 24.04) albo własne ID AMI, aws_instance z IMDSv2; outputy id i public_ip
RDSzarządzana baza PostgreSQL, MySQL lub MariaDBaws_db_instance z szyfrowanym dyskiem, zmienna db_password albo hasło w Secrets Manager; outputy id, endpoint (i secret_arn)

Każdy plik zaczyna się od required_version = ">= 1.5" i providera hashicorp/aws w wersji ~> 5.0. Po wygenerowaniu kod można skopiować albo pobrać od razu jako main.tf.

Workflow

  1. terraform init – pobiera providera AWS i przygotowuje katalog.
  2. terraform fmt i terraform validate – formatowanie i kontrola składni bez tworzenia zasobów.
  3. terraform plan -out=tfplan – podgląd zmian zapisany do pliku planu.
  4. terraform apply tfplan – wykonanie dokładnie tego planu w AWS.
  5. terraform output – odczyt ID, ARN, adresu IP lub endpointu bazy.

Zasoby usuwa terraform destroy. Bucket S3 z plikami da się tak usunąć tylko z włączoną opcją force_destroy.

Bezpieczeństwo

  • Hasło bazy podawaj przez zmienną środowiskową TF_VAR_db_password albo zaznacz opcję Secrets Manager, wtedy hasło tworzy i przechowuje AWS.
  • Nie commituj pliku stanu (terraform.tfstate): var.db_password zapisuje się w nim jawnym tekstem, nawet z sensitive = true. Użyj zdalnego, szyfrowanego backendu.
  • Blokada publicznego dostępu do S3 jest domyślnie włączona (cztery przełączniki). Odznacz ją tylko wtedy, gdy bucket ma serwować treści publicznie.

Jak działa generator Terraform AWS

Generator działa jak konwerter formularza na kod w składni HCL. Wybierasz zasób, wypełniasz pola i klikasz „Generuj Terraform”. Kod jest budowany na serwerze webp.pl, ale bez połączenia z AWS: nie podajesz kluczy dostępu, a narzędzie nie wysyła zapytań do API AWS i nie tworzy niczego w chmurze.

Przed złożeniem kodu formularz sprawdza dane według reguł AWS: format regionu (np. eu-central-1), nazwę bucketu S3 (3–63 znaki, małe litery, cyfry, kropki i myślniki, bez „..” i bez postaci adresu IP), identyfikator RDS (mała litera na początku, bez „--” i bez myślnika na końcu), typ instancji, ID AMI, klasę bazy, rozmiar dysku od 20 do 65 536 GiB i nazwę użytkownika (do 16 znaków). Błędne pole jest oznaczane, a kod nie powstaje, dopóki go nie poprawisz.

Mechanizm jest deterministyczny: te same wartości dają ten sam plik. Etykieta zasobu w Terraform powstaje z nazwy po zamianie znaków innych niż litery, cyfry i „_” na podkreślnik, więc app-bucket daje adres aws_s3_bucket.app_bucket. Nazwa zaczynająca się cyfrą dostaje prefiks r_. Tagi wpisujesz jako klucz=wartość, po jednej parze w linii; tag Name dodaje się sam z nazwy zasobu.

Generator odpowiada tylko za zapis konfiguracji. Nie sprawdza, czy nazwa jest wolna, czy typ maszyny jest dostępny w regionie ani czy limity konta pozwolą uruchomić zasób. To weryfikują Terraform i AWS przy plan i apply.

Przykład krok po kroku: baza RDS PostgreSQL

  1. Wybierz RDS i ustaw region eu-central-1. Ta wartość trafia do bloku provider "aws".
  2. Wpisz identyfikator sklep-db. Etykieta w kodzie to sklep_db, więc zasób ma adres aws_db_instance.sklep_db.
  3. Zostaw silnik PostgreSQL, klasę db.t3.micro, dysk 20 GiB i użytkownika dbadmin. Wersję silnika wybierze AWS (domyślną dla regionu).
  4. Nie zaznaczaj Secrets Manager. Plik dostanie wtedy password = var.db_password i blok variable "db_password" z walidacją długości co najmniej 8 znaków.
  5. Zostaw „Pomiń końcowy snapshot” dla środowiska testowego. Po odznaczeniu pojawi się final_snapshot_identifier = "sklep-db-final".
  6. Kliknij „Generuj Terraform” i pobierz main.tf. Tabela pod kodem pokaże bloki: terraform, provider, aws_db_instance.sklep_db, db_password oraz outputy sklep_db_id i sklep_db_endpoint.
  7. Uruchom export TF_VAR_db_password='…', a potem terraform init i terraform plan. Baza trafi do domyślnego VPC regionu i domyślnej grupy zabezpieczeń.

Dla EC2 działa to podobnie, z jedną różnicą: zamiast stałego ID obrazu dostajesz blok data "aws_ami", który przy plan wyszukuje najnowszy obraz w regionie. Typy Graviton (np. t4g.small, m6g.large) dostają filtr na obraz arm64, pozostałe na x86_64.

Argumenty w wygenerowanym kodzie

BlokArgumentWartość i uwagi
provider awsregiontekst, np. eu-central-1; dotyczy wszystkich zasobów w pliku
aws_s3_bucketbucketnazwa globalnie unikalna w całym AWS
aws_s3_bucketforce_destroytrue tylko po zaznaczeniu opcji; pozwala usunąć bucket z zawartością
aws_s3_bucket_versioningstatusEnabled, gdy wersjonowanie jest zaznaczone
aws_s3_bucket_public_access_blockblock_public_acls i 3 pozostałewszystkie cztery ustawione na true
aws_instanceamiodwołanie do data.aws_ami albo własne ID w formacie ami- + 8 lub 17 znaków szesnastkowych
aws_instancemetadata_optionshttp_tokens = "required", czyli wymagany IMDSv2
aws_db_instanceengine, instance_classpostgres, mysql lub mariadb; klasa w formacie db.rodzina.rozmiar
aws_db_instanceallocated_storageliczba w GiB, od 20 do 65 536
aws_db_instancestorage_encryptedzawsze true
aws_db_instancemanage_master_user_passwordtrue zamiast password, gdy hasło ma trzymać Secrets Manager
wszystkie zasobytagsName z nazwy zasobu plus Twoje pary; razem do 50 tagów, bez prefiksu aws:

Praktyczne wskazówki użycia

  • Generator tworzy jeden zasób na plik. Jeśli potrzebujesz bucketu i bazy, wygeneruj dwa pliki i połącz je w jednym katalogu, usuwając powtórzony blok terraform i provider.
  • Ustal konwencję nazw przed pierwszym uruchomieniem. Przedrostek z nazwą projektu lub środowiska (np. firma-prod-backup) chroni przed kolizją globalnie unikalnych nazw S3.
  • Drugi zasób tego samego typu wymaga innej nazwy, bo z niej powstaje etykieta. Dwa bloki aws_instance.web_1 w jednym katalogu zatrzymają terraform validate.
  • Na produkcji odznacz pomijanie końcowego snapshotu RDS, aby przed usunięciem bazy powstała jej kopia.
  • Kod jest tekstem, więc diff w Git pokazuje dokładnie, co zmieniłeś. Do repozytorium dodaj main.tf, ale nie terraform.tfstate ani pliki .tfvars z sekretami.

Czego narzędzie nie uwzględnia

  • Stanu konta AWS: zajętej nazwy bucketu, istniejącego identyfikatora bazy ani dostępności typu instancji w regionie.
  • Kosztów. Klasa instancji i rozmiar dysku to parametry konfiguracji, a nie wycena; ceny sprawdzisz w kalkulatorze AWS.
  • Sieci. Nie powstaje VPC, podsieć, grupa bezpieczeństwa ani para kluczy SSH, więc EC2 i RDS lądują w domyślnym VPC. Dla produkcji dopisz te zasoby samodzielnie.
  • Wersji silnika bazy, backendu stanu i modułów. Formularz sprawdza format danych, ale reszta konfiguracji zostaje po Twojej stronie.

Najczęstsze pytania

Co to plik stanu Terraform?

Terraform zapisuje w nim mapowanie między kodem a zasobami w AWS. Utrata stanu utrudnia zarządzanie infrastrukturą, dlatego trzymaj go zdalnie (np. w S3) z blokadą i szyfrowaniem.

Czym różni się terraform plan od apply?

plan pokazuje, co zostanie utworzone, zmienione lub usunięte, bez wprowadzania zmian. apply wykonuje je w AWS; z argumentem tfplan wykonuje dokładnie zapisany plan.

Czy potrzebuję konta AWS, żeby skorzystać z generatora?

Nie. Narzędzie tylko składa tekst konfiguracji i nie łączy się z żadnym kontem. Poświadczenia AWS są potrzebne dopiero przy uruchomieniu kodu w Terraform.

Dlaczego w kodzie EC2 nie ma stałego ID AMI?

ID obrazu jest inne w każdym regionie, a stare obrazy są wycofywane. Blok data "aws_ami" wyszukuje najnowszy Amazon Linux 2023 lub Ubuntu 24.04 przy każdym plan; własne ID możesz wpisać po wyborze opcji „Własne ID AMI”.

W jakiej wersji Terraform działa wygenerowany kod?

Plik wymaga Terraform 1.5 lub nowszego i providera AWS 5.x (~> 5.0). Provider 6.x nie zostanie pobrany, dopóki nie zmienisz tego ograniczenia.

Czy nazwa bucketu S3 musi być unikalna?

Tak, w całym AWS, a nie tylko w Twoim koncie czy regionie. Generator sprawdza format nazwy, ale nie to, czy jest wolna, więc dodaj przedrostek z nazwą projektu lub środowiska.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!