लेयर्ड लैंब्डा: AWS SAM और पायथन
कोड की पुन: उपयोगिता कुछ भी नुकसान नहीं पहुंचाती
यहां एक कदम-कदम पर निर्देश हैं कि कैसे AWS Lambdas में लेयर जोड़ें - पायथन में।
हम सामान्य HelloWorld टेम्पलेट उदाहरण द्वारा जनरेट किए गए बेस कोड का उपयोग करेंगे।
हां, बिना संदेह आपको पायथन
और AWS SAM के चीजों को पहले से इंस्टॉल और सेट करना होगा।
नमूना प्रोजेक्ट बनाना और चलाना
अब sam init
को कॉल करें और प्रश्नों के उत्तर इस तरह दें:
यह एक समारोह दिखाएगा:
और प्रोजेक्ट फ़ोल्डर के साथ संरचना और कुछ फ़ाइलें बनाएगा। 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
में कुछ कोड जोड़ें
फ़ंक्शन को इस कोड का उपयोग करने के लिए अपडेट करें
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\"}"}
अच्छा।