लेयर्ड लैंब्डा: AWS SAM और पायथन

कोड की पुन: उपयोगिता कुछ भी नुकसान नहीं पहुंचाती

Page content

यहां एक कदम-कदम पर निर्देश हैं कि कैसे AWS Lambdas में लेयर जोड़ें - पायथन में।
हम सामान्य HelloWorld टेम्पलेट उदाहरण द्वारा जनरेट किए गए बेस कोड का उपयोग करेंगे।

letters-layers

हां, बिना संदेह आपको पायथन
और AWS SAM के चीजों को पहले से इंस्टॉल और सेट करना होगा।

नमूना प्रोजेक्ट बनाना और चलाना

अब sam init को कॉल करें और प्रश्नों के उत्तर इस तरह दें:

sam-init-answers

यह एक समारोह दिखाएगा:

sam-init-summary

और प्रोजेक्ट फ़ोल्डर के साथ संरचना और कुछ फ़ाइलें बनाएगा। template.yaml बहुत सामान्य है।

vs-code-template-yaml

और फ़ंक्शन कोड भी (मैं अतिरिक्त जनरेट किए गए टिप्पणियों को हटा दूंगा)

import json

def lambda_handler(event, context):

    return {
        "statusCode": 200,
        "body": json.dumps({
            "message": "hello world",
            # "location": ip.text.replace("\n", "")
        }),
    }

अब इस फ़ंक्शन को स्थानीय रूप से बनाएं और चलाएं

sam validate && sam build --use-container && sam local invoke HelloWorldFunction --event events/event.json

प्रतिक्रिया के अंत में नीचे दिए गए एक के करीब होना चाहिए:

.....
START RequestId: 6da35464-7c6a-40b2-bcc0-60796994317a Version: $LATEST
END RequestId: 737ae28d-2b99-49e6-baae-40ab9bb99599
REPORT RequestId: 737ae28d-2b99-49e6-baae-40ab9bb99599  Init Duration: 0.04 ms  Duration: 28.40 ms      Billed Duration: 29 ms  Memory Size: 128 MB     Max Memory Used: 128 MB
{"statusCode": 200, "body": "{\"message\": \"hello world\"}"}

लेयर जोड़ें

template.yaml में लेयर विवरण जोड़ें

दो भाग:

  • ApiSharedLayer - इसका विवरण ब्लॉक
  • Layers: … - !Ref ApiSharedLayer - इसका उपयोग करने वाले फ़ंक्शन में
.....
Resources:
# added code start
    ApiSharedLayer:
        Type: AWS::Serverless::LayerVersion
        Properties:
            ContentUri: api_shared_layer/
            LayerName: api-shared-layer
            Description: My api-shared-layer
            CompatibleRuntimes:
                - python3.9
            RetentionPolicy: Delete                
        Metadata:
            BuildMethod: python3.9   # Required to have AWS SAM build this layer
# added code end

  HelloWorldFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.9
      Architectures:
        - x86_64
# added code start
      Layers:
        - !Ref ApiSharedLayer
# added code end
      Events:
.....

लेयर कोड जोड़ें

फ़ोल्डर api_shared_layer में कुछ कोड जोड़ें

layer code

फ़ंक्शन को इस कोड का उपयोग करने के लिए अपडेट करें

import json
from api_version import API_VERSION

def lambda_handler(event, context):

    return {
        "statusCode": 200,
        "body": json.dumps({
            "message": "hello world",
            "version": API_VERSION
        }),
    }

परीक्षण चलाएं

फिर से:

sam validate && sam build --use-container && sam local invoke HelloWorldFunction --event events/event.json

प्रतिक्रिया के अंत में नीचे दिए गए एक के करीब होना चाहिए:

.....
START RequestId: 88eb1887-ae94-479d-a059-f87c4b71a282 Version: $LATEST
END RequestId: 927f7d05-4d13-44ba-9377-03e6d3e8bacf
REPORT RequestId: 927f7d05-4d13-44ba-9377-03e6d3e8bacf  Init Duration: 0.72 ms  Duration: 34.80 ms      Billed Duration: 35 ms  Memory Size: 128 MB     Max Memory Used: 128 MB
{"statusCode": 200, "body": "{\"message\": \"hello world\", \"version\": \"1.1.1\"}"}

अच्छा।

उपयोगी लिंक