Sample code for 30+ languages & platforms
Tcl

Call an AWS Lambda Function

See more AWS Misc Examples

Demonstrates how to call an AWS Lambda function.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set rest [new_CkRest]

# Connect to the Amazon AWS REST server.
# such as https://email.us-west-2.amazonaws.com/
set bTls 1
set port 443
set bAutoReconnect 1

# -------------------------------------------------------------------------------------------
# Note: The source of the lambda function (hosted on AWS) is shown at the bottom of this page.
# --------------------------------------------------------------------------------------------

# If your lambda function URL is: https://itwxyj3vd6gjtaerbfqnfccs2e0fplzh.lambda-url.us-west-2.on.aws/
# then use just the domain part here:
set success [CkRest_Connect $rest "itwxyj3vd6gjtaerbfqnfccs2e0fplzh.lambda-url.us-west-2.on.aws" $port $bTls $bAutoReconnect]

# Provide AWS credentials for the REST call.
set authAws [new_CkAuthAws]

CkAuthAws_put_AccessKey $authAws "AWS_ACCESS_KEY"
CkAuthAws_put_SecretKey $authAws "AWS_SECRET_KEY"
# the region should match our domain above..
CkAuthAws_put_Region $authAws "us-west-2"
CkAuthAws_put_ServiceName $authAws "lambda"

CkRest_SetAuthAws $rest $authAws

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "name" "Benny"

CkRest_AddHeader $rest "Content-Type" "application/json"

set sbRequestBody [new_CkStringBuilder]

CkJsonObject_EmitSb $json $sbRequestBody

set sbResponseBody [new_CkStringBuilder]

set success [CkRest_FullRequestSb $rest "POST" "/" $sbRequestBody $sbResponseBody]
if {$success == 0} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkAuthAws $authAws
    delete_CkJsonObject $json
    delete_CkStringBuilder $sbRequestBody
    delete_CkStringBuilder $sbResponseBody
    exit
}

set statusCode [CkRest_get_ResponseStatusCode $rest]
if {$statusCode >= 400} then {
    puts "Response Status Code: $statusCode"
    puts "Response Body: [CkStringBuilder_getAsString $sbResponseBody]"
    puts "Failed."
    delete_CkRest $rest
    delete_CkAuthAws $authAws
    delete_CkJsonObject $json
    delete_CkStringBuilder $sbRequestBody
    delete_CkStringBuilder $sbResponseBody
    exit
}

puts "Response Body:"
puts [CkStringBuilder_getAsString $sbResponseBody]

delete_CkRest $rest
delete_CkAuthAws $authAws
delete_CkJsonObject $json
delete_CkStringBuilder $sbRequestBody
delete_CkStringBuilder $sbResponseBody