func handler()

in workload-management/s3-trigger-ecs-task/sam-lambda-s3-dynamodb/main.go [12:37]


func handler(request events.S3Event) (events.APIGatewayProxyResponse, error) {
	copyCmd := fmt.Sprintf("aws ecs run-task --cluster %s --launch-type EXTERNAL "+
		"--overrides '{ \"containerOverrides\": [ { \"name\": \"%s\", \"environment\": [ { \"name\": \"S3_BUCKET_NAME\", \"value\": \"%s\" }, "+
		"{ \"name\": \"AWS_REGION\", \"value\": \"%s\"}, "+
		"{ \"name\": \"S3_KEY\", \"value\": \"%s\" }, { \"name\": \"STATUS_KEY\", \"value\": \"%s\" } ] } ] }' "+
		"--task-definition %s",
		os.Getenv("CLUSTERNAME"), os.Getenv("TASKDEFINITION"), request.Records[0].S3.Bucket.Name,
		os.Getenv("AWS_REGION"), request.Records[0].S3.Object.Key, request.Records[0].S3.Object.ETag,
		os.Getenv("TASKDEFINITION"))

	println("Generated command string " + copyCmd)
	cmd := exec.Command("sh", "-c", copyCmd)
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr
	err := cmd.Run()

	if err != nil {
		log.Println("Error while running the command " + err.Error())
		panic(err)
	}

	return events.APIGatewayProxyResponse{
		Body:       fmt.Sprintf("Launched external task with S3 parameters, %v", copyCmd),
		StatusCode: 200,
	}, nil
}