From 8f1de7e126e10496dcc81aa4035b94c4e5839be3 Mon Sep 17 00:00:00 2001 From: bertrand <bpinel@ippon.fr> Date: Wed, 13 Feb 2019 17:42:13 +0100 Subject: [PATCH] Correct lambda response when receiving a DELETE command --- cloud/lambda/lambda-jsonapi.js | 7 +++---- cloud/lambda/lambda-jsonapi.zip | Bin 3321 -> 3338 bytes cloud/terraform/README.md | 16 ++++------------ 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/cloud/lambda/lambda-jsonapi.js b/cloud/lambda/lambda-jsonapi.js index bc6ed2b..90bf51a 100644 --- a/cloud/lambda/lambda-jsonapi.js +++ b/cloud/lambda/lambda-jsonapi.js @@ -271,9 +271,7 @@ const patchMethod = (event, context, callback) => { 'Id': id }, 'ReturnValues': 'ALL_OLD' - }; - const body=event['body-json']; - + }; let dbDelete = (params) => { return dynamo.delete(params).promise() }; dbDelete(params).then( (data) => { if (!data.Attributes) { @@ -281,7 +279,8 @@ const patchMethod = (event, context, callback) => { return; } console.log(`DELETED ITEM OF TYPE ${type} SUCCESSFULLY WITH id = ${id}`); - callback(null, body); + const empty = {'data': []}; + callback(null, empty); }).catch( (err) => { console.log(`DELETE ITEM OF TYPE ${type} FAILED FOR id = ${id}, WITH ERROR: ${err}`); callback(null, createResponse(500, err)); diff --git a/cloud/lambda/lambda-jsonapi.zip b/cloud/lambda/lambda-jsonapi.zip index 4c88a99dae208b141ce3294d9ead26ee0d7b52e3..da0dfaa843db5d4a703258544c83ee6185245453 100644 GIT binary patch delta 3305 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 delta 3261 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 diff --git a/cloud/terraform/README.md b/cloud/terraform/README.md index f965987..518115d 100644 --- a/cloud/terraform/README.md +++ b/cloud/terraform/README.md @@ -14,23 +14,15 @@ AWS JSON API server relies on 3 main components, plus the needed IAM roles : - A lambda function in charge of the translation from JSON API format to dynamoDB objects and managing the relationships and the optional parameters provided in the request - An API Gateway configured to received the REST HTTP requests and proxying the Lambda +It also create three S3 buckets, one for storing the lambda code (nammed lambda-jsonapi-code-bucket) and the two other for receiving the ‘staging’ and ‘production’ version of the application (respectively nammed ember-aws-ehipster-staging and ember-aws-ehipster-production) + Several Terraform files are available, each one creating the needed component and their relationships with each other. Installation ------------------------------------------------------------------------------ -The lambda code needs to be stored in a S3 bucket before running the Terraform scripts. -The script is available in the cloud/lambda directory of this project. -The following operations need to be performed (adapting the region you are using): - -``` -cp ../lambda/lambda-jsonapi.js . -zip lambda-jsonapi.zip lambda-jsonapi.js -aws s3api create-bucket --bucket=lambda-jsonapi-code-bucket --region=us-east-1 -aws s3 cp lambda-jsonapi.zip s3://lambda-jsonapi-code-bucket/v1.0.0/lambda-jsonapi.zip -``` One this is done, simply run the terraform script : ``` +terraform init terraform apply -var bucket_name=<bucket name for static web site> -``` -For a strange reason I don't understand, the first time you run the terraform command, the mapping for the integration response fails. You have to run the command again to have your complete setup. \ No newline at end of file +``` \ No newline at end of file -- GitLab