YAML-konfig (.yaml)
YAML StandardYAML Ain't Markup Language (YAML) är det dominerande dataserialiseringsformatet för modern DevOps, molninfrastruktur (Kubernetes, Docker Compose) och CI/CD-automatisering, med betoning på mänsklig läsbarhet genom indrag med enbart blanksteg.
Konvertera YAML till JSON
Gratis konverterare från YAML till JSON i webbläsaren. Konvertera filer direkt på din enhet.
Granska och metadata
Operativsystem och filanalysverktyg identifierar YAML-filer genom att granska den inledande sekvensen av binära byte:
Signatur i filhuvudet på bytenivå (magiska byte)
Operativsystem och filanalysverktyg identifierar YAML-filer genom att granska den inledande sekvensen av binära byte:
HEX-SIGNATUR (OFFSET 0):
2D 2D 2D 0AASCII-REPRESENTATION: ---\n
Standardisering: YAML 1.2.2 Specification
Tekniska specifikationer
| Containerarkitektur | Indragsbaserat, människovänligt dataserialiseringsformat och utökning av JSON med stöd för ankare och alias |
| Komprimering | Okomprimerad textström |
| Byteordning | UTF-8-/Unicode-textström |
| Färgrymder | Ej tillämpligt (dataserialisering) |
| Kanaler och struktur | Mappningar (nyckel-värde-ordböcker), sekvenser (listor), skalära typer (strängar, tal, booleska värden) samt ankare (&ref/*ref) |
| Maximala dimensioner | Obegränsad dokumentstorlek (stöder flerdokumentströmmar separerade med ”---”) |
| Transparens | Ingen |
| Strömning och progressiv visning | Flerdokumentströmmar möjliggör sekventiell bearbetning dokument för dokument |
Teknisk jämförelsematris: YAML jämfört med konkurrenter
| Tekniskt attribut | YAML (Aktuell) | JSON | TOML | XML |
|---|---|---|---|---|
| Syntaxstil | Hierarki med indrag av blanksteg | Strikta parenteser och citattecken | Tabeller och nyckel=värde-par | Utförliga start- och sluttaggar |
| Stöd för kommentarer | Inbyggt (#-kommentarer) | Inga kommentarer tillåtna | Inbyggt (#-kommentarer) | <!-- kommentarer --> |
| DevOps-användning | Stödet varierar mellan program. | Stödet varierar mellan program. | Paketkonfiguration för Rust/Python | Äldre företagskonfiguration |
| Dataåteranvändning | Inbyggda ankare (&) och alias (*) | Ingen (manuell dubblering) | Ingen (manuell dubblering) | XML-entiteter |
Vanliga skadeorsaker och hex-återställningsguide
Parserfel: 'mapping values are not allowed here' eller indenteringsfel.
Grundorsak: Blandning av tabbar med mellanslag eller felinriktade indenteringsnivåer.
Återställning: Konvertera tabbar till mellanslag och validera syntaxen med File2File.app YAML Formatter.
Säkerhetsanalys och attackvektorer för tolkar
YAML-tolkar som stöder anpassade typannoteringar (som PyYAML:s 'yaml.load()') har historiskt tillåtit fjärrkodkörning genom att skapa godtyckliga objekt.
Kända attackvektorer
- Godtycklig kodkörning genom osäkra deserialiseringstaggar för objekt (t.ex. '!!python/object/apply').
- Entitetsutvidgningsbomber (motsvarigheten till 'billion laughs' med YAML-ankare och alias).
- Typförväxlingssårbarheter på grund av implicit tolkning av boolska värden och tidsstämplar.
Rekommenderade skyddsåtgärder: Använd alltid säkra YAML-tolkar ('yaml.safe_load()' i Python) och tillämpa gränser för ankarexpansionsdjup.
Historiskt ursprung och milstolpar
Viktiga fördelar
- YAML används ofta i infrastrukturverktyg, men stöd och beteende varierar mellan implementationer.
- Ren, läsbar syntax: eliminerar röran av klamrar, parenteser och citattecken genom intuitiv indentering.
- Stöder referenser och ankarreferenser (&anchor / *anchor) för att återanvända upprepade konfigurationsblock utan dubblering.
Tekniska begränsningar
- Blankstegskänsligt: en oavsiktlig tab eller ett extra mellanslag kan förstöra dokumenthierarkin eller orsaka parserfel.
- Ökända typomvandlingsfel: ord utan citattecken som 'no', 'on', 'yes' eller landskoder ('NO' för Norge) kan i tysthet tolkas som booleska värden.
- Betydligt långsammare parsningstakt jämfört med binära format eller strikt JSON.
Intressant teknisk kuriosa
- YAML stod ursprungligen för 'Yet Another Markup Language', men döptes skämtsamt om till den rekursiva akronymen 'YAML Ain't Markup Language' för att betona dataserialisering.
- 'Norge-problemet' är ett berömt programmeringsfel där landskoden 'NO' i en YAML-fil tolkades som det boolska värdet 'false'.
- Varje giltig JSON-fil i världen är samtidigt också en 100 % giltig YAML-fil.
Vanliga tekniska frågor
Vad används YAML till?
YAML är det primära konfigurationsspråket för molnberäkning, Kubernetes-klusterdistribution, Docker Compose-filer, GitHub Actions-arbetsflöden och programvaruinställningar.
Kan jag använda tabbade indrag i YAML-filer?
Nej. Den officiella YAML-specifikationen förbjuder helt tabbtecken för indrag; du måste alltid använda mellanslag (vanligtvis 2 mellanslag per nivå).
Hur kan jag konvertera YAML till JSON?
Du kan konvertera YAML-filer till ren, validerad JSON med ett enda klick i File2File.app direkt i webbläsaren, med full respekt för din integritet.
Relaterade konverteringspar för YAML
Omvandling av YAML-konfigurationsfiler till JSON-format översätter mänskligt läsbara textstrukturer med indrag till strikta, maskinläsbara objekt för webbapplikationer.
Omvandling av JSON-konfigurationsfiler till YAML-format förvandlar stela programmatiska datastrukturer till rena, mänskligt läsbara dokument som är mycket enklare för systemadministratörer att redigera.