aws-lambda
सर्वरहित फ्रेमवर्क
खोज…
परिचय
ओपन-सोर्स, एप्लिकेशन फ्रेमवर्क आसानी से AWS लाम्बा और अधिक पर सर्वर रहित आर्किटेक्चर बनाने के लिए। इस अनुभाग में प्रासंगिक उदाहरणों के साथ अनुप्रयोग विकास के लिए सर्वर रहित ढांचे को कैसे सेट किया जाए, शामिल है।
टिप्पणियों
"सर्वर रहित" एक रूपरेखा है: https://serverless.com/
serverless
विश्व स्तर पर सर्वरहित स्थापित करें
npm install serverless -g
Node.js में AWS Lamdba फ़ंक्शन बनाएँ
serverless create --template aws-nodejs
एक handler.js
का उदाहरण। handler.js
'use strict'; // Your first function handler module.exports.hello = (event, context, cb) => cb(null, { message: 'Go Serverless v1.0! Your function executed successfully!', event } ); // You can add more handlers here, and reference them in serverless.yml
AWS खाते को जीना
serverless deploy
सरल CRUD ऑपरेशन बनाएँ
सर्वरलेस फ्रेमवर्क का उपयोग करके सरल CRUD ऑपरेशन बनाएं
विश्व स्तर पर सर्वर रहित ढांचा स्थापित करें
npm install serverless -g
सरल लैम्ब्डा सेवा बनाएँ
serverless create --template aws-nodejs --path myService
MyService निर्देशिका में जाना चाहिए
- serverless.yml
- handler.js
- event.json
सभी सर्वर रहित सेवा कॉन्फ़िगरेशन को serverless.yml द्वारा प्रबंधित किया जाता है
CRUD सेवा को परिभाषित करने के लिए इसकी सामग्री बदलें।
उदाहरण serverless.yml फ़ाइल
service: serverless-crud
provider:
name: aws
runtime: nodejs4.3
region: us-east-1
stage: dev
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:DescribeTable
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource: "arn:aws:dynamodb:us-east-1:*:*"
functions:
create:
handler: handler.create
events:
- http:
path: todos
method: post
cors: true
readAll:
handler: handler.readAll
events:
- http:
path: todos
method: get
cors: true
readOne:
handler: handler.readOne
events:
- http:
path: todos/{id}
method: get
cors: true
update:
handler: handler.update
events:
- http:
path: todos/{id}
method: put
cors: true
delete:
handler: handler.delete
events:
- http:
path: todos/{id}
method: delete
cors: true
resources:
Resources:
TodosDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
-
AttributeName: id
AttributeType: S
KeySchema:
-
AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: 'todos'
यह फ़ाइल परिभाषित करती है
- लैम्ब्डा फ़ंक्शन प्रोग्रामिंग भाषा
- लाम्बा समारोह निष्पादन नीति
- डायनमॉड टेबल निर्माण और यह नीति है
- HTTP एंड पॉइंट (एपीआई गेटवे एंड पॉइंट)
फिर आपको हैंडलर में जेम्बड़ा फंक्शन (उदा। नोड। जेएस) को परिभाषित करना होगा। जेएस फाइल आप इसे परिभाषित कर सकते हैं।
'use strict';
const todosCreate = require('./todos-create.js');
const todosReadAll = require('./todos-read-all.js');
const todosReadOne = require('./todos-read-one.js');
const todosUpdate = require('./todos-update.js');
const todosDelete = require('./todos-delete.js');
module.exports.create = (event, context, callback) => {
todosCreate(event, (error, result) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(result),
};
context.succeed(response);
});
};
module.exports.readAll = (event, context, callback) => {
todosReadAll(event, (error, result) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(result),
};
context.succeed(response);
});
};
module.exports.readOne = (event, context, callback) => {
todosReadOne(event, (error, result) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(result),
};
context.succeed(response);
});
};
module.exports.update = (event, context, callback) => {
todosUpdate(event, (error, result) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(result),
};
context.succeed(response);
});
};
module.exports.delete = (event, context, callback) => {
todosDelete(event, (error, result) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(result),
};
context.succeed(response);
});
};
फिर आपको अपने CRUD कार्यों को परिभाषित करने के लिए नई फाइलें बनानी होंगी
इन फ़ाइलों को बनाएँ
- सब-create.js
- सब-पढ़ने के all.js
- सब-पढ़ने के one.js
- सब-update.js
- सब-delete.js
फिर प्रत्येक फ़ाइल में इन कार्यों को परिभाषित करें।
todos-create.js के लिए
'use strict';
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
const uuid = require('uuid');
module.exports = (event, callback) => {
const data = JSON.parse(event.body);
data.id = uuid.v1();
data.updatedAt = new Date().getTime();
const params = {
TableName: 'todos',
Item: data
};
return dynamoDb.put(params, (error, data) => {
if (error) {
callback(error);
}
callback(error, params.Item);
});
};
Todos-read-all.js के लिए
'use strict';
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (event, callback) => {
const params = {
TableName: 'todos',
};
return dynamoDb.scan(params, (error, data) => {
if (error) {
callback(error);
}
callback(error, data.Items);
});
};
For todos-read-one.js <br>
'use strict';
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (event, callback) => {
const params = {
TableName: 'todos',
Key: {
id: event.pathParameters.id
}
};
return dynamoDb.get(params, (error, data) => {
if (error) {
callback(error);
}
callback(error, data.Item);
});
};
Todos-update.js के लिए
'use strict';
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (event, callback) => {
const data = JSON.parse(event.body);
data.id = event.pathParameters.id;
data.updatedAt = new Date().getTime();
const params = {
TableName : 'todos',
Item: data
};
return dynamoDb.put(params, (error, data) => {
if (error) {
callback(error);
}
callback(error, params.Item);
});
};
Todos-delete.js के लिए
'use strict';
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (event, callback) => {
const params = {
TableName : 'todos',
Key: {
id: event.pathParameters.id
}
};
return dynamoDb.delete(params, (error, data) => {
if (error) {
callback(error);
}
callback(error, params.Key);
});
};
इन एप्लिकेशन को चलाने के लिए आपको एनपीएम निर्भरता स्थापित करने की आवश्यकता है
-
npm init
npm आरंभीकरण -
npm install aws-sdk --save
स्थापित aws-sdk -npm install aws-sdk --save
संस्थापन aws-sdk -
npm install uuid --save
तैनाती
अब आप इन प्रोजेक्ट को तैनात कर सकते हैं
cd myService
सत्यापित करें कि आप प्रोजेक्ट डायरेक्टरी में हैं तो आप अपना कोड तैनात कर सकते हैं
serverless deploy
एंड पॉइंट का उपयोग करें
यदि आप सफलतापूर्वक तैनात हैं, तो आप अपने कंसोल में एप्टी गेटवे एंड पॉन्ट नामों को देख सकते हैं।
टेस्ट बनाएं प्वाइंट
curl -X POST https://XXXX.execute-api.region.amazonaws.com/dev/todos --data '{ "body" : "Learn Serverless" }'
पढ़ें अंत बिंदु के लिए टेस्ट (सभी पढ़ें)
curl https://XXXX.execute-api.region.amazonaws.com/dev/todos
पढ़ें अंत बिंदु के लिए टेस्ट (एक पढ़ें)
curl https://XXXX.execute-api.region.amazonaws.com/dev/todos/<id>
अपडेट एंड पॉइंट के लिए टेस्ट करें
curl -X PUT https://XXXX.execute-api.region.amazonaws.com/dev/todos/<id> --data '{ "body" : "Understand Serverless" }'
डिलीट एंड पॉइंट के लिए टेस्ट करें
`curl -X DELETE https://XXXX.execute-api.region.amazonaws.com/dev/todos/<id`>