View a markdown version of this page

Criação de recursos personalizados do Event Bus com CloudFormation - Amazônia EventBridge

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

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

  • AWS::EventsV2::EventBusé um barramento, incluindo seu período de retenção e sua chave de criptografia. Isso exigeName.

  • AWS::EventsV2::Subscriberé um assinante em um ônibus: seus filtros, sua transformação, sua política de novas tentativas e seu único alvo. Ela exigeName,EventBusArn, eInvokeConfiguration, 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 NameEventBusArn, Configuration e. Consulte Fontes de eventos para um ônibus de eventos personalizado.

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

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

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; consulteReproduzir eventos retidos para um assinante.

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

Refretorna o identificador primário do recurso, um ARN. Fn::GetAttretorna 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

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 chegueRUNNING. 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 umStartingPoint, 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

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.

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.