మీ లక్షణాలను నవీకరించడానికి లాంబ్డాకు వెబ్ ఆధారిత ఎడిటర్ ఉన్నప్పటికీ, ఇది ప్రారంభకులకు ఉద్దేశించబడింది మరియు మీరు ఆచరణలో ఏమి ఉపయోగించకూడదు. SAM మోడళ్లతో ఫంక్షన్లను సృష్టించడం లాంబ్డా ఫంక్షన్లను ఇప్పటికే ఉన్న సోర్స్ కోడ్ కంట్రోల్ మరియు CI / CD పైప్‌లైన్‌కు తరలించడానికి మిమ్మల్ని అనుమతిస్తుంది.

సమస్య

మీరు AWS మరియు లాంబ్డా నేర్చుకుంటుంటే, మీరు బహుశా ఈ ఇంటర్‌ఫేస్‌ను చూసారు:

లాంబ్డా ఎడిటర్

ఇది లాంబ్డా యొక్క వెబ్ ఎడిటర్, ఇది ఫంక్షన్ కోసం పేజీ నుండి నేరుగా ఫంక్షన్‌ను సవరించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది ప్రారంభకులకు చాలా బాగుంది మరియు క్లౌడ్ 9 IDE తో విస్తరించినప్పుడు చిన్న ప్రాజెక్టులకు కూడా విస్తృతంగా ఉపయోగించవచ్చు, ఇది స్థానిక మరియు రిమోట్ డీబగ్గింగ్‌ను అనుమతిస్తుంది.

అయితే, ఇది కాదు నిజమైన మీరు లాంబ్డా ఫంక్షన్లను ఎలా వ్రాయాలి, ప్రత్యేకించి మీరు వాటిలో వందలాది మైక్రోసర్వీస్ యొక్క బ్యాకెండ్ను నిర్వహిస్తే.

దీనికి పరిష్కారం AWS సర్వర్‌లెస్ అప్లికేషన్ మోడల్, లేదా సంక్షిప్తంగా SAM. AWS కొన్ని కారణాల వలన SAM ను ఉడుతగా వర్ణిస్తుంది:

స్క్విరెల్ SAM

వాస్తవానికి, SAM ఒక YAML మోడల్. మోడల్‌లో, మేము అనువర్తనాన్ని మరియు దానికి అవసరమైన అన్ని వనరులను నిర్వచించాము (వ్యక్తిగత లాంబ్డా విధులు వంటివి). ఫంక్షన్లను మాన్యువల్‌గా అప్‌డేట్ చేయడానికి బదులుగా, మీరు SAM ద్వారా నవీకరణలను పంపిణీ చేయవచ్చు, ఇది మీ కోసం దీన్ని నిర్వహిస్తుంది మరియు అన్ని ఫంక్షన్‌లను ఏకకాలంలో అప్‌డేట్ చేస్తుంది.

SAM అనేది AWS CloudFormation యొక్క పొడిగింపు. వారు ఒకే వాక్యనిర్మాణాన్ని పంచుకుంటారు, కాని SAM ఆప్టిమైజ్ చేయబడింది మరియు లాంబ్డా కోసం ప్రత్యేకంగా రూపొందించబడింది. క్రొత్త మార్పు చేసినప్పుడు మరియు అమలు చేయబడినప్పుడు, SAM మోడల్ యొక్క ప్రారంభ విస్తరణ సమయంలో సృష్టించిన క్లౌడ్ఫార్మేషన్ స్టాక్‌ను నవీకరిస్తుంది.

SAM కేవలం YAML ఫైల్ కాబట్టి, ఇది అన్ని ఫంక్షన్లతో పాటు వెర్షన్ ద్వారా పర్యవేక్షించబడుతుంది మరియు నియంత్రించబడుతుంది. Git నుండి నేరుగా ఉత్పత్తి మరియు పంపిణీని ఆటోమేట్ చేయడానికి CI / CD పైప్‌లైన్‌లో చేర్చడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. ప్రతిదీ ఏర్పాటు చేయబడినప్పుడు, మీరు లాంబ్డా ఫంక్షన్లను Git రిపోజిటరీలో నిల్వ చేయవచ్చు మరియు మీరు క్రొత్త కమిట్‌లను నెట్టివేసిన ప్రతిసారీ, కోడ్‌పైప్‌లైన్ కొత్త మార్పులను తీసుకుంటుంది మరియు క్రొత్త లాంబ్డా సంస్కరణను సృష్టించడానికి స్వయంచాలకంగా SAM పంపిణీని చేస్తుంది. ట్రాఫిక్ బ్యాలెన్సింగ్ మారుపేర్లను ఉపయోగించడం ద్వారా సంస్కరణల మధ్య ట్రాఫిక్ కదలికను కూడా ఇది నెమ్మదిస్తుంది, ఇది సమస్యలు మారడానికి ముందు లోపాలను గుర్తించడంలో మీకు సహాయపడుతుంది.

