Skip to content

Commit a31c35f

Browse files
committed
Test lambda
0 parents  commit a31c35f

File tree

6 files changed

+98
-0
lines changed

6 files changed

+98
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/.idea
2+
/build
3+
.DS_Store

.travis.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
language: cpp
2+
compiler:
3+
- gcc
4+
install: .travis/install.sh
5+
script: .travis/build.sh
6+
deploy:
7+
provider: lambda
8+
skip_cleanup: true
9+
function_name: extractor-cpp
10+
region: us-east-2
11+
role: arn:aws:iam::695208893210:role/lambda-role
12+
runtime: provided
13+
handler_name: handle_request
14+
access_key_id: $AWS_ACCESS_KEY_ID
15+
secret_access_key: $AWS_SECRET_ACCESS_KEY
16+
zip: build/extractor-cpp.zip
17+
timeout: 10
18+
memory_size: 512
19+
on:
20+
branch: master
21+
env:
22+
global:
23+
# AWS_ACCESS_KEY_ID
24+
- secure: nxq9DgyeNB97lkhgma35vcQSvgsSR/QYFR/1sQBDgZqVrGC7TU0gq+CRMQ1IdVWq6RGE7FroaKAb8HiT/6xdeY2BIWl8R1ZMzXS96W7Rql6XZd4sLfu3NeP20XFCs1soMYmR0m6x+H1QvoDRxCmjVlQ50v6S8Gk84oBPqYy+J8TcnZryjgl8ryj/8atgwO2FZk1MGtob26y/83nhhD/a7BZs1SDtF2VnyUQ0jM11hq6zl5QywpMOFF6L+i8XI9KKCbh/pjgOtmEkTIvCsFQa0/A0qKjGySQ3TUwK1w57aiA6R74ZYMm2TmTlBA3T/kx2jykfpy7NFMrlwnW2d3Mhu37QGo0OIwIK7S0cM+GT+MqAD6B8bMZ5QWfdJ7x50JpEYtXnOwFhGKJIPFvjktELWb+rYcUQiH+h7ImcH7ZROHRz/GrX2KVdV/v9RSktZYoS0uv+KrAmtasDtUFhuCnkBaubls91MSkHK/NBXfWt6f8O9+MAJKOUMWpSMRj6DQI7nAseWzSqBSmaiocUAAnt0Cv80BwqHXgs7swSWZTxgSCjhv5QpMv6Q2CGnnpq4eAfBsd6qtI7vSmgEvFsqfRPRcgE7HE/kZDfLGk3BU+zSOvIa8ZCnSNpmnEd2ZmJybk9CNTNrimXUfxha+sy9Y39w11X4UGzV2CNhSpRDoOavzY=
25+
# AWS_SECRET_ACCESS_KEY
26+
- secure: XjVEeKSN07eMhLmsoLQO0BJ+SdjB0L0pgOH9veDAs1MEnh8xQO0uY1ysf0kaP9jxNZL3bEo53+EelEitaekcLoK4MpsjWH7bUum+76f+vXBNFUshBIcqZG7id5D6pKllMqCpgPH7cuKQuyLA4fK7MJMaTLIuvzMTMA9I68V2RBpvrES0IiArkodziNLgDWQAgqXWbpszpzzeAo5mhctt9ySmmn7Kqx1rWlGXs4cW87TeQAORkrJyqO0n1UFRhJCmceerfYpBsZhkpOLVi4T4eDfsnoWdoDFnu33JZmLQhE33e5pyg5s4Mo1qx+xw8INHUQACXJhkQQrGiSOAHPXKCs0udES5deEaWmxm3D4aNdZfGxPokm7ykMp2oolL3L8wSFb3y1/9tKIcol+HmHQJi4BQ5eKlv5ulqtDORLj9sx7LfWZbHIHjaD8n/+n0ZhSkDhySv6CzuNLbfwlJqEy2H3I7vPRPbKVCY9am5i2dGCvSWSH/b8xHjbBSKmYUjz6uoOm2cKb96WX9W3ZBBYRa0ShlEDZrWLMaI7YEOfJns5S55mUpFLz2vxqdeUZwkif8UBkV/ljRXRdK24UOS48ZDeSaITDXYODbR749pEMgFCSy2W2LU5ZJi62IqzG16Xg8Y6G2Y2Wxe6KPViLabAbDERrEmFm9R0a5hDaPPVzkZpM=

.travis/build.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env bash
2+
3+
mkdir build &&
4+
cd build &&
5+
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=~/lambda-install &&
6+
make &&
7+
make aws-lambda-package-extractor-cpp

.travis/install.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
git clone https://github.com/awslabs/aws-lambda-cpp.git &&
4+
cd aws-lambda-cpp &&
5+
mkdir build &&
6+
cd build &&
7+
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/lambda-install &&
8+
make &&
9+
make install

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
cmake_minimum_required(VERSION 3.5)
2+
set(CMAKE_CXX_STANDARD 11)
3+
project(extractor-cpp LANGUAGES CXX)
4+
find_package(aws-lambda-runtime)
5+
add_executable(${PROJECT_NAME} "main.cpp")
6+
target_link_libraries(${PROJECT_NAME} PRIVATE AWS::aws-lambda-runtime)
7+
target_compile_features(${PROJECT_NAME} PRIVATE "cxx_std_11")
8+
target_compile_options(${PROJECT_NAME} PRIVATE "-Wall" "-Wextra")
9+
10+
# this line creates a target that packages your binary and zips it up
11+
aws_lambda_package_target(${PROJECT_NAME})

main.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include <aws/lambda-runtime/runtime.h>
2+
#include <cstdio>
3+
#include <iostream>
4+
#include <memory>
5+
#include <stdexcept>
6+
#include <string>
7+
#include <array>
8+
9+
using namespace aws::lambda_runtime;
10+
11+
std::string exec(const char* cmd) {
12+
std::array<char, 128> buffer;
13+
std::string result;
14+
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd, "r"), pclose);
15+
if (!pipe) {
16+
throw std::runtime_error("popen() failed!");
17+
}
18+
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
19+
result += buffer.data();
20+
}
21+
return result;
22+
}
23+
24+
static invocation_response handle_request(invocation_request const& req)
25+
{
26+
std::cout << exec("whereis g++");
27+
std::cout << exec("echo \"blahkhgfd\"");
28+
29+
if (req.payload.length() > 42) {
30+
return invocation_response::failure("error message here"/*error_message*/,
31+
"error type here" /*error_type*/);
32+
}
33+
34+
return invocation_response::success("json payload here" /*payload*/,
35+
"application/json" /*MIME type*/);
36+
}
37+
38+
int main()
39+
{
40+
run_handler(handle_request);
41+
return 0;
42+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy