Hvad er YAML-filformatet?
.yaml er et tekstfilformat, der bruges til at udveksle data mellem forskellige applikationer. YAML - forkortelse for *YAML Ain't Markup Language* - er en standard til organisering af information i et menneskelæsbart, platformuafhængigt format ved hjælp af indrykningsbaserede key: value-par kodet i UTF-8. Parsing af .yaml-filer kræver, at et YAML-bibliotek er installeret; populære biblioteker inkluderer PyYAML (Python), js-yaml (JavaScript) og SnakeYAML (Java). .yaml-filer gemmes undertiden med filtypenavnet .yml, som er funktionelt identisk. Udover dataudveksling bruges .yaml-filer typisk til serialisering af data og til at skrive konfigurationsfiler i værktøjer som Docker Compose, Kubernetes og GitHub Actions.
Serialisering
Serialisering er et begreb, der bruges inden for datalogi. Serialisering er en proces, hvor data eller objekter oversættes til et format, der kan gemmes, transmitteres og rekonstrueres senere. For eksempel skal to institutioner, der udveksler data i et standardiseret format ved hjælp af forskellige applikationer, serialisere disse data, før de sendes. Serialiserede data kan også gemmes i en fil - .yaml, .xml, .json, .toml osv. - og derefter sendes til modtagerne.
Et .yaml-dokument kan valgfrit begynde med --- (dokumentstart-markør) og slutte med ...; dette tillader også flere dokumenter i en enkelt fil. Siden YAML 1.2 (2009, revideret 2021) er enhver gyldig JSON-fil også gyldig YAML.
Sikkerhed og tryghed
RISIKO: MEDIUMEn YAML-fil er almindelig tekst og eksekveres ikke i sig selv, så det er sikkert at læse en. To reelle risici: (1) konfigurations-YAML (CI-pipelines, Compose, K8s, Ansible) indeholder ofte hemmeligheder - tokens, adgangskoder, nøgler - så indsæt den ikke i upålidelige online-validatorer eller commit den offentligt. (2) Programmatisk fare: indlæsning af upålidelig YAML med en usikker parser (f.eks. PyYAMLs yaml.load i stedet for yaml.safe_load) kan eksekvere vilkårlige objekter/kode - brug altid den sikre loader til filer, du ikke stoler på. Redigeringsrisiko: et tabulatortegn eller et forkert placeret mellemrum ændrer lydløst betydningen, så valider efter redigering.
Formatdetaljer
kort fortaltProgrammer der åbner YAML-filer
Tekniske detaljer
dyb specifikation| Filtypenavn | .yaml (også .yml) |
| MIME-type | application/yaml |
| Kodning | UTF-8 almindelig tekst; ingen binær header eller magic bytes |
| Struktur | Indrykningsbaserede key: value-par; indrykning bruger kun mellemrum - tabulatortegn er forbudt ifølge specifikationen |
| Dokumentmarkører | --- markerer dokumentstart, ... markerer dokumentslut; flere dokumenter kan eksistere i én fil |
| Indfødte datatyper | Strenge, heltal, flydende tal, booleans, null, sekvenser (lister), mappings (ordbøger), tidsstempler |
| Specifikationsversion | YAML 1.2 (2009, revideret 2021); erstatter YAML 1.1 (2005) og YAML 1.0 (2001) |
| JSON-kompatibilitet | Siden YAML 1.2 er ethvert gyldigt JSON-dokument også gyldig YAML - JSON er en streng delmængde |
| Kommentarer | Enkeltlinjekommentarer introduceret med # ; kan optræde på deres egen linje eller inline efter en værdi |
| Flerlinjede strenge | Literal block scalar (|) bevarer linjeskift; folded scalar (>) konverterer linjeskift til mellemrum |
| Ankre og aliaser | & definerer et navngivet anker og * refererer (aliaser) til det, hvilket muliggør genbrug af værdier uden duplikering |
| Udviklere | Clark Evans, Ingy döt Net, Oren Ben-Kiki |
| Almindelige anvendelsesscenarier | Konfigurationsfiler (Kubernetes, Docker Compose, GitHub Actions, Ansible), dataserialisering, OpenAPI-definitioner |
| Anførselstegn | Strenge uden anførselstegn, med enkelte ('...') og dobbelte ("...") anførselstegn understøttes alle; dobbelte tillader escape-sekvenser |
| Udgivet | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 2021) |
| Åben standard | Ja · royaltyfri |
| Specifikation | yaml.org |