Unverified Commit 06547435 authored by Richard H Boyd's avatar Richard H Boyd Committed by GitHub
Browse files

add Lambda service model (#361)



* add Lambda service model

* Cleanup example

* Format

Co-authored-by: default avatarRussell Cohen <rcoh@amazon.com>
parent ee72a84d
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
[package]
name = "lambda-invoke-function"
version = "0.1.0"
authors = ["Richard H. Boyd <rhboyd@amazon.com>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
lambda = { package = "aws-sdk-lambda", path = "../../build/aws-sdk/lambda" }
tokio = { version = "1", features = ["full"] }
structopt = { version = "0.3", default-features = false }
tracing-subscriber = { version = "0.2.16", features = ["fmt"] }
aws-types = { path = "../../build/aws-sdk/aws-types" }
+55 −0
Original line number Diff line number Diff line
/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */

use std::process;

use lambda::{error::InvokeErrorKind, Client, Config, Region, SdkError};

use aws_types::region::ProvideRegion;

use tracing_subscriber::fmt::format::FmtSpan;
use tracing_subscriber::fmt::SubscriberBuilder;

#[tokio::main]
async fn main() {
    let region = aws_types::region::default_provider()
        .region()
        .unwrap_or_else(|| Region::new("us-west-2"));

    println!("Lambda client version: {}", lambda::PKG_VERSION);
    println!("Region:      {:?}", &region);

    SubscriberBuilder::default()
        .with_env_filter("info")
        .with_span_events(FmtSpan::CLOSE)
        .init();

    let config = Config::builder().region(region).build();

    let client = Client::from_conf(config);

    match client
        .invoke()
        .function_name("arn:aws:lambda:us-west-2:892717189312:function:my-rusty-func")
        .send()
        .await
    {
        Ok(resp) => {
            println!("Response:");
            println!("  {:?}", resp.payload);
        }
        Err(SdkError::ServiceError { err, .. })
            if matches!(err.kind, InvokeErrorKind::ResourceNotFoundError(_)) =>
        {
            println!("This lambda function does not exist");
            process::exit(1);
        }
        Err(err) => {
            println!("Got an error listing functions:");
            println!("{}", err);
            process::exit(1);
        }
    };
}
+14 −0
Original line number Diff line number Diff line
[package]
name = "lambda-list-functions"
version = "0.1.0"
authors = ["Richard H. Boyd <rhboyd@amazon.com>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
lambda = { package = "aws-sdk-lambda", path = "../../build/aws-sdk/lambda" }
tokio = { version = "1", features = ["full"] }
structopt = { version = "0.3", default-features = false }
tracing-subscriber = { version = "0.2.16", features = ["fmt"] }
aws-types = { path = "../../build/aws-sdk/aws-types" }
+51 −0
Original line number Diff line number Diff line
/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */

use std::process;

use lambda::{Client, Config, Region};

use aws_types::region::ProvideRegion;

use tracing_subscriber::fmt::format::FmtSpan;
use tracing_subscriber::fmt::SubscriberBuilder;

#[tokio::main]
async fn main() {
    let region = aws_types::region::default_provider()
        .region()
        .unwrap_or_else(|| Region::new("us-west-2"));

    println!("Lambda client version: {}", lambda::PKG_VERSION);
    println!("Region:      {:?}", &region);

    SubscriberBuilder::default()
        .with_env_filter("info")
        .with_span_events(FmtSpan::CLOSE)
        .init();

    let config = Config::builder().region(region).build();

    let client = Client::from_conf(config);

    match client.list_functions().send().await {
        Ok(resp) => {
            println!("Functions:");

            let functions = resp.functions.unwrap_or_default();

            for function in &functions {
                println!("  {:?}", function.function_name);
            }

            println!("Found {} functions", functions.len());
        }
        Err(e) => {
            println!("Got an error listing functions:");
            println!("{}", e);
            process::exit(1);
        }
    };
}
+7871 −0

File added.

Preview size limit exceeded, changes collapsed.