From a5f85fbcd513a4921ad23ca69c225e39eb1379e6 Mon Sep 17 00:00:00 2001 From: Gareth Mc Cumskey Date: Mon, 19 Feb 2024 11:49:54 +0000 Subject: [PATCH] feat: add updated starter templates for SF V.4 --- aws-node-express-api/handler.js | 2 +- aws-node-express-api/package.json | 4 +- aws-node-express-api/serverless.yml | 4 +- aws-node-express-dynamodb-api/handler.js | 12 ++-- aws-node-express-dynamodb-api/package.json | 5 +- aws-node-express-dynamodb-api/serverless.yml | 4 +- aws-node-http-api/handler.js | 2 +- aws-node-http-api/serverless.yml | 4 +- aws-node-scheduled-cron/handler.js | 2 +- aws-node-scheduled-cron/serverless.yml | 5 +- aws-node-sqs-worker/handler.js | 58 +------------------ aws-node-sqs-worker/package.json | 5 +- aws-node-sqs-worker/serverless.yml | 27 ++++----- aws-node/handler.js | 2 +- aws-node/serverless.yml | 5 +- aws-python-flask-api/requirements.txt | 2 +- aws-python-flask-api/serverless.yml | 4 +- aws-python-flask-dynamodb-api/package.json | 4 +- .../requirements.txt | 2 +- aws-python-flask-dynamodb-api/serverless.yml | 5 +- aws-python-http-api/serverless.yml | 4 +- aws-python-scheduled-cron/serverless.yml | 4 +- aws-python-sqs-worker/serverless.yml | 4 +- aws-python/serverless.yml | 4 +- 24 files changed, 54 insertions(+), 120 deletions(-) diff --git a/aws-node-express-api/handler.js b/aws-node-express-api/handler.js index 73a78fada..4ff86d4de 100644 --- a/aws-node-express-api/handler.js +++ b/aws-node-express-api/handler.js @@ -20,4 +20,4 @@ app.use((req, res, next) => { }); }); -module.exports.handler = serverless(app); +exports.handler = serverless(app); diff --git a/aws-node-express-api/package.json b/aws-node-express-api/package.json index b16219146..336166745 100644 --- a/aws-node-express-api/package.json +++ b/aws-node-express-api/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "", "dependencies": { - "express": "^4.17.1", - "serverless-http": "^2.7.0" + "express": "^4.18.2", + "serverless-http": "^3.2.0" } } diff --git a/aws-node-express-api/serverless.yml b/aws-node-express-api/serverless.yml index 8a1fff8cd..c3257f8cf 100644 --- a/aws-node-express-api/serverless.yml +++ b/aws-node-express-api/serverless.yml @@ -1,9 +1,9 @@ service: aws-node-express-api -frameworkVersion: '2 || 3' +frameworkVersion: '4' provider: name: aws - runtime: nodejs12.x + runtime: nodejs20.x lambdaHashingVersion: '20201221' functions: diff --git a/aws-node-express-dynamodb-api/handler.js b/aws-node-express-dynamodb-api/handler.js index 8bc34d33e..d2468e552 100644 --- a/aws-node-express-dynamodb-api/handler.js +++ b/aws-node-express-dynamodb-api/handler.js @@ -1,11 +1,10 @@ -const AWS = require("aws-sdk"); +const { DynamoDBClient, PutItemCommand, GetItemCommand } = require("@aws-sdk/client-dynamodb"); const express = require("express"); const serverless = require("serverless-http"); const app = express(); const USERS_TABLE = process.env.USERS_TABLE; -const dynamoDbClient = new AWS.DynamoDB.DocumentClient(); app.use(express.json()); @@ -18,7 +17,8 @@ app.get("/users/:userId", async function (req, res) { }; try { - const { Item } = await dynamoDbClient.get(params).promise(); + const command = new GetItemCommand(params); + const { Item } = await client.send(command); if (Item) { const { userId, name } = Item; res.json({ userId, name }); @@ -50,7 +50,8 @@ app.post("/users", async function (req, res) { }; try { - await dynamoDbClient.put(params).promise(); + const command = new PutItemCommand(input); + await client.send(command); res.json({ userId, name }); } catch (error) { console.log(error); @@ -64,5 +65,4 @@ app.use((req, res, next) => { }); }); - -module.exports.handler = serverless(app); +exports.handler = serverless(app); diff --git a/aws-node-express-dynamodb-api/package.json b/aws-node-express-dynamodb-api/package.json index 2e1c7cd4f..ecb2875ee 100644 --- a/aws-node-express-dynamodb-api/package.json +++ b/aws-node-express-dynamodb-api/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "", "dependencies": { - "express": "^4.17.1", - "serverless-http": "^2.7.0" + "express": "^4.18.2", + "serverless-http": "^3.2.0", + "@aws-sdk/client-dynamodb": "^3.515.0" } } diff --git a/aws-node-express-dynamodb-api/serverless.yml b/aws-node-express-dynamodb-api/serverless.yml index ac64d2e65..cb5eb3801 100644 --- a/aws-node-express-dynamodb-api/serverless.yml +++ b/aws-node-express-dynamodb-api/serverless.yml @@ -1,12 +1,12 @@ service: aws-node-express-dynamodb-api -frameworkVersion: '2 || 3' +frameworkVersion: '4' custom: tableName: 'users-table-${sls:stage}' provider: name: aws - runtime: nodejs12.x + runtime: nodejs20.x lambdaHashingVersion: '20201221' iam: role: diff --git a/aws-node-http-api/handler.js b/aws-node-http-api/handler.js index 69bddf913..1b087d4ba 100644 --- a/aws-node-http-api/handler.js +++ b/aws-node-http-api/handler.js @@ -1,6 +1,6 @@ "use strict"; -module.exports.hello = async (event) => { +exports.hello = async (event) => { return { statusCode: 200, body: JSON.stringify( diff --git a/aws-node-http-api/serverless.yml b/aws-node-http-api/serverless.yml index 8865fc18a..bf2e4588a 100644 --- a/aws-node-http-api/serverless.yml +++ b/aws-node-http-api/serverless.yml @@ -1,9 +1,9 @@ service: serverless-http-api -frameworkVersion: '2 || 3' +frameworkVersion: '4' provider: name: aws - runtime: nodejs12.x + runtime: nodejs20.x lambdaHashingVersion: '20201221' functions: diff --git a/aws-node-scheduled-cron/handler.js b/aws-node-scheduled-cron/handler.js index 488c903de..fe215fe50 100644 --- a/aws-node-scheduled-cron/handler.js +++ b/aws-node-scheduled-cron/handler.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports.run = async (event, context) => { +exports.run = async (event, context) => { const time = new Date(); console.log(`Your cron function "${context.functionName}" ran at ${time}`); }; diff --git a/aws-node-scheduled-cron/serverless.yml b/aws-node-scheduled-cron/serverless.yml index c1e83feaa..52e4f24f2 100644 --- a/aws-node-scheduled-cron/serverless.yml +++ b/aws-node-scheduled-cron/serverless.yml @@ -1,11 +1,10 @@ service: aws-node-scheduled-cron -frameworkVersion: '2 || 3' - +frameworkVersion: '4' provider: name: aws - runtime: nodejs12.x + runtime: nodejs20.x lambdaHashingVersion: 20201221 functions: diff --git a/aws-node-sqs-worker/handler.js b/aws-node-sqs-worker/handler.js index a97c66cab..cf3d2cde5 100644 --- a/aws-node-sqs-worker/handler.js +++ b/aws-node-sqs-worker/handler.js @@ -1,61 +1,5 @@ -const { SQS } = require("aws-sdk"); - -const sqs = new SQS(); - -const producer = async (event) => { - let statusCode = 200; - let message; - - if (!event.body) { - return { - statusCode: 400, - body: JSON.stringify({ - message: "No body was found", - }), - }; - } - - try { - await sqs - .sendMessage({ - QueueUrl: process.env.QUEUE_URL, - MessageBody: event.body, - MessageAttributes: { - AttributeName: { - StringValue: "Attribute Value", - DataType: "String", - }, - }, - }) - .promise(); - - message = "Message accepted!"; - } catch (error) { - console.log(error); - message = error; - statusCode = 500; - } - - return { - statusCode, - body: JSON.stringify({ - message, - }), - }; -}; - -const consumer = async (event) => { +exports.consumer = async (event) => { for (const record of event.Records) { - const messageAttributes = record.messageAttributes; - console.log( - "Message Attribute: ", - messageAttributes.AttributeName.stringValue - ); console.log("Message Body: ", record.body); } }; - -module.exports = { - producer, - consumer, -}; diff --git a/aws-node-sqs-worker/package.json b/aws-node-sqs-worker/package.json index 8398f017c..aeb268535 100644 --- a/aws-node-sqs-worker/package.json +++ b/aws-node-sqs-worker/package.json @@ -3,8 +3,5 @@ "version": "1.0.0", "description": "Serverless Framework Node SQS Producer-Consumer on AWS", "author": "", - "license": "MIT", - "devDependencies": { - "serverless-lift": "^1.1.2" - } + "license": "MIT" } diff --git a/aws-node-sqs-worker/serverless.yml b/aws-node-sqs-worker/serverless.yml index 33bdfe3f7..a9c6f4237 100644 --- a/aws-node-sqs-worker/serverless.yml +++ b/aws-node-sqs-worker/serverless.yml @@ -1,26 +1,21 @@ service: aws-node-sqs-worker -frameworkVersion: '2 || 3' +frameworkVersion: '4' provider: name: aws - runtime: nodejs12.x + runtime: nodejs20.x lambdaHashingVersion: '20201221' -constructs: - jobs: - type: queue - worker: - handler: handler.consumer - functions: producer: - handler: handler.producer + handler: handler.consumer events: - - httpApi: - method: post - path: /produce - environment: - QUEUE_URL: ${construct:jobs.queueUrl} + - sqs: arn:aws:sqs:${aws:region}:${aws:accountId}:MyFirstQueue + +resources: + Resources: + JobQueue: + Type: AWS::SQS::Queue + Properties: + QueueName: MyFirstQueue -plugins: - - serverless-lift diff --git a/aws-node/handler.js b/aws-node/handler.js index 2ca668b3f..6cba368f2 100644 --- a/aws-node/handler.js +++ b/aws-node/handler.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports.hello = async (event) => { +exports.hello = async (event) => { return { statusCode: 200, body: JSON.stringify( diff --git a/aws-node/serverless.yml b/aws-node/serverless.yml index f790ee010..572eb5221 100644 --- a/aws-node/serverless.yml +++ b/aws-node/serverless.yml @@ -1,12 +1,11 @@ service: aws-node # NOTE: update this with your service name -frameworkVersion: '2 || 3' +frameworkVersion: '4' provider: name: aws - runtime: nodejs12.x - lambdaHashingVersion: 20201221 + runtime: nodejs20.x functions: hello: diff --git a/aws-python-flask-api/requirements.txt b/aws-python-flask-api/requirements.txt index 0c47f9801..7ea3a9c73 100644 --- a/aws-python-flask-api/requirements.txt +++ b/aws-python-flask-api/requirements.txt @@ -1,3 +1,3 @@ Flask==1.1.4 Werkzeug==1.0.1 - +markupsafe==2.0.1 diff --git a/aws-python-flask-api/serverless.yml b/aws-python-flask-api/serverless.yml index afc41bcb1..dfcce551c 100644 --- a/aws-python-flask-api/serverless.yml +++ b/aws-python-flask-api/serverless.yml @@ -1,6 +1,6 @@ service: aws-python-flask-api -frameworkVersion: '2 || 3' +frameworkVersion: '4' custom: wsgi: @@ -8,7 +8,7 @@ custom: provider: name: aws - runtime: python3.8 + runtime: python3.12 lambdaHashingVersion: '20201221' functions: diff --git a/aws-python-flask-dynamodb-api/package.json b/aws-python-flask-dynamodb-api/package.json index e33ed1fda..15f2ab186 100644 --- a/aws-python-flask-dynamodb-api/package.json +++ b/aws-python-flask-dynamodb-api/package.json @@ -4,7 +4,7 @@ "description": "Example of a Python Flask API service backed by DynamoDB with traditional Serverless Framework", "author": "", "devDependencies": { - "serverless-python-requirements": "^5.1.0", - "serverless-wsgi": "^1.7.6" + "serverless-python-requirements": "^6.0.1", + "serverless-wsgi": "^3.0.3" } } diff --git a/aws-python-flask-dynamodb-api/requirements.txt b/aws-python-flask-dynamodb-api/requirements.txt index 0c47f9801..7ea3a9c73 100644 --- a/aws-python-flask-dynamodb-api/requirements.txt +++ b/aws-python-flask-dynamodb-api/requirements.txt @@ -1,3 +1,3 @@ Flask==1.1.4 Werkzeug==1.0.1 - +markupsafe==2.0.1 diff --git a/aws-python-flask-dynamodb-api/serverless.yml b/aws-python-flask-dynamodb-api/serverless.yml index d635d4e9f..ff48f677d 100644 --- a/aws-python-flask-dynamodb-api/serverless.yml +++ b/aws-python-flask-dynamodb-api/serverless.yml @@ -1,6 +1,6 @@ service: aws-python-flask-dynamodb-api -frameworkVersion: '2 || 3' +frameworkVersion: '4' custom: tableName: 'users-table-${self:provider.stage}' @@ -9,9 +9,8 @@ custom: provider: name: aws - runtime: python3.8 + runtime: python3.12 lambdaHashingVersion: '20201221' - stage: dev iam: role: statements: diff --git a/aws-python-http-api/serverless.yml b/aws-python-http-api/serverless.yml index d7f08fb5a..28b243e72 100644 --- a/aws-python-http-api/serverless.yml +++ b/aws-python-http-api/serverless.yml @@ -1,9 +1,9 @@ service: aws-python-http-api -frameworkVersion: '2 || 3' +frameworkVersion: '4' provider: name: aws - runtime: python3.8 + runtime: python3.12 lambdaHashingVersion: '20201221' functions: diff --git a/aws-python-scheduled-cron/serverless.yml b/aws-python-scheduled-cron/serverless.yml index 34064f264..956d8820a 100644 --- a/aws-python-scheduled-cron/serverless.yml +++ b/aws-python-scheduled-cron/serverless.yml @@ -1,11 +1,11 @@ service: aws-python-scheduled-cron -frameworkVersion: '2 || 3' +frameworkVersion: '4' provider: name: aws - runtime: python3.8 + runtime: python3.12 lambdaHashingVersion: 20201221 functions: diff --git a/aws-python-sqs-worker/serverless.yml b/aws-python-sqs-worker/serverless.yml index dc5862920..40d77dbe9 100644 --- a/aws-python-sqs-worker/serverless.yml +++ b/aws-python-sqs-worker/serverless.yml @@ -1,9 +1,9 @@ service: aws-python-sqs-worker -frameworkVersion: '2 || 3' +frameworkVersion: '4' provider: name: aws - runtime: python3.8 + runtime: python3.12 lambdaHashingVersion: '20201221' constructs: diff --git a/aws-python/serverless.yml b/aws-python/serverless.yml index 7dd4bca34..f161474df 100644 --- a/aws-python/serverless.yml +++ b/aws-python/serverless.yml @@ -1,11 +1,11 @@ service: aws-python # NOTE: update this with your service name -frameworkVersion: '2 || 3' +frameworkVersion: '4' provider: name: aws - runtime: python3.8 + runtime: python3.12 lambdaHashingVersion: 20201221 functions: