in bus/event_bridge.go [37:83]
func (e *EventBridgeBus) Put(ctx context.Context, events []types.Event) ([]types.FailedEvent, error) {
failedBatchEvents, err :=
batchEvents(events, 10, func(batchEvents []types.Event) ([]types.FailedEvent, error) {
eventBridgeEvents := make([]cloudwatchtypes.PutEventsRequestEntry, len(batchEvents))
for i, event := range batchEvents {
eventBridgeEvent := cloudwatchtypes.PutEventsRequestEntry{
EventBusName: &e.busName,
Source: aws.String(event.Source),
Detail: aws.String(event.Detail),
DetailType: aws.String(event.DetailType),
Resources: event.Resources,
}
eventBridgeEvents[i] = eventBridgeEvent
}
result, err := e.client.PutEvents(ctx, &cloudwatchevents.PutEventsInput{
Entries: eventBridgeEvents,
})
failedEvents := []types.FailedEvent{}
if err != nil {
return failedEvents, err
}
if result.FailedEntryCount > 0 {
for i, entry := range result.Entries {
if entry.EventId != nil {
continue
}
failedEvent := types.FailedEvent{
Event: batchEvents[i],
FailureCode: *entry.ErrorCode,
FailureMessage: *entry.ErrorMessage,
}
failedEvents = append(failedEvents, failedEvent)
}
}
return failedEvents, nil
})
return failedBatchEvents, err
}