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 CloudFormation
Sobald Sie einen benutzerdefinierten Hook erstellt haben, müssen Sie ihn registrieren, 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 den configureVorgang abschicken.$aws configureAWS Access Key ID [None]:<Your Access Key ID>AWS Secret Access Key [None]:<Your Secret Key>Default region name [None]:us-west-2Default output format [None]:json -
(Optional) Mit dem folgenden Befehl wird Ihr Hook-Projekt erstellt und verpackt, ohne es zu registrieren.
$cfn submit --dry-run -
Registrieren Sie Ihren Hook mithilfe der CloudFormation submitCLI-Operation.
$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 deinen neu registrierten Hook aufzulisten und eine zusammenfassende Beschreibung zurückzugeben.
$aws cloudformation list-typesDer Befehl gibt die folgende Ausgabe zurück und zeigt dir auch öffentlich verfügbare Hooks, die du in deinen Regionen AWS-Konto und Regionen aktivieren kannst.
{ "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
TypeArnaus derlist-typeAusgabe 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.
-
Verwenden Sie den SetTypeConfigurationVorgang, um einen Hook in Ihrem Konto zu konfigurieren. Diese Operation aktiviert die Eigenschaften des Hooks, die im Schemaabschnitt
propertiesdes Hooks definiert sind. Im folgenden Beispiel ist dieminBucketsEigenschaft1in 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 deine Berechtigungen an den Hook weitergegeben werden. 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_ARNWichtig
Damit Ihr Hook die Konfiguration Ihres Stacks proaktiv überprüfen kann, müssen Sie
ENABLEDin demHookInvocationStatusHookConfigurationAbschnitt, nachdem der Hook registriert und in Ihrem Konto aktiviert wurde, den Wert auf setzen.
Zugriff AWS APIs in Handlern
Wenn Ihr Hooks eine AWS API in einem seiner Handler verwendet, erstellt die 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 generateVorgangs nicht verwendet wird, wird die Rolle in diesem Stack bereitgestellt und als Ausführungsrolle des Hooks 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 die IAM-, Amazon S3- und Amazon SQS SQS-Berechtigungen.
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