I am trying to create an AWS Schedule from a lambda function. It works in general, but I am not able to set the "ActionAfterCompletion" to DELETE. For some reason, this value is not set with the following SDK Code:
import { SchedulerClient, CreateScheduleCommand, CreateScheduleCommandInput } from '@aws-sdk/client-scheduler';
export async function createSchedule(targetTime: Date, setValue: boolean) {
const client = new SchedulerClient({ region: 'my-region' });
const functionName = 'myFunctionName';
const lambdaFunctionArn = `myArn:${functionName}`;
const payload = {
key: setValue
};
const scheduleName = `myScheduleName-${targetTime.getTime()}-${setValue}`;
const scheduleParams: CreateScheduleCommandInput = {
Name: scheduleName,
Description: 'My description',
ScheduleExpression: `at(${targetTime.toISOString().split('.')[0]})`,
Target: {
Arn: lambdaFunctionArn,
RoleArn: 'myRoleArn',
Input: JSON.stringify(payload),
},
FlexibleTimeWindow: {
Mode: 'OFF',
},
ActionAfterCompletion: 'DELETE', // HERE
};
const createScheduleCommand = new CreateScheduleCommand(scheduleParams);
try {
const response = await client.send(createScheduleCommand);
console.log('Schedule created:', response);
} catch (err) {
console.error('Error:', err);
}
}
The lambda function calls this method and it works in general, but it just ignores the ActionAfterCompletion: 'DELETE'
Thank you for any help!
Hey Uri, thanks a lot for your answer! Do you know how I can explicitly include a SDK version? And is there a way to find out, what version is included?
Just like any other dependency, you need to include it in the zip file/docker image. Look at this for printing the version.
Thanks! I'll have a try on that!
Btw I found out, that indeed this parameter was added just recently, so lambda may not use the current version: https://github.com/aws/aws-sdk-js-v3/commit/a1403dd72102be8055c959a8ae7140acf4f81de2
Thanks a lot, Uri. Including the (current) SDK in the lambda solved the problem!