in src/tasks/LambdaInvokeFunction/TaskOperations.ts [13:54]
public async execute(): Promise<void> {
await this.verifyResourcesExist(this.taskParameters.functionName)
console.log(tl.loc('InvokingFunction', this.taskParameters.functionName))
const params: Lambda.InvocationRequest = {
FunctionName: this.taskParameters.functionName
}
if (this.taskParameters.payload) {
if (this.isJson(this.taskParameters.payload)) {
params.Payload = Buffer.from(this.taskParameters.payload)
} else {
params.Payload = Buffer.from(JSON.stringify(this.taskParameters.payload))
}
}
if (this.taskParameters.invocationType) {
params.InvocationType = this.taskParameters.invocationType
}
if (this.taskParameters.logType) {
params.LogType = this.taskParameters.logType
}
try {
const data: Lambda.InvocationResponse = await this.lambdaClient.invoke(params).promise()
let outValue = ''
if (data.Payload) {
outValue = data.Payload.toString()
}
// don't echo the value into the normal logs in case it contains sensitive data
tl.debug(tl.loc('ReceivedOutput', outValue))
if (this.taskParameters.outputVariable) {
console.log(tl.loc('SettingOutputVariable', this.taskParameters.outputVariable))
tl.setVariable(this.taskParameters.outputVariable, outValue)
}
console.log(tl.loc('TaskCompleted', this.taskParameters.functionName))
} catch (err) {
console.error(tl.loc('FunctionInvokeFailed'), err)
throw err
}
}