public async execute()

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
        }
    }