SIGN IN SIGN UP

Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.

0 0 1 Java
# Example AWS Lambda function using the AWS C++ Lambda runtime
Shows how to build and package an AWS Lambda function using the AWS C++
Lambda runtime. This function can replace the Python Lambda function used in
the [Get started with functions](../get_started_with_functions_scenario.cpp)
scenario sample code.
## Creating the Lamba function package
The Lambda function is built and packaged using [Docker](https://www.docker.com/).
### Prerequisites
[Docker](https://www.docker.com/) is needed to build and package the Lambda function. The Docker website contains installation instructions.
### Build and run the docker image
This sample code contains a `DockerFile` which is used to build the Docker image. Using a shell application, navigate to the folder containing this README.
Then enter the following command:
```bashcd
docker build . -f Dockerfile -t cpp_lambda_image
```
Now run the Docker image as a container using the following command:
```bash
docker run -i -t --name cpp_lambda --mount type=bind,source="$(pwd)",target=/cpp_lambda cpp_lambda_image bash
```
Your command line should now be running from within the Docker container.
The preceding run command should have bound the directory containing this
README to the Docker container.
Test whether the host directory is correctly bound by entering the following
command:
```bash
ls /cpp_lambda
```
You should see the contents of this README's directory.
```bash
Dockerfile README.md calculator increment
```
### Build and package the Lambda function
Now build the two Lambda functions used by the sample code. Because the Docker container is bound to the directory containing
this README, the source code can be accessed within the container at `/cpp_lambda`.
Note: The [AWS Lambda C++ Runtime](https://github.com/awslabs/aws-lambda-cpp) is required for the next steps. It was installed when the Docker image was built.
1. Build the "Increment" Lambda function code.
```bash
cd /cpp_lambda/increment && \
mkdir build && \
cd build && \
cmake3 .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/install && \
make && \
make aws-lambda-package-cpp_lambda_increment
```
2. Build the "Calculator" Lambda function code.
```bash
cd /cpp_lambda/calculator && \
mkdir build && \
cd build && \
cmake3 .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/install && \
make && \
make aws-lambda-package-cpp_lambda_calculator
```
These build steps have generated two zip files which will be used by the sample
code in [Get started with functions](../get_started_with_functions_scenario.cpp).
These files are referenced in the following section of code:
```cpp
#if USE_CPP_LAMBDA_FUNCTION
static Aws::String LAMBDA_HANDLER_NAME(
"cpp_lambda_calculator");
static Aws::String INCREMENT_LAMBDA_CODE(
SOURCE_DIR "cpp_lambda/increment/build/cpp_lambda_increment.zip");
static Aws::String CALCULATOR_LAMBDA_CODE(
SOURCE_DIR "cpp_lambda/calculator/build/cpp_lambda_calculator.zip");
#else
```
Finally, in the source file `get_started_with_functions_scenario.cpp`, set the preprocessor constant `USE_CPP_LAMBDA_FUNCTION` to 1.
```cpp
#define USE_CPP_LAMBDA_FUNCTION 1
```