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.
Einen benutzerdefinierten Hook registrieren mit AWS CloudFormation
Sobald Sie einen benutzerdefinierten Hook erstellt haben, müssen Sie ihn registrieren, AWS CloudFormation damit Sie ihn verwenden können. In diesem Abschnitt erfahren Sie, wie Sie Ihren Hook für die Verwendung in Ihrem verpacken und registrieren AWS-Konto.
Einen Hook verpacken (Java)
Wenn Sie Ihren Hook mit Java entwickelt haben, verwenden Sie Maven, um ihn zu verpacken.
Führen Sie im Verzeichnis Ihres Hook-Projekts den folgenden Befehl aus, um Ihren Hook zu erstellen, Komponententests auszuführen und Ihr Projekt als JAR
Datei zu verpacken, mit der Sie Ihren Hook an die CloudFormation Registry senden können.
mvn clean package
Registrieren Sie einen benutzerdefinierten Hook
Um einen Hook zu registrieren
-
(Optional) Konfigurieren Sie Ihren AWS-Region Standardnamen auf
us-west-2
, indem Sie configureVorgang.$
aws configureAWS Access Key ID [None]:
<Your Access Key ID>
AWS Secret Access Key [None]:
<Your Secret Key>
Default region name [None]:
us-west-2
Default output format [None]:
json
-
(Optional) Der folgende Befehl erstellt und verpackt Ihr Hook-Projekt, ohne es zu registrieren.
$
cfn submit --dry-run -
Registrieren Sie Ihren Hook mit dem CloudFormation CLI submitBetrieb.
$
cfn submit --set-defaultDer Befehl gibt den folgenden Befehl zurück.
{‘ProgressStatus’: ‘COMPLETE’}
Ergebnisse: Sie haben Ihren Hook erfolgreich registriert.
Überprüfe, ob Hooks in deinem Konto zugänglich sind
Vergewissere dich, dass dein Hook in dir AWS-Konto und in den Regionen, in denen du ihn eingereicht hast, verfügbar ist.
-
Um deinen Hook zu verifizieren, verwende den list-typesBefehl, um Ihren neu registrierten Hook aufzulisten und eine zusammenfassende Beschreibung zurückzugeben.
$
aws cloudformation list-typesDer Befehl gibt die folgende Ausgabe zurück und zeigt Ihnen auch öffentlich verfügbare Hooks, die Sie in Ihren Regionen AWS-Konto und Regionen aktivieren können.
{ "TypeSummaries": [ { "Type": "HOOK", "TypeName": "MyCompany::Testing::MyTestHook", "DefaultVersionId": "00000001", "TypeArn": "arn:aws:cloudformation:us-west-2:
ACCOUNT_ID
/type/hook/MyCompany-Testing-MyTestHook", "LastUpdated": "2021-08-04T23:00:03.058000+00:00", "Description": "Verifies S3 bucket and SQS queues properties before creating or updating" } ] } -
Rufen Sie das
TypeArn
aus derlist-type
Ausgabe für Ihren Hook ab und speichern Sie es.export HOOK_TYPE_ARN=arn:aws:cloudformation:us-west-2:
ACCOUNT_ID
/type/hook/MyCompany-Testing-MyTestHook
Informationen zum Veröffentlichen von Hooks für den öffentlichen Gebrauch finden Sie unterHooks für den öffentlichen Gebrauch veröffentlichen.
Hooks konfigurieren
Nachdem Sie Ihren Hook entwickelt und registriert haben, können Sie Ihren Hook in Ihrem konfigurieren, AWS-Konto indem Sie ihn in der Registry veröffentlichen.
-
Um einen Hook in Ihrem Konto zu konfigurieren, verwenden Sie SetTypeConfigurationOperation. Diese Operation aktiviert die Eigenschaften des Hooks, die im
properties
Schemaabschnitt des Hooks definiert sind. Im folgenden Beispiel ist dieminBuckets
Eigenschaft1
in der Konfiguration auf gesetzt.Anmerkung
Indem Sie Hooks in Ihrem Konto aktivieren, autorisieren Sie einen Hook, die von Ihnen AWS-Konto definierten Berechtigungen zu verwenden. CloudFormation entfernt nicht benötigte Berechtigungen, bevor du deine Berechtigungen an den Hook weitergibst. CloudFormation empfiehlt Kunden oder Hook-Benutzern, die Hook-Berechtigungen zu überprüfen und sich darüber im Klaren zu sein, welche Berechtigungen die Hooks haben dürfen, bevor Sie Hooks in Ihrem Konto aktivieren.
Geben Sie die Konfigurationsdaten für Ihre registrierte Hook-Erweiterung im selben Konto an und AWS-Region.
$
aws cloudformation set-type-configuration --region us-west-2 --configuration '{"CloudFormationConfiguration":{"HookConfiguration":{"HookInvocationStatus":"ENABLED","FailureMode":"FAIL","Properties":{"minBuckets": "1","minQueues": "1", "encryptionAlgorithm": "aws:kms"}}}}' --type-arn $HOOK_TYPE_ARN
Wichtig
Damit Ihr Hook die Konfiguration Ihres Stacks proaktiv überprüfen kann, müssen Sie
ENABLED
in demHookInvocationStatus
HookConfiguration
Abschnitt, nachdem der Hook registriert und in Ihrem Konto aktiviert wurde, den Wert auf setzen.
Zugriff AWS APIs in Handlern
Wenn Ihr Hooks AWS API in einem seiner Handler einen verwendet, erstellt der CFN - CLI automatisch eine Vorlage für eine IAM Ausführungsrolle,. hook-role.yaml
Die hook-role.yaml
Vorlage basiert auf den Berechtigungen, die für jeden Handler im Abschnitt des Handlers des Hook-Schemas angegeben sind. Wenn das --role-arn
Flag während des generateBei der Operation wird die Rolle in diesem Stack bereitgestellt und als Ausführungsrolle für den Hook verwendet.
Weitere Informationen finden Sie unter Zugreifen AWS APIs von einem Ressourcentyp aus.
Vorlage hook-role.yaml
Anmerkung
Wenn Sie sich dafür entscheiden, Ihre eigene Ausführungsrolle zu erstellen, empfehlen wir dringend, das Prinzip der geringsten Rechte anzuwenden, indem Sie nur die Liste zulassen und. hooks.cloudformation.amazonaws.com
resources.cloudformation.amazonaws.com
Die folgende Vorlage verwendet IAM die SQS Berechtigungen Amazon S3 und Amazon.
AWSTemplateFormatVersion: 2010-09-09 Description: > This CloudFormation template creates a role assumed by CloudFormation during Hook operations on behalf of the customer. Resources: ExecutionRole: Type: 'AWS::IAM::Role' Properties: MaxSessionDuration: 8400 AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - resources.cloudformation.amazonaws.com - hooks.cloudformation.amazonaws.com Action: 'sts:AssumeRole' Condition: StringEquals: aws:SourceAccount: !Ref AWS::AccountId StringLike: aws:SourceArn: !Sub arn:${AWS::Partition}:cloudformation:${AWS::Region}:${AWS::AccountId}:type/hook/MyCompany-Testing-MyTestHook/* Path: / Policies: - PolicyName: HookTypePolicy PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - 's3:GetEncryptionConfiguration' - 's3:ListBucket' - 's3:ListAllMyBuckets' - 'sqs:GetQueueAttributes' - 'sqs:GetQueueUrl' - 'sqs:ListQueues' Resource: '*' Outputs: ExecutionRoleArn: Value: !GetAtt - ExecutionRole - Arn