से कॉल aws-cli क्या AWS Lambda के अंदर aws-cli निष्पादित करने का कोई तरीका है? यह पूर्व-स्थापित प्रतीत नहीं होता है। (मैंने नोड.जेएस बाल प्रक्रिया के माध्यम से "जो aws" के साथ जांच की है, और यह अस्तित्व में नहीं था।)एडब्ल्यूएस लैम्ब्डा
उत्तर
जब तक नहीं आप इसे (और इसके निर्भरता के सभी) के हिस्से के रूप में शामिल हैं आपका परिनियोजन पैकेज। फिर भी आपको इसे अजगर के भीतर से कॉल करना होगा क्योंकि लैम्ब्डा आपको शेल कमांड निष्पादित करने की अनुमति नहीं देता है। n यदि आप वहां जाते हैं, तो मैं लैम्ब्डा फ़ंक्शन में सिंक करने की कोशिश करने की अनुशंसा नहीं करता क्योंकि आप निष्पादन समय के अधिकतम 5 मिनट तक सीमित हैं। इसके शीर्ष पर, अतिरिक्त स्पिन-अप समय कई मामलों में इसके लायक नहीं है क्योंकि आप प्रत्येक 100ms खंड के लिए भुगतान कर रहे हैं।
तो आप कर सकते हैं, लेकिन आपको शायद नहीं करना चाहिए।
संपादित करें: लैम्ब्डा आप खोल आदेशों
aws-cli python को बंडल करने के तरीके पर एक अच्छा अवलोकन के लिए https://alestic.com/2016/11/aws-lambda-awscli/ देखें लैम्ब्डा में उपयोग के लिए पैकेज – Noah
आप एडब्ल्यूएस नोड.जेएस एसडीके का उपयोग कर सकते हैं जो इसे इंस्टॉल किए बिना लैम्ब्डा में उपलब्ध होना चाहिए।
var AWS = require('aws-sdk');
var lambda = new AWS.Lambda();
lambda.invoke({
FunctionName: 'arn:aws:lambda:us-west-2:xxxx:function:FN_NAME',
Payload: {},
},
function(err, result) {
...
});
जहां तक मेरा बता सकते हैं, सबसे मिल नहीं तो सब CLI कार्यक्षमता पूर्ण प्रलेखन यहाँ देखें:। http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html
धन्यवाद रयान, लेकिन मुझे कुछ फ़ंक्शन चाहिए जो node.js एसडीके में बाहर नहीं निकलें और aws-cli में मौजूद हों, क्योंकि यह aws-cli का उपयोग करना आसान लगता है कुछ मौकों में, जैसे कि बाल्टी में एस 3 सिंक। –
आह, अब मैं देखता हूं। उस स्थिति में ऐसा लगता है कि आपको इसे हर रन पर स्थापित करने की आवश्यकता होगी जो दर्दनाक और अक्षम की तरह लगता है। – Ryan
आप इसे स्थापित नहीं कर सकते हैं, yum और pip install nodejs वातावरण में उपलब्ध नहीं है – halil
मुझे लगता है कि आप कार्रवाई से आपके ट्रिगर तर्क बांट देना चाहिए निष्पादित करने के लिए अनुमति देता है। किसी अन्य ec2 पर aws cli के साथ एक कंटेनर रखें और इसे क्रिया में ट्रिगर करने के लिए aws lambda का उपयोग करें।
आप जावा या नोडजेस कोड लिख सकते हैं और फिर वहां से एडब्ल्यूएस फ़ंक्शन कॉल कर सकते हैं।
aws-cli एक पायथन पैकेज है। इसे एडब्ल्यूएस लैम्ब्डा फ़ंक्शन पर उपलब्ध कराने के लिए आपको इसे अपने फ़ंक्शन ज़िप फ़ाइल से पैक करने की आवश्यकता है।
1) 64-बिट अमेज़ॅन लिनक्स के साथ एक ईसी 2 उदाहरण शुरू करें;
mkdir ~/awscli_virtualenv
virtualenv ~/awscli_virtualenv
3 virtualenv) को सक्रिय करें:
2) एक अजगर virtualenv बनाएं
cd ~/awscli_virtualenv/bin
source activate
4) स्थापित करें एडब्ल्यूएस-CLI और pyyaml:
pip install awscli
python -m easy_install pyyaml
01 virtualenv
sed -i '1 s/^.*$/\#\!\/usr\/bin\/python/' aws
6) को निष्क्रिय करें:
deactivate
7) सभी फाइलों को आप की जरूरत के साथ एक निर्देशिका बनाने
5) एडब्ल्यूएस अजगर स्क्रिप्ट की पहली पंक्ति में बदलें lambda पर aws-cli चलाएं:
cd ~
mkdir awscli_lambda
cd awscli_lambda
cp ~/awscli_virtualenv/bin/aws .
cp -r ~/awscli_virtualenv/lib/python2.7/dist-packages .
cp -r ~/awscli_virtualenv/lib64/python2.7/dist-packages .
इसके बाद के संस्करण कोड के साथ var Q = require('q');
var path = require('path');
var spawn = require('child-process-promise').spawn;
exports.handler = function(event, context) {
var folderpath = '/folder/to/sync';
var s3uel = 's3://name-of-your-bucket/path/to/folder';
var libpath = path.join(__dirname, 'lib');
var env = Object.create(process.env);
env.LD_LIBRARY_PATH = libpath;
var command = path.join(__dirname, 'aws');
var params = ['s3', 'sync', '.', s3url];
var options = { cwd: folderpath };
var spawnp = spawn(command, params, options);
spawnp.childProcess.stdout.on('data', function (data) {
console.log('[spawn] stdout: ', data.toString());
});
spawnp.childProcess.stderr.on('data', function (data) {
console.log('[spawn] stderr: ', data.toString());
});
return spawnp
.then(function(result) {
if (result['code'] != 0) throw new Error(["aws s3 sync exited with code", result['code']].join(''));
return result;
});
}
index.js फ़ाइल बनाएँ (:
उदाहरण के लिए (NodeJS): 0
8) एक समारोह (अजगर या NodeJS) कि एडब्ल्यूएस-CLI फोन करेगा बनाएं या अपने कोड) पर ~/awscli_lambda/
9) index.js ज़िप सब कुछ (एडब्ल्यूएस-CLI फ़ाइलों और निर्भरता और अपने समारोह):
cd ~
zip -r awscli_lambda.zip awscli_lambda
- 1. एडब्ल्यूएस लैम्ब्डा
- 2. एडब्ल्यूएस लैम्ब्डा
- 3. एडब्ल्यूएस लैम्ब्डा
- 4. एडब्ल्यूएस लैम्ब्डा
- 5. एडब्ल्यूएस लैम्ब्डा
- 6. एडब्ल्यूएस लैम्ब्डा
- 7. एडब्ल्यूएस लैम्ब्डा
- 8. शुरू/एडब्ल्यूएस लैम्ब्डा
- 9. केवल एडब्ल्यूएस लैम्ब्डा
- 10. एडब्ल्यूएस लैम्ब्डा फ़ंक्शन
- 11. Asyncpg और एडब्ल्यूएस लैम्ब्डा
- 12. एडब्ल्यूएस लैम्ब्डा: जावा
- 13. एडब्ल्यूएस लैम्ब्डा फ़ंक्शन
- 14. एडब्ल्यूएस लैम्ब्डा छवि दूषित
- 15. एडब्ल्यूएस लैम्ब्डा फ़ंक्शन
- 16. एडब्ल्यूएस लैम्ब्डा से एसएनएस
- 17. _multiprocessing.SemLock एडब्ल्यूएस लैम्ब्डा
- 18. एडब्ल्यूएस लैम्ब्डा - क्लाउडवॉच इवेंट प्रकार
- 19. एक नोडजेएस एडब्ल्यूएस लैम्ब्डा फंक्शन
- 20. टेराफॉर्म पर एडब्ल्यूएस लैम्ब्डा वीपीसी
- 21. क्रोम - एडब्ल्यूएस लैम्ब्डा के लिएहेडलेस?
- 22. एडब्ल्यूएस लैम्ब्डा और जावा संगामिति
- 23. एडब्ल्यूएस लैम्ब्डा कनेक्शन टाइमआउट Elasticache
- 24. एडब्ल्यूएस लैम्ब्डा में पाइथन अनुरोध
- 25. एडब्ल्यूएस-एपीआई गेटवे से लैम्ब्डा
- 26. एडब्ल्यूएस लैम्ब्डा त्रुटि: अनजिप आकार 262144000 बाइट्स
- 27. एडब्ल्यूएस लैम्ब्डा पायथन libssl सी लाइब्रेरी
- 28. एक एडब्ल्यूएस लैम्ब्डा को एक फॉर्म पोस्ट
- 29. अमेज़न Kinesis और एडब्ल्यूएस लैम्ब्डा पुनर्प्रयास
- 30. Google क्लाउड फ़ंक्शन या एडब्ल्यूएस लैम्ब्डा
इस पर कोई प्रगति? मैं एक ही प्रश्न की तलाश में हूं, मुझे "aws opsworks रजिस्टर" कमांड का उपयोग करने की आवश्यकता है। यह बेकार है कि वे सभी लैम्ब्डा भाषाओं में यह क्षमता प्रदान नहीं करते हैं – Casper