func()

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
}