mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
Merge pull request #5577 from serverless/provided-template
Add template for provided runtime with the bash sample from AWS
This commit is contained in:
commit
eef96aaede
@ -57,6 +57,7 @@ Most commonly used templates:
|
||||
- aws-python
|
||||
- aws-python3
|
||||
- aws-ruby
|
||||
- aws-provided
|
||||
- aws-kotlin-jvm-maven
|
||||
- aws-kotlin-jvm-gradle
|
||||
- aws-kotlin-nodejs-gradle
|
||||
|
||||
@ -59,6 +59,7 @@ Here are the available runtimes for AWS Lambda:
|
||||
* aws-python
|
||||
* aws-python3
|
||||
* aws-ruby
|
||||
* aws-provided
|
||||
* aws-kotlin-jvm-maven
|
||||
* aws-kotlin-nodejs-gradle
|
||||
* aws-groovy-gradle
|
||||
|
||||
@ -36,6 +36,7 @@ const validTemplates = [
|
||||
'aws-go-dep',
|
||||
'aws-go-mod',
|
||||
'aws-ruby',
|
||||
'aws-provided',
|
||||
'azure-nodejs',
|
||||
'cloudflare-workers',
|
||||
'cloudflare-workers-enterprise',
|
||||
|
||||
@ -958,5 +958,21 @@ describe('Create', () => {
|
||||
.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);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
21
lib/plugins/create/templates/aws-provided/bootstrap
Executable file
21
lib/plugins/create/templates/aws-provided/bootstrap
Executable file
@ -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
|
||||
2
lib/plugins/create/templates/aws-provided/gitignore
Normal file
2
lib/plugins/create/templates/aws-provided/gitignore
Normal file
@ -0,0 +1,2 @@
|
||||
.serverless
|
||||
node_modules
|
||||
7
lib/plugins/create/templates/aws-provided/handler.sh
Normal file
7
lib/plugins/create/templates/aws-provided/handler.sh
Normal file
@ -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
|
||||
}
|
||||
104
lib/plugins/create/templates/aws-provided/serverless.yml
Normal file
104
lib/plugins/create/templates/aws-provided/serverless.yml
Normal file
@ -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-python3
|
||||
integration-test aws-ruby
|
||||
integration-test aws-provided
|
||||
integration-test aws-kotlin-jvm-gradle
|
||||
integration-test aws-kotlin-jvm-maven
|
||||
integration-test aws-kotlin-nodejs-gradle
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user