日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lambda运行时内部:窥视无服务器巢穴

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lambda运行时内部:窥视无服务器巢穴 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有沒有想過lambda里面是什么樣的? 不要懷疑了 讓我們找出答案。

自從2014年問世以來,AWS的lambda函數就成為了一個熱門話題,在無服務器計算領域開辟了全新的歷史。 無狀態,零維護,按次執行的好東西實際上正在改變(即使不連根拔起)云計算范式的根源。 當其他玩家(例如Google和MS Azure)加入游戲時,AWS顯然是贏家。

好吧,拋開說教,它到底看起來像一個lambda函數內部?

根據AWS專家的說法,lambda 由容器技術驅動 ; 確切地說,是AWS EC2容器服務(ECS) 。 因此,在這一點上,lambda只是一個Docker容器 ,外部訪問受限。 但是,我們在容器內運行的功能代碼幾乎可以無限制地訪問它(root特權除外),包括文件系統,內置和已安裝的命令以及CLI工具,系統元數據和統計信息,日志等。 對于普通的lambda作者而言,它不是很有用,但是如果您打算深入研究OS級的內容,可能會有用。

顯然,探索所有這些操作系統級產品的最簡單方法是讓CLI(shell)訪問lambda環境。 不幸的是,目前這還不可能。 盡管如此,結合NodeJS運行時提供的極其簡單的語法以及lambda具有幾分鐘的保持活動時間這一事實,我們可以輕松地編寫一個可以模擬shell的十層lambda。 盡管無法以這種方式建立真正的“會話”(例如,您無法在實時更新視圖的top運行),但是您可以重復運行一系列命令,就像與用戶控制臺進行交互一樣。

let {exec} = require('child_process');exports.handle = (event, context, callback) => {console.log(event);exec(event.cmd, (err, stdout, stderr) => {console.log(stdout);if (err) console.log(stderr);callback(undefined, {statusCode: 200});}); }

對我們來說幸運的是,由于代碼僅是十行代碼,零外部依賴關系,因此我們可以通過單個CloudFormation 模板部署整個lambda(包括代碼,配置和執行角色) :

AWSTemplateFormatVersion: '2010-09-09' Resources:shell:Type: AWS::Lambda::FunctionProperties:FunctionName: shellHandler: index.handleRuntime: nodejs6.10Code:ZipFile: >let {exec} = require('child_process');exports.handle = (event, context, callback) => {console.log(event);exec(event.cmd, (err, stdout, stderr) => {console.log(stdout);if (err) console.log(stderr);callback(undefined, {statusCode: 200});});}Timeout: 60Role:Fn::GetAtt:- role- Arnrole:Type: AWS::IAM::RoleProperties:ManagedPolicyArns:- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRoleAssumeRolePolicyDocument:Version: 2012-10-17Statement:- Action: sts:AssumeRoleEffect: AllowPrincipal:Service: lambda.amazonaws.com

部署整個過程非常簡單:

aws cloudformation deploy --stack-name shell --template-file /path/to/template.yaml --capabilities CAPABILITY_IAM

或選擇模板并將其上傳到CloudFormation儀表板 ,以防您沒有AWS CLI (討厭)的方式進行此操作。

部署后,只需使用包含所需shell命令的有效負載調用lambda即可:

{"cmd":"the command to be executed"}

如果您具有AWS CLI,則通過以下shell代碼段調用時,整個過程將變得更加性感:

echo -n "> " read cmd while [ "$cmd" != "exit" ]; doechoaws lambda invoke --function-name shell --payload "{\"cmd\":\"$cmd\"}" --log-type Tail /tmp/shell.log --query LogResult --output text | base64 -dechoecho -n "> "read cmd done

使用此腳本后,您只需要調用該腳本即可。 您將得到一個偽造的“ shell”,您可以在其中執行您期待已久的命令,lambda將執行該命令并將輸出立即返回到控制臺,從而使您回到“ shell”提示符下:

> freeSTART RequestId: c143847d-12b8-11e8-bae7-1d25ba5302bd Version: $LATEST 2018-02-16T01:28:56.051Z c143847d-12b8-11e8-bae7-1d25ba5302bd { cmd: 'free' } 2018-02-16T01:28:56.057Z c143847d-12b8-11e8-bae7-1d25ba5302bd total used free shared buffers cached Mem: 3855608 554604 3301004 200 44864 263008 -/+ buffers/cache: 246732 3608876 Swap: 0 0 0END RequestId: c143847d-12b8-11e8-bae7-1d25ba5302bd REPORT RequestId: c143847d-12b8-11e8-bae7-1d25ba5302bd Duration: 6.91 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 82 MB>

通過這種方式,您可以了解有關Lambda函數的棲息地和生活方式的很多知識。 首先,我開始了解到容器運行時環境由Amazon Linux實例組成,具有大約4GB(可能是共享的)備忘錄和幾個(不可用的)相當大的磁盤掛載(除了“推薦使用” 500MB)安裝在/tmp ):

> dfSTART RequestId: bb0034fa-12ba-11e8-8390-cb81e1cfae92 Version: $LATEST 2018-02-16T01:43:04.559Z bb0034fa-12ba-11e8-8390-cb81e1cfae92 { cmd: 'df' } 2018-02-16T01:43:04.778Z bb0034fa-12ba-11e8-8390-cb81e1cfae92 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 30830568 3228824 27501496 11% / /dev/loop8 538424 440 526148 1% /tmp /dev/loop9 128 128 0 100% /var/taskEND RequestId: bb0034fa-12ba-11e8-8390-cb81e1cfae92 REPORT RequestId: bb0034fa-12ba-11e8-8390-cb81e1cfae92 Duration: 235.44 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 22 MB> cat /etc/*-releaseSTART RequestId: 6112efb9-12bd-11e8-9d14-d5c0177bc74f Version: $LATEST 2018-02-16T02:02:02.190Z 6112efb9-12bd-11e8-9d14-d5c0177bc74f { cmd: 'cat /etc/*-release' } 2018-02-16T02:02:02.400Z 6112efb9-12bd-11e8-9d14-d5c0177bc74f NAME="Amazon Linux AMI" VERSION="2017.03" ID="amzn" ID_LIKE="rhel fedora" VERSION_ID="2017.03" PRETTY_NAME="Amazon Linux AMI 2017.03" ANSI_COLOR="0;33" CPE_NAME="cpe:/o:amazon:linux:2017.03:ga" HOME_URL="http://aws.amazon.com/amazon-linux-ami/" Amazon Linux AMI release 2017.03END RequestId: 6112efb9-12bd-11e8-9d14-d5c0177bc74f REPORT RequestId: 6112efb9-12bd-11e8-9d14-d5c0177bc74f Duration: 209.82 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 22 MB>

的確,除了數十種其他可能的增強功能之外,輸出格式(主要是CloudWatch Logs的原始格式)可以得到顯著改善。 因此,讓我們在評論下進行討論!

翻譯自: https://www.javacodegeeks.com/2018/02/inside-lambda-runtime-peek-serverless-lair.html

總結

以上是生活随笔為你收集整理的Lambda运行时内部:窥视无服务器巢穴的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产日韩一区二区三区 | 噜噜噜久久| 相亲对象是问题学生在线观看 | 午夜激情导航 | 久久蜜桃av | 麻豆电影网站 | 免费裸体视频网站 | 99视频在线精品免费观看2 | 国产精品无码免费在线观看 | 亚洲色图21p| 麻豆久久久久 | av第一福利大全导航 | 国产情侣第一页 | 精品毛片在线观看 | 欧美一区二区三区视频 | 色视频网 | 日本天堂在线观看 | 欧美黑人精品 | 射久久| 国产黄色在线网站 | 日本日皮视频 | 欧美成人乱码一二三四区免费 | 日韩经典一区二区三区 | 亚洲一二三四在线 | 国产男女裸体做爰爽爽 | 折磨小男生性器羞耻的故事 | 亚洲av无码一区东京热久久 | www.白白色 | 日本高清黄色 | 国产激情无码一区二区三区 | 日本女优黄色 | 91香蕉在线视频 | 超碰日韩在线 | 韩产日产国产欧产 | 中国老熟妇自拍hd发布 | 黑人极品videos精品欧美裸 | 婷婷麻豆 | 欧美成年人| 亚洲我射av | www.久操| 手机成人在线 | 91国在线啪 | 亚洲欧美日韩一区二区三区四区 | 97在线免费视频 | xxx一区二区 | 天天插天天操天天干 | 大尺度做爰啪啪床戏 | 欧美成视频| 成人免费观看cn | 亚洲欧洲成人精品久久一码二码 | 先锋av网 | 少妇人妻丰满做爰xxx | 在线观看日韩 | 国产高清在线视频观看 | 中文字幕成人网 | www.中文字幕av | 美女一区二区三区 | 天天骑夜夜操 | 国产欧美久久久精品免费 | 91热在线 | 一区二区在线视频观看 | 欧美日本高清视频 | 久久疯狂做爰流白浆xx | 免费爱爱网站 | 麻豆精品免费 | 中文字幕日韩有码 | 少妇精品一区 | 日本韩国免费观看 | h狠狠躁死你h高h | 99国产精品久久久久久久 | 欧美激情久久久久久 | 精品中文字幕在线 | 成人一区二区视频 | 久久无码人妻精品一区二区三区 | 91人人澡人人爽人人精品 | 福利一二区 | 亚洲 自拍 另类 欧美 丝袜 | av超碰| 秋霞av一区二区三区 | 色戒在线免费 | 日韩在线观看av | 伊人涩涩 | 制服下的诱惑暮生 | 毛片最新网址 | 国产高清在线精品 | 国产成人自拍视频在线观看 | av在线不卡观看 | 毛片视| 亚洲国产av一区 | 亚洲砖区区免费 | 日本国产精品 | 国产在线网址 | 人妻丰满熟妇av无码区不卡 | 日本丰满少妇做爰爽爽 | 99干99| 在线免费视频一区二区 | 一级黄色片在线免费观看 | 国产亚洲福利 | 欧美大尺度床戏做爰 |