खोज…


परिचय

ओपन-सोर्स, एप्लिकेशन फ्रेमवर्क आसानी से 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 निर्देशिका में जाना चाहिए

  1. serverless.yml
  2. handler.js
  3. 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' 

यह फ़ाइल परिभाषित करती है

  1. लैम्ब्डा फ़ंक्शन प्रोग्रामिंग भाषा
  2. लाम्बा समारोह निष्पादन नीति
  3. डायनमॉड टेबल निर्माण और यह नीति है
  4. 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 कार्यों को परिभाषित करने के लिए नई फाइलें बनानी होंगी
इन फ़ाइलों को बनाएँ

  1. सब-create.js
  2. सब-पढ़ने के all.js
  3. सब-पढ़ने के one.js
  4. सब-update.js
  5. सब-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);
  });
};

इन एप्लिकेशन को चलाने के लिए आपको एनपीएम निर्भरता स्थापित करने की आवश्यकता है

  1. npm init npm आरंभीकरण
  2. npm install aws-sdk --save स्थापित aws-sdk - npm install aws-sdk --save संस्थापन aws-sdk
  3. 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`>


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow