in lambda/go/add-podcasts/main.go [295:328]
func (h *Handler) startImport(ctx context.Context, episodes []workshop.Episode) error {
for i, episode := range episodes {
if episode.MediaURL == "" {
log.Printf("skipping episode %v, has no media URL", episode.ID)
episode.Status = workshop.EpisodeStatusComplete
// Update execution ARN in for episode in table
if err := h.updateEpisodeStatus(ctx, episode); err != nil {
return fmt.Errorf("update %v failed, %v", episode.ID, err)
}
continue
}
input, err := json.Marshal(workshop.TranscribeStateMachineInput{Episode: episode})
resp, err := h.sfnClient.StartExecution(ctx, &sfn.StartExecutionInput{
StateMachineArn: &h.transcribeStateMachineARN,
Input: aws.String(string(input)),
})
if err != nil {
return fmt.Errorf("failed to start episode %v transcribe, %w", episode.ID, err)
}
executionARN := aws.ToString(resp.ExecutionArn)
log.Printf("starting transcribe for %v, %v", episode.ID, executionARN)
episodes[i].TranscribeExecutionARN = executionARN
// Update execution ARN in for episode in table
if err := h.updateEpisodeExecutionARN(ctx, episode); err != nil {
return fmt.Errorf("update %v failed, %v", episode.ID, err)
}
}
return nil
}