(scope constructs.Construct, id string, props *LambdaCronStackProps)
| 14 | } |
| 15 | |
| 16 | func NewLambdaCronStack(scope constructs.Construct, id string, props *LambdaCronStackProps) awscdk.Stack { |
| 17 | var sprops awscdk.StackProps |
| 18 | if props != nil { |
| 19 | sprops = props.StackProps |
| 20 | } |
| 21 | stack := awscdk.NewStack(scope, &id, &sprops) |
| 22 | |
| 23 | // The code that defines your stack goes here |
| 24 | |
| 25 | lambdaFn := awslambda.NewFunction(stack, jsii.String("Singleton"), &awslambda.FunctionProps{ |
| 26 | Code: awslambda.NewAssetCode(jsii.String("lambda"), nil), |
| 27 | Handler: jsii.String("handler.main"), |
| 28 | Timeout: awscdk.Duration_Seconds(jsii.Number(300)), |
| 29 | Runtime: awslambda.Runtime_PYTHON_3_6(), |
| 30 | }); |
| 31 | |
| 32 | // Run every day at 6PM UTC |
| 33 | // See https://docs.aws.amazon.com/lambda/latest/dg/tutorial-scheduled-events-schedule-expressions.html |
| 34 | rule := awsevents.NewRule(stack, jsii.String("Rule"), &awsevents.RuleProps{ |
| 35 | Schedule: awsevents.Schedule_Expression(jsii.String("cron(0 18 ? * MON-FRI *)")), |
| 36 | }); |
| 37 | |
| 38 | rule.AddTarget(awseventstargets.NewLambdaFunction(lambdaFn, nil)); |
| 39 | |
| 40 | return stack |
| 41 | } |
| 42 | |
| 43 | func main() { |
| 44 | app := awscdk.NewApp(nil) |
no outgoing calls