New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add template for provided runtime with the bash sample from AWS #5577

Merged
merged 2 commits into from Jan 25, 2019
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file or symbol
Failed to load files and symbols.
+154 −0
Diff settings

Always

Just for now

@@ -57,6 +57,7 @@ Most commonly used templates:
- aws-python - aws-python
- aws-python3 - aws-python3
- aws-ruby - aws-ruby
- aws-provided
- aws-kotlin-jvm-maven - aws-kotlin-jvm-maven
- aws-kotlin-jvm-gradle - aws-kotlin-jvm-gradle
- aws-kotlin-nodejs-gradle - aws-kotlin-nodejs-gradle
@@ -59,6 +59,7 @@ Here are the available runtimes for AWS Lambda:
* aws-python * aws-python
* aws-python3 * aws-python3
* aws-ruby * aws-ruby
* aws-provided
* aws-kotlin-jvm-maven * aws-kotlin-jvm-maven
* aws-kotlin-nodejs-gradle * aws-kotlin-nodejs-gradle
* aws-groovy-gradle * aws-groovy-gradle
Copy path View file
@@ -36,6 +36,7 @@ const validTemplates = [
'aws-go-dep', 'aws-go-dep',
'aws-go-mod', 'aws-go-mod',
'aws-ruby', 'aws-ruby',
'aws-provided',
'azure-nodejs', 'azure-nodejs',
'cloudflare-workers', 'cloudflare-workers',
'cloudflare-workers-enterprise', 'cloudflare-workers-enterprise',
@@ -958,5 +958,21 @@ describe('Create', () => {
.to.be.equal(true); .to.be.equal(true);
}); });
}); });

it('should generate scaffolding for "aws-provided" template', () => {
process.chdir(tmpDir);
create.options.template = 'aws-provided';

return create.create().then(() => {
expect(create.serverless.utils.fileExistsSync(path.join(tmpDir, 'serverless.yml')))
.to.be.equal(true);
expect(create.serverless.utils.fileExistsSync(path.join(tmpDir, 'handler.sh')))
.to.be.equal(true);
expect(create.serverless.utils.fileExistsSync(path.join(tmpDir, '.gitignore')))
.to.be.equal(true);
expect(create.serverless.utils.fileExistsSync(path.join(tmpDir, 'bootstrap')))
.to.be.equal(true);
});
});
}); });
}); });
@@ -0,0 +1,21 @@
#!/bin/sh

set -euo pipefail

# Initialization - load function handler
source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh"

# Processing
while true
do
HEADERS="$(mktemp)"
# Get an event
EVENT_DATA=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next")
REQUEST_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2)

# Execute the handler function from the script
RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT_DATA")

# Send the response
curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "$RESPONSE"
done
@@ -0,0 +1,2 @@
.serverless
node_modules
@@ -0,0 +1,7 @@
function hello () {
EVENT_DATA=$1
echo "$EVENT_DATA" 1>&2;
RESPONSE="{\"body\": {\"input\": $EVENT_DATA, \"msg\": \"Wecome to serverless!\"}}"

echo $RESPONSE
}
@@ -0,0 +1,104 @@
# Welcome to Serverless!
#
# This file is the main config file for your service.
# It's very minimal at this point and uses default values.
# You can always add more config options for more control.
# We've included some commented out config examples here.
# Just uncomment any of them to get that config option.
#
# For full config options, check the docs:
# docs.serverless.com
#
# Happy Coding!

service: aws-provided # NOTE: update this with your service name

# You can pin your service to only deploy with a specific Serverless version
# Check out our docs for more details
# frameworkVersion: "=X.X.X"

provider:
name: aws
runtime: provided

# you can overwrite defaults here
# stage: dev
# region: us-east-1

# you can add statements to the Lambda function's IAM Role here
# iamRoleStatements:
# - Effect: "Allow"
# Action:
# - "s3:ListBucket"
# Resource: { "Fn::Join" : ["", ["arn:aws:s3:::", { "Ref" : "ServerlessDeploymentBucket" } ] ] }
# - Effect: "Allow"
# Action:
# - "s3:PutObject"
# Resource:
# Fn::Join:
# - ""
# - - "arn:aws:s3:::"
# - "Ref" : "ServerlessDeploymentBucket"
# - "/*"

# you can define service wide environment variables here
# environment:
# variable1: value1

# you can add packaging information here
#package:
# include:
# - include-me.py
# - include-me-dir/**
# exclude:
# - exclude-me.py
# - exclude-me-dir/**

functions:
hello:
handler: handler.hello

# The following are a few example events you can configure
# NOTE: Please make sure to change your handler code to work with those events
# Check the event documentation for details
# events:
# - http:
# path: users/create
# method: get
# - s3: ${env:BUCKET}
# - schedule: rate(10 minutes)
# - sns: greeter-topic
# - stream: arn:aws:dynamodb:region:XXXXXX:table/foo/stream/1970-01-01T00:00:00.000
# - alexaSkill: amzn1.ask.skill.xx-xx-xx-xx
# - alexaSmartHome: amzn1.ask.skill.xx-xx-xx-xx
# - iot:
# sql: "SELECT * FROM 'some_topic'"
# - cloudwatchEvent:
# event:
# source:
# - "aws.ec2"
# detail-type:
# - "EC2 Instance State-change Notification"
# detail:
# state:
# - pending
# - cloudwatchLog: '/aws/lambda/hello'
# - cognitoUserPool:
# pool: MyUserPool
# trigger: PreSignUp

# Define function environment variables here
# environment:
# variable2: value2

# you can add CloudFormation resource templates here
#resources:
# Resources:
# NewResource:
# Type: AWS::S3::Bucket
# Properties:
# BucketName: my-new-bucket
# Outputs:
# NewOutput:
# Description: "Description for the output"
# Value: "Some output value"
@@ -23,6 +23,7 @@ integration-test aws-nodejs
integration-test aws-python integration-test aws-python
integration-test aws-python3 integration-test aws-python3
integration-test aws-ruby integration-test aws-ruby
integration-test aws-provided
integration-test aws-kotlin-jvm-gradle integration-test aws-kotlin-jvm-gradle
integration-test aws-kotlin-jvm-maven integration-test aws-kotlin-jvm-maven
integration-test aws-kotlin-nodejs-gradle integration-test aws-kotlin-nodejs-gradle
ProTip! Use n and p to navigate between commits in a pull request.