

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criação de recursos personalizados do Event Bus com CloudFormation
<a name="eb-custom-bus-cloudformation"></a>

Você pode criar um ônibus, seus assinantes, suas fontes de eventos e sua política de recursos a partir de um CloudFormation modelo. Os tipos de recursos estão no `AWS::EventsV2` namespace. Os `AWS::Events` tipos pertencem ao Custom Event Bus - Classic e não podem configurar um Custom Event Bus.

## Os tipos de recursos
<a name="eb-custom-bus-cloudformation-types"></a>
+ `AWS::EventsV2::EventBus`é um barramento, incluindo seu período de retenção e sua chave de criptografia. Isso exige`Name`.
+ `AWS::EventsV2::Subscriber`é um assinante em um ônibus: seus filtros, sua transformação, sua política de novas tentativas e seu único alvo. Ela exige`Name`,`EventBusArn`, e`InvokeConfiguration`, o que por si só exige `TargetArn` `RoleArn` e.
+ `AWS::EventsV2::EventSource`é um feed gerenciado de eventos de AWS serviço ou eventos de parceiros em um ônibus. Isso requer `Name``EventBusArn`, `Configuration` e. Consulte [Fontes de eventos para um ônibus de eventos personalizado](eb-custom-bus-event-sources.md).
+ `AWS::EventsV2::ResourcePolicy`é a política de recursos de um ônibus que já existe. Isso requer `EventBusArn` `PolicyDocument` e. Consulte [Controle de acesso para o Custom Event Bus](eb-custom-bus-access.md).

O assinante `RoleArn` deve nomear uma função na mesma conta que o assinante. Portanto, um ônibus compartilhado entre as contas tem mais de uma pilha: o ônibus na conta do proprietário e o alvo, a função de entrega e o assinante em cada conta consumidora.

## Exemplo: um ônibus, uma fila e um assinante
<a name="eb-custom-bus-cloudformation-example"></a>

O modelo a seguir cria um barramento que retém eventos por sete dias, uma fila do Amazon SQS, uma fila de cartas mortas, uma função de entrega e um assinante que entrega pedidos acima de 500 na fila. CloudFormation cria a função e as filas antes do assinante, porque o assinante se refere a elas com. `Fn::GetAtt` O período de retenção decide há quanto tempo um assinante pode começar a ler; consulte[Reproduzir eventos retidos para um assinante](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
```

A função de entrega confia no diretor do `events.amazonaws.com` serviço e `sqs:SendMessage` nas concessões em ambas as filas. Sem a concessão na fila de e-mails enviados, uma entrega malsucedida não pode ser registrada e nada é observável. A identidade que implanta a pilha também precisa estar `iam:PassRole` na função de entrega.

## Valores de retorno
<a name="eb-custom-bus-cloudformation-returns"></a>

`Ref`retorna o identificador primário do recurso, um ARN. `Fn::GetAtt`retorna as propriedades somente para leitura. A tabela a seguir lista os valores de cada tipo de recurso.


| Tipo de atributo | `Ref` retorna | Atributos do `Fn::GetAtt` | 
| --- | --- | --- | 
| 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 | 

A propriedade de um assinante `State` é uma propriedade que você define, não um atributo que você lê. Defina-o `STOPPED` para pausar a entrega e volte para `RUNNING` continuar. O de um ônibus `State` é somente para leitura e seu valor estabelecido é. `ACTIVE`

## Propriedades que substituem o recurso
<a name="eb-custom-bus-cloudformation-replacement"></a>

Seis propriedades do assinante são somente para criação, portanto, alterar qualquer uma delas em um modelo substitui o assinante:`Name`,,, e. `EventBusArn` `InvokeConfiguration.TargetArn` `Type` `StartingPosition` `PointInTimeConfiguration` Todas as outras propriedades do assinante, incluindo os filtros, a transformação, a política de repetição e a fila de cartas mortas, são atualizadas.

**Importante**  
Um assinante substituto exclui o assinante antigo antes de criar o novo. Não existe assinante entre as duas etapas. O novo assinante então começa por si mesmo `StartingPosition` e `LATEST` começa com os eventos mais recentes, portanto, nunca entrega os eventos publicados durante essa janela. Alterar um ARN alvo, um tipo de pedido ou uma posição inicial, portanto, elimina os eventos, a menos que você planeje a lacuna.

Para evitar a lacuna, implante duas vezes. Primeiro, adicione o assinante substituto com um novo ID lógico e aguarde `State` até que ele chegue`RUNNING`. Em seguida, remova o assinante antigo em uma segunda implantação. Ambos os assinantes entregam durante a sobreposição, de modo que o alvo receba cada evento correspondente duas vezes; use essa abordagem somente quando duplicatas forem aceitáveis.

Se você não conseguir implantar duas vezes, defina o novo assinante `StartingPosition` como `POINT_IN_TIME` e forneça `PointInTimeConfiguration` um `PointType` of `TIMESTAMP` com um`StartingPoint`, em segundos, desde a época do Unix, antes da implantação. O assinante então lê os eventos que perdeu, desde que eles ainda estejam dentro do período de retenção do ônibus.

Em um barramento, only `Name` é somente para criação, portanto, o período de retenção, a descrição, a chave de criptografia e as tags são atualizados. Em uma fonte de eventos, `Name` e `EventBusArn` são somente para criação e em uma política de recursos, é. `EventBusArn`

## Referindo-se a um ônibus de outra pilha
<a name="eb-custom-bus-cloudformation-crossstack"></a>

Um assinante precisa do ARN completo do barramento, que inclui o identificador gerado pelo serviço após o nome do barramento. Armazene e passe o ARN, não o nome. Consulte [Nomes, endpoints e permissões do IAM para o barramento de eventos personalizado](eb-custom-bus-names.md).

Em uma conta e região, exporte o ARN da pilha que possui o barramento, como no exemplo, e importe-o com. `EventBusArn: !ImportValue orders-bus-arn` CloudFormation não permite que você altere ou remova um valor exportado enquanto outra pilha o importa. Renomear o barramento o substitui e altera seu ARN, portanto, a renomeação falha enquanto existe uma importação. Remova primeiro o assinante importador ou exporte com um novo nome.

Uma exportação não pode ser importada de outra conta ou de outra região. Em vez disso, passe o ARN do barramento para a pilha consumidora como um parâmetro de modelo. O proprietário do ônibus também deve conceder permissão à outra conta no ônibus, o que você faz com uma política de recursos ou com o AWS Resource Access Manager (AWS RAM). Consulte [Controle de acesso para o Custom Event Bus](eb-custom-bus-access.md).