[][src]Crate lambda_runtime_client

Rust client SDK for the AWS Lambda Runtime APIs. This crate defines a RuntimeClient that encapsulates interactions with AWS Lambda's Runtime APIs.

To return errors to the Runtime APIs through the event_error() or fail_init() methods the Error objects must implement the error::RuntimeApiError trait from this crate. The RuntimeApiError trait defines a single method called to_response(). The method must return an error::RuntimeError object. See the error::ApiError object in this crate for an example.

Examples

extern crate lambda_runtime_client;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;

use lambda_runtime_client::{RuntimeClient, EventContext};

#[derive(Serialize, Deserialize, Debug)]
struct CustomEvent {
    name: String,
}

#[derive(Serialize, Deserialize, Debug)]
struct CustomResponse {
    surname: String,
}

fn main() {
    let client = RuntimeClient::new("http://localhost:8080", None, None)
        .expect("Could not initialize client");

    let (event_data, event_context) = client.next_event()
        .expect("Could not retrieve next event");
    let custom_event: CustomEvent = serde_json::from_slice(&event_data)
        .expect("Could not turn Vec<u8> into CustomEvent object");

    println!("Event for {}", custom_event.name);
    if custom_event.name == "John" {
        let resp_object = CustomResponse{ surname: String::from("Doe")};
        let resp_vec = serde_json::to_vec(&resp_object)
            .expect("Could not serialize CustomResponse to Vec<u8>");
        client.event_response(&event_context.aws_request_id, &resp_vec)
            .expect("Response sent successfully");
    } else {
        // return a custom error by implementing the RuntimeApiError trait.
        // See the error module for examples.
        //client.event_error(&event_context.aws_request_id, CustomErrorType::new("Invalid first name"))
        //    .expect("Could not send error response");
    }
}

Modules

error

This module defines the RuntimeApiError trait that developers should implement to send their custom errors to the AWS Lambda Runtime Client SDK. The module also defines the ApiError type returned by the RuntimeClient implementations.

Structs

ClientApplication

AWS Moble SDK client properties

ClientContext

Client context sent by the AWS Mobile SDK.

CognitoIdentity

Cognito identity information sent with the event

EventContext

The Lambda function execution context. The values in this struct are populated using the Lambda environment variables and the headers returned by the poll request to the Runtime APIs. A new instance of the Context object is passed to each handler invocation.

RuntimeClient

Used by the Runtime to communicate with the internal endpoint.

Enums

LambdaHeaders

Enum of the headers returned by Lambda's /next API call.