Vad är filformatet YAML?
.yaml är ett textfilformat som används för att utbyta data mellan olika applikationer. YAML - förkortning för *YAML Ain't Markup Language* - är en standard för att organisera information i ett läsbart, plattformsoberoende format med hjälp av indragningsbaserade key: value-par kodade i UTF-8. Parsning av .yaml-filer kräver att ett YAML-bibliotek är installerat; populära bibliotek inkluderar PyYAML (Python), js-yaml (JavaScript) och SnakeYAML (Java). .yaml-filer sparas ibland med filtillägget .yml, vilket är funktionellt identiskt. Utöver datautbyte används .yaml-filer vanligtvis för att serialisera data och för att skriva konfigurationsfiler i verktyg som Docker Compose, Kubernetes och GitHub Actions.
Serialisering
Serialisering är en term som används inom datavetenskap. Serialisering är en process för att översätta data eller objekt till ett format som kan lagras, överföras och rekonstrueras senare. Till exempel måste två institutioner som utbyter data i ett standardiserat format med hjälp av olika applikationer serialisera den datan innan den skickas. Serialiserad data kan också lagras i en fil - .yaml, .xml, .json, .toml, etc. - och sedan skickas till mottagarna.
Ett .yaml-dokument kan valfritt börja med dokumentstartmarkören --- och sluta med ...; detta tillåter även flera dokument i en enda fil. Sedan YAML 1.2 (2009, reviderad 2021) är varje giltig JSON-fil också giltig YAML.
Säkerhet & trygghet
RISK: MEDIUMEn YAML-fil är klartext och körs inte av sig själv, så det är säkert att läsa en. Två verkliga risker: (1) konfigurations-YAML (CI-pipelines, Compose, K8s, Ansible) innehåller ofta hemligheter - tokens, lösenord, nycklar - så klistra inte in dem i otillförlitliga online-validatorer eller skicka in dem till publika arkiv. (2) Programmatisk fara: att ladda otillförlitlig YAML med en osäker parser (t.ex. PyYAMLs yaml.load istället för yaml.safe_load) kan köra godtyckliga objekt/kod - använd alltid den säkra laddaren för filer du inte litar på. Redigeringsrisk: en tabulator eller ett feljusterat mellanslag ändrar tyst innebörden, så validera efter redigering.
Formatdetaljer
i ett nötskalProgram som öppnar YAML-filer
Tekniska detaljer
djup specifikation| Filtillägg | .yaml (även .yml) |
| MIME-typ | application/yaml |
| Kodning | UTF-8 klartext; ingen binär header eller magic bytes |
| Struktur | Indragningsbaserade key: value-par; indrag använder endast mellanslag - tabulatorer är förbjudna enligt specifikationen |
| Dokumentmarkörer | --- markerar dokumentstart, ... markerar dokumentslut; flera dokument kan finnas i samma fil |
| Inbyggda datatyper | Strängar, heltal, flyttal, booleaner, null, sekvenser (listor), mappningar (lexikon), tidsstämplar |
| Specifikationsversion | YAML 1.2 (2009, reviderad 2021); ersätter YAML 1.1 (2005) och YAML 1.0 (2001) |
| JSON-kompatibilitet | Sedan YAML 1.2 är varje giltigt JSON-dokument också giltig YAML - JSON är en strikt delmängd |
| Kommentarer | Enradskommentarer inleds med # ; kan förekomma på en egen rad eller på samma rad efter ett värde |
| Flerradiga strängar | Literal block scalar (|) bevarar radbrytningar; folded scalar (>) konverterar radbrytningar till mellanslag |
| Ankare och alias | & definierar ett namngivet ankare och * refererar till (alias) det, vilket möjliggör återanvändning av värden utan duplicering |
| Utvecklare | Clark Evans, Ingy döt Net, Oren Ben-Kiki |
| Vanliga användningsområden | Konfigurationsfiler (Kubernetes, Docker Compose, GitHub Actions, Ansible), dataserialisering, OpenAPI-definitioner |
| Citattecken | Strängar utan citattecken, med enkla citattecken ('...') och dubbla citattecken ("...") stöds; dubbla citattecken tillåter escape-sekvenser |
| Släppt | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 2021) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | yaml.org |