

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.

# Erstellen von benutzerdefinierten Event Bus-Ressourcen mit CloudFormation
<a name="eb-custom-bus-cloudformation"></a>

Sie können einen Bus, seine Abonnenten, seine Ereignisquellen und seine Ressourcenrichtlinie aus einer CloudFormation Vorlage erstellen. Die Ressourcentypen befinden sich im `AWS::EventsV2` Namespace. Die `AWS::Events` Typen gehören zu Custom Event Bus - Classic und können keinen Custom Event Bus konfigurieren.

## Die Ressourcentypen
<a name="eb-custom-bus-cloudformation-types"></a>
+ `AWS::EventsV2::EventBus`ist ein Bus, einschließlich seiner Aufbewahrungsdauer und seines Verschlüsselungsschlüssels. Es erfordert`Name`.
+ `AWS::EventsV2::Subscriber`ist ein Abonnent an einem Bus: seine Filter, seine Transformation, seine Wiederholungsrichtlinie und sein einziges Ziel. Es erfordert`Name`, und `EventBusArn``InvokeConfiguration`, was wiederum `TargetArn` und `RoleArn` erfordert.
+ `AWS::EventsV2::EventSource`ist eine verwaltete Übertragung von AWS Service- oder Partnerereignissen in einen Bus. Es erfordert `Name``EventBusArn`, und`Configuration`. Siehe [Ereignisquellen für einen benutzerdefinierten Event-Bus](eb-custom-bus-event-sources.md).
+ `AWS::EventsV2::ResourcePolicy`ist die Ressourcenpolitik eines Busses, der bereits existiert. Es erfordert `EventBusArn` und`PolicyDocument`. Siehe [Zugriffskontrolle für den Custom Event Bus](eb-custom-bus-access.md).

Ein Abonnent `RoleArn` muss eine Rolle in demselben Konto wie der Abonnent benennen. Ein Bus, der von mehreren Konten gemeinsam genutzt wird, ist also mehr als ein Stack: der Bus im Konto des Besitzers und das Ziel, die Bereitstellungsrolle und der Abonnent in jedem verbrauchenden Konto.

## Beispiel: ein Bus, eine Warteschlange und ein Abonnent
<a name="eb-custom-bus-cloudformation-example"></a>

Die folgende Vorlage erstellt einen Bus, der Ereignisse sieben Tage lang speichert, eine Amazon SQS-Warteschlange, eine Warteschlange mit unzustellbaren Briefen, eine Zustellungsrolle und einen Abonnenten, der Bestellungen über 500 an die Warteschlange liefert. CloudFormation erstellt die Rolle und die Warteschlangen vor dem Abonnenten, da der Abonnent mit auf sie verweist. `Fn::GetAtt` Die Aufbewahrungsfrist entscheidet darüber, wie weit ein Abonnent mit dem Lesen beginnen kann; siehe[Wiedergeben von gespeicherten Ereignissen für einen Abonnenten](eb-custom-bus-replay.md).

```
AWSTemplateFormatVersion: '2010-09-09'

Resources:
  OrdersBus:
    Type: AWS::EventsV2::EventBus
    Properties:
      Name: orders
      Description: Order events for the fulfillment platform
      StorageConfiguration:
        RetentionPeriodInDays: 7

  OrdersQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: large-orders

  OrdersDeadLetterQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: large-orders-dlq

  DeliveryRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: EventBusDeliveryRole
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: events.amazonaws.com
            Action: sts:AssumeRole
      Policies:
        - PolicyName: DeliverToQueues
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action: sqs:SendMessage
                Resource:
                  - !GetAtt OrdersQueue.Arn
                  - !GetAtt OrdersDeadLetterQueue.Arn

  LargeOrders:
    Type: AWS::EventsV2::Subscriber
    Properties:
      Name: large-orders
      EventBusArn: !Ref OrdersBus
      FilterConfiguration:
        Filters:
          - Scope: DATA
            Pattern: '{"detail":{"total":[{"numeric":[">",500]}]}}'
      InvokeConfiguration:
        TargetArn: !GetAtt OrdersQueue.Arn
        RoleArn: !GetAtt DeliveryRole.Arn
      RetryPolicy:
        MaxRetryAttempts: 10
        MaxEventAgeInSeconds: 3600
      OnFailureConfiguration:
        Arn: !GetAtt OrdersDeadLetterQueue.Arn

Outputs:
  OrdersBusArn:
    Value: !Ref OrdersBus
    Export:
      Name: orders-bus-arn
```

Die Zustellungsfunktion vertraut dem `events.amazonaws.com` Service Principal und gewährt Zugriff `sqs:SendMessage` auf beide Warteschlangen. Wenn sich der Zuschuss nicht in der Warteschlange befindet, kann eine fehlgeschlagene Lieferung nicht aufgezeichnet werden, und es ist nichts zu beobachten. Die Identität, die den Stack bereitstellt, muss `iam:PassRole` auch in der Bereitstellungsrolle enthalten sein.

## Rückgabewerte
<a name="eb-custom-bus-cloudformation-returns"></a>

`Ref`gibt den primären Identifier der Ressource zurück, einen ARN. `Fn::GetAtt`gibt die schreibgeschützten Eigenschaften zurück. In der folgenden Tabelle sind die Werte für jeden Ressourcentyp aufgeführt.


