Meine Tags auf Stack-Ebene werden nicht an Ressourcen in meinem AWS CloudFormation-Stack weitergegeben.
Lösung
Die Weitergabe von Tags auf Stack-Ebene an Ressourcen kann je nach Ressource variieren. CloudFormation gibt Tags auf Stack-Ebene nur für Ressourcen mit der Eigenschaft Tags weiter. Eine Liste der AWS-Ressourcen und ihrer Eigenschaftstypen finden Sie in der Referenz zu AWS-Ressourcen- und Eigenschaftstypen.
Die Ressource unterstützt die Tags-Eigenschaft
Wenn die Ressource die Eigenschaft Tags unterstützt, enthält der CloudFormation-Stack die Tags auf Stack-Ebene mit dem Präfix aws:.
Beispielsweise unterstützt die Ressource AWS::S3::Bucket des Amazon Simple Storage Service (Amazon S3) die Eigenschaft Tags. Erstellen Sie einen Stack mit der Ressource AWS::S3::Bucket, und geben Sie dann Tags auf Stack-Ebene an. Nachdem Sie den Stack erstellt haben, enthält die S3-Bucket-Ressource die weitergegebenen Tags auf Stack-Ebene.
Die Ressource unterstützt die Tags-Eigenschaft nicht
Wenn die Ressource die Eigenschaft Tags nicht unterstützt, enthält Ihr CloudFormation-Stack keine Tags auf Stack-Ebene.
Mit der PutRule-API können Sie beispielsweise Tags angeben, aber die Amazon EventBridge-Ressource AWS::Events::Rule unterstützt die Eigenschaft Tags nicht. Erstellen Sie einen Stack mit der Ressource AWS::Events::Rule und geben Sie dann Tags auf Stack-Ebene an. Nachdem Sie den Stack erstellt haben, verfügt die Ressource „Ereignisregel“ nicht über die weitergegebenen Tags auf Stack-Ebene.
Wenn die Ressourcen-API jedoch das Hinzufügen von Tags nach der Ressourcenerstellung unterstützt, können Sie eine benutzerdefinierte CloudFormation-Ressource verwenden, um die Tags anzuwenden. Um diese Lösung zu implementieren, erstellen Sie zunächst eine AWS Lambda-Funktion. Verwenden Sie dann die AWS SDKs, um benutzerdefinierten Code zu schreiben, der Tags auf die Ressource anwendet. Verwenden Sie das Modul cfn-response module, damit die Lambda-Funktion als von Lambda unterstützte benutzerdefinierte Ressource dienen kann. Verwenden Sie schließlich in der CloudFormation-Vorlage ein DependsOn-Attribut, um sicherzustellen, dass die ursprüngliche Ressource erstellt wird, bevor der Stack die benutzerdefinierte Ressource erstellt.
Nachdem CloudFormation beispielsweise die Ressource AWS::Events::Rule erstellt hat, erstellt die in der Vorlage definierte benutzerdefinierte Ressource die von Lambda unterstützte benutzerdefinierte Ressource und ruft sie dann auf. Die Lambda-Funktion verwendet die TagResource-API, um benutzerdefinierte Tags auf die vorhandene Ressource anzuwenden. Dann signalisiert die Lambda-Funktion dem CloudFormation-Stack Erfolg.
Suche nach einem Problem oder Erstellung eines Problems über GitHub
Wenn ein Tag auf Stack-Ebene nicht für eine Ressource weitergegeben wird, die die Eigenschaft Tags unterstützt, überprüfen Sie, ob es sich um ein bekanntes Problem handelt. Eine Liste der bekannten Probleme finden Sie unter cloudformation-coverage-roadmap auf der GitHub-Website. Wenn das Problem nicht als Problem gesendet wurde, wählen Sie New issue (Neues Problem) aus, um ein Problem zu erstellen.