Einen benutzerdefinierten Hook registrieren mit AWS CloudFormation - AWS CloudFormation

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
  1. (Optional) Konfigurieren Sie Ihren AWS-Region Standardnamen aufus-west-2, indem Sie configureVorgang.

    $ aws configure AWS 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
  2. (Optional) Der folgende Befehl erstellt und verpackt Ihr Hook-Projekt, ohne es zu registrieren.

    $ cfn submit --dry-run
  3. Registrieren Sie Ihren Hook mit dem CloudFormation CLI submitBetrieb.

    $ cfn submit --set-default

    Der 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.

  1. Um deinen Hook zu verifizieren, verwende den list-typesBefehl, um Ihren neu registrierten Hook aufzulisten und eine zusammenfassende Beschreibung zurückzugeben.

    $ aws cloudformation list-types

    Der 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" } ] }
  2. Rufen Sie das TypeArn aus der list-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 die minBuckets Eigenschaft 1 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 dem HookInvocationStatus 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