Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creazione di risorse Event Bus personalizzate con CloudFormation
È possibile creare un bus, i relativi abbonati, le relative fonti di eventi e la relativa politica delle risorse da un CloudFormation
modello. I tipi di risorse si trovano nel AWS::EventsV2 namespace. I AWS::Events tipi appartengono a Custom Event Bus - Classic e non possono configurare un Custom Event Bus.
I tipi di risorse
-
AWS::EventsV2::EventBusè un bus, incluso il periodo di conservazione e la chiave di crittografia. RichiedeName. -
AWS::EventsV2::Subscriberè un abbonato su un bus: i suoi filtri, la sua trasformazione, la sua politica di ripetizione e il suo unico obiettivo. RichiedeName,, eEventBusArnInvokeConfiguration, che a sua volta richiedeTargetArne.RoleArn -
AWS::EventsV2::EventSourceè un feed gestito di eventi di AWS servizio o eventi dei partner in un bus. RichiedeName,EventBusArn, eConfiguration. Consulta Sorgenti di eventi per un bus di eventi personalizzato. -
AWS::EventsV2::ResourcePolicyè la politica delle risorse di un bus già esistente. RichiedeEventBusArnePolicyDocument. Consulta Controllo degli accessi per il Custom Event Bus.
Un abbonato RoleArn deve indicare un ruolo nello stesso account dell'abbonato. Quindi un bus condiviso tra più account è costituito da più di uno stack: il bus nell'account del proprietario e il target, il ruolo di consegna e l'abbonato in ogni account di consumo.
Esempio: un autobus, una coda e un abbonato
Il modello seguente crea un bus che conserva gli eventi per sette giorni, una coda Amazon SQS, una coda per le lettere morte, un ruolo di consegna e un abbonato che consegna oltre 500 ordini in coda. CloudFormation crea il ruolo e le code davanti all'abbonato, perché quest'ultimo vi fa riferimento con. Fn::GetAtt Il periodo di conservazione decide quanto tempo fa un abbonato può iniziare a leggere; vedi. Riproduzione degli eventi conservati a un abbonato
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
Il ruolo di consegna si fida del committente del events.amazonaws.com servizio e lo concede sqs:SendMessage in entrambe le code. Senza l'autorizzazione alla coda delle lettere morte, non è possibile registrare una consegna non riuscita e non è osservabile nulla. L'identità che distribuisce lo stack richiede anche il ruolo di consegna. iam:PassRole
Valori restituiti
Refrestituisce l'identificatore principale della risorsa, un ARN. Fn::GetAttrestituisce le proprietà di sola lettura. La tabella seguente elenca i valori per ogni tipo di risorsa.
| Tipo di risorsa | Ref restituisce |
Attributi 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 |
Quella di un abbonato State è una proprietà che imposti, non un attributo che leggi. Impostalo su STOPPED per sospendere la consegna e tornare a RUNNING riprenderla. Quello di un autobus State è di sola lettura e il suo valore fisso è. ACTIVE
Proprietà che sostituiscono la risorsa
Sei proprietà dell'abbonato sono di sola creazione, quindi la modifica di una qualsiasi di esse in un modello sostituisce il sottoscrittore:Name,,,EventBusArn, InvokeConfiguration.TargetArn e. Type StartingPosition PointInTimeConfiguration Tutte le altre proprietà dell'abbonato, inclusi i filtri, la trasformazione, i criteri di ripetizione e la coda delle lettere morte, vengono aggiornate.
Importante
Un sottoscrittore sostitutivo elimina il vecchio abbonato prima di creare quello nuovo. Non esiste alcun abbonato tra i due passaggi. Il nuovo abbonato parte quindi dai propri StartingPosition eventi e LATEST parte dagli eventi più recenti, quindi non fornisce mai gli eventi pubblicati durante quella finestra. La modifica di un ARN target, di un tipo di ordine o di una posizione di partenza comporta quindi l'eliminazione degli eventi, a meno che non si preveda il divario.
Per evitare il divario, esegui il deployment due volte. Per prima cosa aggiungi l'abbonato sostitutivo con un nuovo ID logico e attendi che State arrivi. RUNNING Quindi rimuovi il vecchio abbonato in una seconda distribuzione. Entrambi i sottoscrittori effettuano le consegne durante la sovrapposizione, quindi il destinatario riceve ogni evento corrispondente due volte; utilizza questo approccio solo quando i duplicati sono accettabili.
Se non riuscite a eseguire la distribuzione due volte, impostate il valore del StartingPosition nuovo sottoscrittore su POINT_IN_TIME e assegnate PointInTimeConfiguration un «PointTypeof» TIMESTAMP con unStartingPoint, in secondi, sin dall'epoca Unix, da prima della distribuzione. L'abbonato legge quindi gli eventi persi, a condizione che rientrino ancora nel periodo di conservazione del bus.
Su un bus, Name viene effettuata solo la creazione, quindi il periodo di conservazione, la descrizione, la chiave di crittografia e i tag vengono aggiornati. Sull'origine di un evento Name e EventBusArn sono di sola creazione e su una politica di risorse, lo è. EventBusArn
Riferendosi a un bus di un altro stack
Un abbonato ha bisogno dell'ARN completo del bus, che include l'identificatore generato dal servizio dopo il nome del bus. Memorizza e passa l'ARN, non il nome. Consulta Nomi, endpoint e autorizzazioni IAM per il Custom Event Bus.
All'interno di un account e di una regione, esporta l'ARN dallo stack che possiede il bus, come nell'esempio, e importalo con. EventBusArn: !ImportValue orders-bus-arn CloudFormation non consente di modificare o rimuovere un valore esportato mentre un altro stack lo importa. La ridenominazione del bus lo sostituisce e ne modifica l'ARN, quindi una ridenominazione non riesce finché esiste un'importazione. Rimuovi prima il sottoscrittore che importa o esporta con un nuovo nome.
Un'esportazione non può essere importata da un altro account o da un'altra regione. Passa invece l'ARN del bus allo stack di consumo come parametro del modello. Il proprietario del bus deve inoltre concedere all'altro account l'autorizzazione sul bus, operazione che viene eseguita con una policy sulle risorse o con AWS Resource Access Manager (AWS RAM). Consulta Controllo degli accessi per il Custom Event Bus.