లాంబ్డా పంపిణీలను ఆటోమేట్ చేయడానికి CI / CD పైప్‌లైన్‌లో SAM ను ఉపయోగించడం గురించి మీరు మరింత సమాచారం కావాలనుకుంటే, మీరు మా గైడ్‌ను ఇక్కడ చదవవచ్చు. ప్రస్తుతానికి, మేము SAM ను ఉపయోగించడం మరియు CLI నుండి మాన్యువల్ డిప్లాయ్‌మెంట్‌లను అమలు చేయడంపై దృష్టి పెడతాము.

SAM ఫైల్ ఎలా వ్రాయాలి

ఒక సాధారణ SAM ఫైల్ ఈ ప్రాథమిక ఆకృతిని అనుసరిస్తుంది:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: An AWS Serverless Specification template describing your function
Resources:
  HelloWorld:
    Type: AWS::Serverless::Function
    Properties:
      Handler:  HelloWorld/index.handler
      Runtime: nodejs8.10

ఈ మోడల్ కొన్ని కాన్ఫిగరేషన్ వేరియబుల్స్ ను నిర్వచిస్తుంది, కాబట్టి, “రిసోర్సెస్” విభాగంలో, ఇది లాంబ్డా ఫంక్షన్లను పేరు ద్వారా నిర్వచిస్తుంది. ఉదాహరణకు, ఇక్కడ మేము “హలోవర్ల్డ్” అనే ఫంక్షన్‌ను సృష్టిస్తున్నాము. ఈ ఫంక్షన్ చురుకుగా ఉంది nodejs8.10మరియు దాని మేనేజర్ (ప్రారంభ స్థానం) a లోని ఉప డైరెక్టరీలో ఉంది index.js ఫైల్.

మేము ఈ మోడల్‌ను ఇలా సేవ్ చేయవచ్చు template.ymlమరియు ఫంక్షన్ కోడ్ ఉన్న వ్యక్తిగత డైరెక్టరీల పక్కన ఉన్న ప్రాజెక్ట్ డైరెక్టరీలో ఉంచండి.

ProjectDirectory
  |- template.yml
  |- HelloWorld
      |-index.js

ఇది ఇప్పటికే లాంబ్డా విధులను నిర్వహించడానికి చాలా సులభమైన మార్గాన్ని సూచిస్తుంది. బహుళ విధులను ఒకే మోడల్‌గా వర్గీకరించవచ్చు మరియు అన్నీ ఒకేసారి పంపిణీ చేయబడతాయి.

అయితే, లాంబ్డా కేవలం కోడ్ మాత్రమే కాదు మరియు పని చేయడానికి చాలా ఎక్కువ కాన్ఫిగరేషన్ అవసరం. ముఖ్యంగా, లాంబ్డా ఫంక్షన్లకు యాక్టివేషన్ కోసం ఒక సంఘటన అవసరం. మీరు ఒక ఫంక్షన్ కోసం “గుణాలు” విభాగంలో నిర్వచించవచ్చు. ఉదాహరణకు, API గేట్‌వే ద్వారా సక్రియం చేయవలసిన ఫంక్షన్‌ను సెట్ చేయడానికి

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: An AWS Serverless Specification template describing your function
Resources:
  HelloWorld:
    Type: AWS::Serverless::Function
    Properties:
      Handler:  HelloWorld/index.handler
      Runtime: nodejs8.10
      Events:
        HelloWorldApi:
          Type: Api
          Properties:
            Path: /helloworld
            Method: GET

మోహరించినప్పుడు, లాంబ్డా ప్రాజెక్ట్ కోసం కొత్త API గేట్‌వే స్వయంచాలకంగా క్లౌడ్ ఫార్మేషన్‌లో SAM చే సృష్టించబడుతుంది మరియు పేర్కొన్న మార్గాల్లో కొత్తగా సృష్టించిన ఫంక్షన్‌కు అనుసంధానించబడుతుంది.

SAM అన్ని ఇతర రకాల లాంబ్డా ఈవెంట్ మూలాలకు మద్దతు ఇస్తుంది. మీరు SAM గితుబ్ పేజీలో ఇతర రకాల కోసం మరిన్ని డాక్యుమెంటేషన్లను కనుగొనవచ్చు.

