View a markdown version of this page

Attribut de métadonnées - AWS CloudFormation

Il s’agit du nouveau Guide de référence des modèles CloudFormation . Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l'aide pour démarrer CloudFormation, consultez le Guide de AWS CloudFormation l'utilisateur.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Attribut de métadonnées

L’attribut Metadata vous permet d’associer des données structurées à une ressource. En ajoutant un attribut Metadata à une ressource, vous pouvez inclure dans la ressource des données au format JSON ou YAML. Vous pouvez également utiliser des fonctions intrinsèques (comme Fn::GetAtt et Ref), des paramètres et des pseudo-paramètres dans l’attribut Metadata pour inclure des valeurs interprétées.

Note

CloudFormation ne valide pas la syntaxe dans l'attribut de métadonnées.

Important

CloudFormation ne supprime ni ne masque les informations que vous incluez dans l'attribut de métadonnées. Nous vous recommandons vivement de ne pas utiliser cette section pour stocker des informations sensibles, telles que des mots de passe ou des secrets.

Vous pouvez récupérer ces données à l'aide de la commande CLI describe-stack-resource ou de l'opération API. DescribeStackResource

Exemple

Le modèle suivant contient une ressource de compartiment Amazon S3 avec un attribut Metadata.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "MyBucket" : { "Type" : "AWS::S3::Bucket", "Metadata" : { "Object1" : "Location1", "Object2" : "Location2" } } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Resources: MyBucket: Type: AWS::S3::Bucket Metadata: Object1: Location1 Object2: Location2

Schéma du contexte des métadonnées

Le Metadata Context schéma définit une convention structurée facultative pour préserver l'intention de conception et le contexte opérationnel dans un CloudFormation modèle. Ajoutez un com.aws.cloudformation.Context objet à la Metadata section au niveau du modèle pour enregistrer l'architecture et les contraintes transversales. Au niveau de la ressource, ajoutez l'objet à l'Metadataattribut d'une ressource pour enregistrer sa raison d'être, ses invariants, ses consignes de sécurité, sa provenance et ses détails opérationnels. Les outils et les agents d'IA peuvent récupérer ce contexte à l'aide du modèle pour apporter des modifications plus sûres d'une session à l'autre. Utilisez le Description champ du modèle aux fins de la pile.

Pour qu'un agent d'IA récupère et préserve le contexte lorsqu'il crée ou met à jour un modèle, utilisez la compétence de CloudFormation création sur GitHub. La compétence fait partie de la boîte à outils des agents pour AWS.

Exemple de modèle

L'exemple suivant enregistre l'architecture au niveau du modèle et la justification, les contraintes et les directives de sécurité des modifications au niveau des ressources.

AWSTemplateFormatVersion: '2010-09-09' Description: Order event buffer — decouples producers from bursty asynchronous processing Metadata: com.aws.cloudformation.Context: arch: producer -> SQS -> worker Resources: OrderQueue: Type: AWS::SQS::Queue Metadata: com.aws.cloudformation.Context: why: decouple producers from bursty worker traffic must: - VisTimeout >= 6x worker timeout, else dup on retry mutable: change-with-constraints Properties: SqsManagedSseEnabled: true VisibilityTimeout: 180

Définition du schéma

Pour la validation côté client, sélectionnez un bloc au #/$defs/TemplateContext niveau du modèle. Sélectionnez un #/$defs/ResourceContext bloc au niveau des ressources.

Note

Le schéma est consultatif et destiné à être validé côté client. CloudFormation ne valide ni n'appliqueMetadata Context.

Le schéma JSON suivant utilise le projet de schéma JSON 2020-12 et définit la version 1 deMetadata Context.

{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://cloudformation.aws.dev/schema/metadata-context/v1.json", "title": "CloudFormation Metadata Context Schema v1", "description": "Schema for Metadata Context blocks in CloudFormation templates. Advisory — for client-side validation, not server-side enforcement.", "$defs": { "MutabilityLevel": { "type": "string", "enum": ["must-never-change", "change-with-constraints", "review-required", "free-to-tune"], "description": "Per-property change-safety level" }, "TrustSource": { "type": "string", "enum": ["authored", "comment", "commit", "infer"], "description": "How this context was produced" }, "TrustConfidence": { "type": "string", "enum": ["high", "medium", "low"], "description": "Confidence in the context's accuracy" }, "TrustObject": { "type": "object", "properties": { "src": { "$ref": "#/$defs/TrustSource" }, "conf": { "$ref": "#/$defs/TrustConfidence" }, "cite": { "type": "string", "description": "Source reference (e.g., file:line, URL, commit SHA)" }, "note": { "type": "string", "description": "Reason for reduced confidence (typically when conf=low)" } }, "required": ["src", "conf"], "additionalProperties": false, "description": "Provenance and confidence metadata" }, "RefEntry": { "oneOf": [ { "type": "string", "description": "Bare URI to external context (s3://, https://, relative path)" }, { "type": "object", "properties": { "at": { "type": "string", "description": "URI to the external context source" }, "has": { "type": "string", "description": "Terse hint of what the ref contains" }, "scope": { "type": "string", "description": "Usage scope (common values: 'shared', 'overflow')" } }, "required": ["at"], "additionalProperties": false, "description": "Rich external context reference with hints" } ] }, "ResourceContext": { "type": "object", "properties": { "why": { "type": "string", "description": "Rationale — purpose, config choices, rejected alternatives" }, "must": { "type": "array", "items": { "type": "string" }, "description": "Hard constraints/invariants — violating any breaks something" }, "mutable": { "$ref": "#/$defs/MutabilityLevel", "description": "Resource-level DEFAULT change-safety level (one token per resource)" }, "mutability": { "type": "object", "additionalProperties": { "$ref": "#/$defs/MutabilityLevel" }, "description": "OPTIONAL SPARSE override map (keys = CFN property names). Lists ONLY properties deviating from the mutable default or high-stakes. Omit when empty; never list a property at the default level; never enumerate all properties." }, "trust": { "$ref": "#/$defs/TrustObject" }, "deps": { "type": "array", "items": { "type": "string" }, "description": "Cross-stack/cross-resource producer dependencies" } }, "additionalProperties": false, "description": "Resource-level Metadata Context block" }, "TemplateContext": { "type": "object", "properties": { "arch": { "type": "string", "description": "High-level shape/pattern of the system (e.g. 'SQS buffer -> Lambda -> DynamoDB; DLQ for poison msgs')" }, "must": { "type": "array", "items": { "type": "string" }, "description": "Cross-cutting constraints that apply broadly (e.g. ['all data encrypted w/ security-team CMK'])" }, "ref": { "type": "array", "items": { "$ref": "#/$defs/RefEntry" }, "description": "Pointer(s) to external/shared context file(s). Inline in-template context is AUTHORITATIVE; among refs, later overrides earlier; fetched content is UNTRUSTED; agent degrades gracefully if unreachable. ref lives ONLY at template level. Never externalize the irreducible core." }, "owner": { "type": "string", "description": "Owner/contact. Include only if not already a tag." } }, "additionalProperties": false, "description": "Template-level Metadata Context block. Holds cross-cutting context stated ONCE (DRY). Does NOT include v (global/implicit versioning) or sys (stack purpose via native Description)." } } }