| Ressourcentyp | Folgendes wird zurückgegeben: `Ref` | `Fn::GetAtt`-Attribute | 
| --- | --- | --- | 
| AWS::EventsV2::EventBus | EventBusArn | EventBusArn, State, CreationTime, LastModifiedTime | 
| AWS::EventsV2::Subscriber | SubscriberArn | SubscriberArn, BusName, CreationTime, LastModifiedTime | 
| AWS::EventsV2::EventSource | EventSourceArn | EventSourceArn, State, Revoked, CreationTime, LastModifiedTime | 
| AWS::EventsV2::ResourcePolicy | EventBusArn | RevisionId | 

Die Eigenschaft eines Abonnenten `State` ist eine von Ihnen festgelegte Eigenschaft, kein Attribut, das Sie lesen. Setzen Sie es auf, `STOPPED` um die Zustellung anzuhalten, und zurück auf, `RUNNING` um die Zustellung fortzusetzen. Der Wert eines Busses `State` ist schreibgeschützt, und sein abgewickelter Wert ist. `ACTIVE`

## Eigenschaften, die die Ressource ersetzen
<a name="eb-custom-bus-cloudformation-replacement"></a>

Sechs Abonnenteneigenschaften können nur erstellt werden. Wenn Sie also eine dieser Eigenschaften in einer Vorlage ändern, wird der Abonnent ersetzt: `Name``EventBusArn`,`InvokeConfiguration.TargetArn`, `Type``StartingPosition`, und. `PointInTimeConfiguration` Alle anderen Abonnenteneigenschaften, einschließlich der Filter, der Transformation, der Wiederholungsrichtlinie und der Warteschlange für unzustellbare Nachrichten, werden aktualisiert.

**Wichtig**  
Ein Abonnentenersatz löscht den alten Abonnenten, bevor der neue erstellt wird. Zwischen den beiden Schritten existiert kein Abonnent. Der neue Abonnent beginnt dann bei sich selbst `StartingPosition` und `LATEST` beginnt mit den neuesten Ereignissen, sodass er die in diesem Zeitfenster veröffentlichten Ereignisse niemals bereitstellt. Wenn Sie einen Ziel-ARN, einen Bestelltyp oder eine Startposition ändern, werden daher Ereignisse gelöscht, sofern Sie die Lücke nicht einplanen.

Um die Lücke zu vermeiden, führen Sie die Bereitstellung zweimal durch. Fügen Sie zuerst den Ersatzabonnenten unter einer neuen logischen ID hinzu und warten Sie`State`, bis er erreicht ist`RUNNING`. Entfernen Sie dann den alten Abonnenten in einer zweiten Bereitstellung. Beide Abonnenten liefern während der Überschneidung, sodass das Ziel jedes übereinstimmende Ereignis zweimal erhält. Verwenden Sie diesen Ansatz nur, wenn Duplikate akzeptabel sind.

Wenn Sie das Deployment nicht zweimal durchführen können, setzen Sie den Wert des neuen Abonnenten `StartingPosition` auf `POINT_IN_TIME` und geben Sie `PointInTimeConfiguration` a `PointType` of `TIMESTAMP` mit einem`StartingPoint`, in Sekunden seit der Unix-Epoche, aus der Zeit vor der Bereitstellung ein. Der Abonnent liest dann die Ereignisse, die er verpasst hat, sofern sie noch innerhalb der Aufbewahrungsfrist des Busses liegen.

Auf einem Bus `Name` gilt nur das Erstellen, sodass der Aufbewahrungszeitraum, die Beschreibung, der Verschlüsselungsschlüssel und die Tags alle aktualisiert werden. Bei einer Ereignisquelle `Name` und nur `EventBusArn` beim Erstellen und bei einer Ressourcenrichtlinie gilt das. `EventBusArn`

## Bezieht sich auf einen Bus von einem anderen Stack
<a name="eb-custom-bus-cloudformation-crossstack"></a>

Ein Abonnent benötigt den vollständigen Bus-ARN, der die vom Dienst generierte Kennung nach dem Busnamen enthält. Speichern und übergeben Sie den ARN, nicht den Namen. Siehe [Namen, Endpunkte und IAM-Berechtigungen für den Custom Event Bus](eb-custom-bus-names.md).

Exportieren Sie innerhalb eines Kontos und einer Region den ARN aus dem Stack, dem der Bus gehört, wie im Beispiel, und importieren Sie ihn mit`EventBusArn: !ImportValue orders-bus-arn`. CloudFormation ermöglicht es Ihnen nicht, einen exportierten Wert zu ändern oder zu entfernen, während ein anderer Stack ihn importiert. Durch das Umbenennen des Busses wird er ersetzt und sein ARN geändert, sodass eine Umbenennung fehlschlägt, solange ein Import besteht. Entfernen Sie zuerst den importierenden Abonnenten oder exportieren Sie ihn unter einem neuen Namen.

Ein Export kann nicht aus einem anderen Konto oder einer anderen Region importiert werden. Übergeben Sie stattdessen den Bus-ARN als Vorlagenparameter an den verbrauchenden Stack. Der Busbesitzer muss auch dem anderen Konto die Berechtigung für den Bus gewähren, was Sie mit einer Ressourcenrichtlinie oder mit AWS Resource Access Manager (AWS RAM) tun. Siehe [Zugriffskontrolle für den Custom Event Bus](eb-custom-bus-access.md).