Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
CloudFormation Referenz für benutzerdefinierte Ressourcenanfragen und Antworten
CloudFormation verwaltet benutzerdefinierte Ressourcen über ein Request-Response-Protokoll, das mit Ihrem Anbieter für benutzerdefinierte Ressourcen kommuniziert. Jede Anfrage umfasst einen Anforderungstyp (CreateUpdate, oderDelete) und folgt diesem allgemeinen Arbeitsablauf:
-
Ein Vorlagenentwickler definiert eine benutzerdefinierte Ressource mit einem
ServiceTokenundServiceTimeoutin der Vorlage und initiiert einen Stack-Vorgang. -
CloudFormation sendet über SNS oder Lambda eine JSON-Anfrage an den Anbieter benutzerdefinierter Ressourcen.
-
Der benutzerdefinierte Ressourcenanbieter verarbeitet die Anfrage und gibt eine JSON-Antwort an eine vorsignierte Amazon S3 S3-Bucket-URL zurück, bevor der Timeout-Zeitraum abläuft.
-
CloudFormation liest die Antwort und fährt mit dem Stack-Vorgang fort. Wenn vor Ablauf des Timeouts keine Antwort eingeht, gilt die Anfrage als nicht erfolgreich und der Stack-Vorgang schlägt fehl.
Weitere Informationen finden Sie unter So funktionieren benutzerdefinierte Ressourcen.
In diesem Abschnitt werden die Struktur, die Parameter und die erwarteten Antworten für jeden Anforderungstyp beschrieben.
Anmerkung
Die Gesamtgröße des Antworttexts darf 4 096 Bytes nicht überschreiten.
Einrichtung der Vorlage
Bei der Definition einer benutzerdefinierten Ressource in einer Vorlage verwendet AWS::CloudFormation::CustomResourceder Vorlagenentwickler die folgenden Eigenschaften:
ServiceToken-
Ein Amazon SNS SNS-Themen-ARN oder eine Lambda-Funktions-ARN aus derselben Region wie der Stack.
Erforderlich: Ja
Typ: Zeichenfolge
ServiceTimeout-
Die maximale Zeit in Sekunden, bis das Timeout eines benutzerdefinierten Ressourcenvorgangs abläuft. Es muss ein Wert zwischen 1 und 3600 sein. Standard: 3600 Sekunden (1 Stunde).
Required: No
Typ: Zeichenfolge
Zusätzliche Ressourceneigenschaften werden unterstützt. Ressourceneigenschaften werden wie ResourceProperties in der Anfrage enthalten sein. Der benutzerdefinierte Ressourcenanbieter muss ermitteln, welche Eigenschaften gültig sind und welche Werte zulässig sind.
Objekt anfordern
Antwortobjekt
Der benutzerdefinierte Ressourcenanbieter sendet für alle Anforderungstypen eine Antwort an die vorsignierte URL. Wenn der benutzerdefinierte Ressourcenanbieter keine Antwort sendet, CloudFormation wartet er, bis das Zeitlimit für den Vorgang überschritten wird.
Die Antwort muss ein JSON-Objekt mit den folgenden Feldern sein:
Status-
Es muss entweder
SUCCESSoderFAILEDsein.Erforderlich: Ja
Typ: Zeichenfolge
RequestId-
Eine eindeutige ID für die Anforderung. Kopieren Sie diesen Wert genau so, wie er in der Anfrage erscheint.
Erforderlich: Ja
Typ: Zeichenfolge
StackId-
Der Amazon-Ressourcenname (ARN), der den Stack identifiziert, der die benutzerdefinierte Ressource enthält. Kopieren Sie diesen Wert genau so, wie er in der Anfrage erscheint.
Erforderlich: Ja
Typ: Zeichenfolge
LogicalResourceId-
Der vom Entwickler der Vorlagen gewählte Name (logische ID) der benutzerdefinierten Ressource in der CloudFormation -Vorlage. Kopieren Sie diesen Wert genau so, wie er in der Anfrage erscheint.
Erforderlich: Ja
Typ: Zeichenfolge
PhysicalResourceId-
Dieser Wert sollte eine eindeutige Kennung für den Anbieter der benutzerdefinierten Ressource sein und kann bis zu 1 KB groß sein. Der Wert muss eine nicht leere Zeichenfolge sein und muss für alle Antworten für dieselbe Ressource identisch sein.
Beim Aktualisieren von benutzerdefinierten Ressourcen
PhysicalResourceIdbestimmt der zurückgegebene Wert für das Aktualisierungsverhalten. Wenn der Wert gleich bleibt, wird dies CloudFormation als normales Update betrachtet. Wenn sich der Wert ändert, CloudFormation interpretiert das Update als Ersatz und sendet eine Löschanforderung an die alte Ressource. Weitere Informationen finden Sie unter AWS::CloudFormation::CustomResource.Erforderlich: Ja
Typ: Zeichenfolge
Reason-
Beschreibt den Grund für eine Reaktion auf einen Fehler.
Erforderlich, wenn
StatuseinFAILEDist. Er ist andernfalls optional.Required: Conditional
Typ: Zeichenfolge
NoEcho-
Gibt an, ob die Ausgabe der benutzerdefinierten Ressource maskiert wird, wenn sie mithilfe der
Fn::GetAtt-Funktion abgerufen wird. Wenn diese Option auftruegesetzt ist. werden alle zurückgegebenen Werte mit Sternchen (*****) maskiert außer denen, die imMetadataAbschnitt der Vorlage gespeichert sind. CloudFormation transformiert, ändert oder bearbeitet keine Informationen imMetadataAbschnitt. Der Standardwert istfalse.Weitere Informationen über die Verwendung von
NoEchozur Maskierung sensibler Informationen finden Sie in der bewährten Methode Keine Anmeldeinformationen in Vorlagen einbetten .Nur für
UpdateAntwortenCreateund verfügbar. Wird fürDeleteAntworten nicht unterstützt.Required: No
Typ: Boolesch
Data-
Die vom benutzerdefinierten Ressourcenanbieter definierten Namen-Wert-Paare, die mit der Antwort gesendet werden. Sie können auf die hier namentlich angegebenen Werte in der Vorlage mit
Fn::GetAttzugreifen.Nur für
CreateUpdateAntworten verfügbar. Wird fürDeleteAntworten nicht unterstützt.Wichtig
Wenn die Namen-Wert-Paare vertrauliche Informationen enthalten, sollten Sie das
NoEcho-Feld benutzen, um die Ausgabe der benutzerdefinierten Ressource zu maskieren. Andernfalls sind die Werte durch APIs diese Oberflächeneigenschaftswerte (z. B.DescribeStackEvents) sichtbar.Required: No
Typ: JSON-Objekt
Beispiele für erfolgreiche Antworten
Createund Update Antwort
{
"Status": "SUCCESS",
"RequestId": "unique-request-id",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
"LogicalResourceId": "resource-logical-id",
"PhysicalResourceId": "provider-defined-physical-id",
"NoEcho": true,
"Data": {
"key1": "value1",
"key2": "value2"
}
}
Delete-Antwort
{
"Status": "SUCCESS",
"RequestId": "unique-request-id",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
"LogicalResourceId": "resource-logical-id",
"PhysicalResourceId": "provider-defined-physical-id"
}
Beispiel für eine gescheiterte Antwort
{
"Status": "FAILED",
"RequestId": "unique-request-id",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
"LogicalResourceId": "resource-logical-id",
"PhysicalResourceId": "provider-defined-physical-id",
"Reason": "Required failure reason string"
}