

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
<a name="registering-hooks"></a>

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)
<a name="registering-hooks-package"></a>

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
<a name="registering-hooks-register"></a>

**Um einen Hook zu registrieren**

1. (Optional) Konfigurieren Sie Ihren AWS-Region Standardnamen auf`us-west-2`, indem Sie den [https://docs.aws.amazon.com/cli/latest/reference/configure/](https://docs.aws.amazon.com/cli/latest/reference/configure/)Vorgang 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
   ```

1. (Optional) Mit dem folgenden Befehl wird Ihr Hook-Projekt erstellt und verpackt, ohne es zu registrieren.

   ```
   $ cfn submit --dry-run
   ```

1. Registrieren Sie Ihren Hook mithilfe der CloudFormation [https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-cli-submit.html](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-cli-submit.html)CLI-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
<a name="verifying-hooks"></a>

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 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-types.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-types.html)Befehl, 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"
           }
       ]
   }
   ```

1. 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 unter[Hooks für den öffentlichen Gebrauch veröffentlichen](hooks-publishing.md).

### Hooks konfigurieren
<a name="configure-hooks"></a>

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 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html)Vorgang, 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
<a name="accessing-apis-in-handlers"></a>

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 [https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-cli-generate.html](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-cli-generate.html)Vorgangs 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](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-develop.html#resource-type-develop-executionrole).

### Vorlage hook-role.yaml
<a name="resource-role.yaml"></a>

**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
```