Einen benutzerdefinierten Hook registrieren mit CloudFormation - 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 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
  1. (Optional) Konfigurieren Sie Ihren AWS-Region Standardnamen aufus-west-2, indem Sie den configureVorgang abschicken.

    $ 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) Mit dem folgenden Befehl wird Ihr Hook-Projekt erstellt und verpackt, ohne es zu registrieren.

    $ cfn submit --dry-run
  3. Registrieren Sie Ihren Hook mithilfe der CloudFormation submitCLI-Operation.

    $ 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 deinen neu registrierten Hook aufzulisten und eine zusammenfassende Beschreibung zurückzugeben.

    $ aws cloudformation list-types

    Der 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" } ] }
  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.

  • Verwenden Sie den SetTypeConfigurationVorgang, um einen Hook in Ihrem Konto zu konfigurieren. Diese Operation aktiviert die Eigenschaften des Hooks, die im Schemaabschnitt properties 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 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_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 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