SAM కేవలం లాంబ్డా ఫంక్షన్ల కంటే ఎక్కువ పంపిణీ చేయగలదు. ఇది క్లౌడ్ ఫార్మేషన్ యొక్క పూర్తి పొడిగింపు కాబట్టి, మీరు అనువర్తనానికి అవసరమైన ఇతర వనరులను SAM నుండి పంపిణీ చేయవచ్చు. ఉదాహరణకు, API గేట్‌వేతో లాంబ్డాను ఉపయోగించండి, మీ ఫంక్షన్‌ను ప్రారంభించడానికి మీరు API గేట్‌వే అధికారాన్ని అభ్యర్థించాలి. కింది కోడ్ బిట్‌తో మీరు దీన్ని చేయవచ్చు AWS::Lambda::Permission వనరు:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: An AWS Serverless Specification template describing your function
Resources:
  HelloWorld:
    Type: AWS::Serverless::Function
    Properties:
      Handler:  HelloWorld/index.handler
      Runtime: nodejs8.10
  HelloWorldPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName:
        Fn::GetAtt:
        - HelloWorld
        - Arn
      Principal: apigateway.amazonaws.com
      SourceArn:
        Fn::Sub: arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:*/*/*/*

ఇది కొంచెం క్లిష్టంగా ఉంటుంది, కానీ ప్రాథమికంగా ఇది ఫంక్షన్‌ను ప్రారంభించడానికి API గేట్‌వే అనుమతి ఇస్తుంది FunctionName ఆస్తి. ది Fn::GetAtt ఇది ఒక అంతర్గత ఫంక్షన్, ఇది “హలోవర్ల్డ్” ఫంక్షన్ కోసం ARN ను తిరిగి ఇస్తుంది, ఎందుకంటే ఖచ్చితమైన ARN ఏమిటో మీకు తెలియదు.

ఇది SAM చేయగల ప్రతిదాని యొక్క ఉపరితలం మాత్రమే గోకడం. SAM మోడల్ స్పెసిఫికేషన్ గురించి మరింత తెలుసుకోవడానికి, మీరు పూర్తి గితుబ్ స్కీమాను చూడవచ్చు లేదా SAM ను ఉపయోగించడం కోసం AWS డెవలపర్ గైడ్స్ చదవవచ్చు.

SAM ఫైల్ పంపిణీ

SAM ఫైల్ వాస్తవానికి ఏదైనా చేయాలంటే, అది పంపిణీ చేయబడాలి. మీరు కోడ్‌పైప్‌లైన్ ఉపయోగిస్తుంటే ఇది స్వయంచాలకంగా నిర్వహించబడుతుంది, కానీ మీరు పంపిణీని కూడా మాన్యువల్‌గా సక్రియం చేయవచ్చు, ఇది ప్రారంభకులకు ఉత్తమమైనది.

SAM దాని స్వంత CLI ని కలిగి ఉంది, ఇది ప్రామాణిక AWS ఒకటి నుండి వేరు. మీరు దీన్ని పైప్ నుండి ఇన్‌స్టాల్ చేయవచ్చు:

pip install aws-sam-cli

మొదట, మీరు ప్రతిదీ సర్దుకుని, కళాఖండాలను S3 బకెట్‌కు పంపాలి:

sam package 
--template-file template.yml 
--output-template-file package.yml 
--s3-bucket bucket-name

అప్పుడు, మీరు మునుపటి ఆదేశం ద్వారా ఉత్పత్తి చేయబడిన అవుట్పుట్ మోడల్‌ను ఉపయోగించి అమలు చేయవచ్చు:

sam deploy 
--template-file package.yml 
--stack-name sam-hello-world 
--capabilities CAPABILITY_IAM

ఈ ఆదేశం ఈ ఆదేశం ద్వారా నిర్వచించబడిన ఒక నిర్దిష్ట పేరుతో స్టాక్‌ను ఉపయోగిస్తుందని గమనించండి; SAM మోడల్‌లోనే స్టాక్ పేరును సెట్ చేసేది ఏదీ లేదు. మీరు క్రొత్త స్టాక్‌ను పంపిణీ చేయాలనుకుంటే, మీరు ఈ పేరును ఇక్కడ మార్చవచ్చు. లేకపోతే, అదే పేరును ఉంచండి మరియు బదులుగా స్టాక్ నవీకరించబడుతుంది.

SAM పంపిణీ పూర్తయిన తర్వాత, మీరు మీ ఫంక్షన్లతో క్రొత్త అనువర్తనాన్ని, అలాగే క్లౌడ్ ఫార్మేషన్‌లో క్రొత్త స్టాక్‌ను చూస్తారు:

క్లౌడ్ఫర్మేషన్ స్టాక్

Source link