
AWS Lambdaã®äœ¿ãæ¹
AWS Lambda
AWS LambdaïŒã©ã³ãïŒã¯ãAmazon Web ServicesïŒã¢ããŸã³ãŠã§ããµãŒãã¹ïŒã®ãµãŒãã¹ã®äžã€ã§ãã³ã³ãã¥ãŒã¿ãŒããã°ã©ã ïŒã³ãŒãïŒãå®è¡ã§ãããµãŒãã¹ã§ãããµãŒããŒãçšæããå¿ èŠããªããã³ãŒããã¢ããããŒãããŠå®è¡ããã ãã§æ©èœããŸããããã¯ãããã°ã©ã ãå®è¡ããã®ã«æéããéããããã«ãããã«äœæ¥ãå§ããããã®ã§äŸ¿å©ã§ãã
ãªã Lambda ã䟿å©ãªã®ã
ãµãŒããŒã¬ã¹: Lambda ã¯ãµãŒããŒã¬ã¹ãšåŒã°ããæè¡ã䜿ã£ãŠããŸãããµãŒããŒã¬ã¹ã¯ããµãŒããŒã管çããå¿ èŠããªããã³ãŒããå®è¡ã§ããç°å¢ãæäŸãããã®ã§ããããã«ãããéçºè ã¯ãµãŒããŒã®èšå®ã管çãæ°ã«ãããã³ãŒãã®éçºã«éäžã§ããŸãã
ã¹ã±ãŒã©ãã«: Lambda ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å©çšãå¢ãããæžã£ããããŠããèªåçã«å¯Ÿå¿ã§ããæ©èœããããŸããããã«ãããåžžã«é©åãªãªãœãŒã¹ãå©çšã§ãããããããã©ãŒãã³ã¹ãåäžããŸãã
ã³ã¹ãå¹ç: Lambda ã¯ãå®éã«ã³ãŒããå®è¡ããããšãã ã課éãããã®ã§ãã³ã¹ããæããããŸããããã¯ãåŸæ¥ã®ãµãŒããŒã«æ¯ã¹ãŠããéãç¯çŽã§ããããšãæå³ããŸãã
Lambda ã®äœ¿ãæ¹
Lambda ã¯ãããŸããŸãªã·ãã¥ãšãŒã·ã§ã³ã§äœ¿ãããŸããäŸãã°ïŒ
ã€ãã³ãããªãã³: ä»ã® AWS ãµãŒãã¹ïŒS3ãDynamoDB ãªã©ïŒããã€ãã³ããåãåããããã«å¿ããŠã³ãŒããå®è¡ã§ããŸããäŸãã°ãS3 ã«ãã¡ã€ã«ãã¢ããããŒãããããšãèªåçã«ç»åããªãµã€ãºãã Lambda 颿°ãå®è¡ããããšãã§ããŸãã
API Gateway ãšã®çµã¿åãã: Lambda ã API Gateway ãšçµã¿åãããŠãç¬èªã® API ãäœæã§ããŸããããã«ããããŠã§ããµã€ããã¢ããªã±ãŒã·ã§ã³ããããŒã¿ãååŸã»éä¿¡ããããšãã§ããŸãã
ã¹ã±ãžã¥ãŒã«ãããã¿ã¹ã¯: Lambda ã¯ã宿çã«å®è¡ããã¿ã¹ã¯ïŒããã¯ã¢ãããã¡ãŒã«éä¿¡ãªã©ïŒã«ã䜿ãããŸããããã«ããã宿çãªã¡ã³ããã³ã¹äœæ¥ãèªååã§ããŸãã
Lambda ãšä»ã® AWS ãµãŒãã¹ãšã®é¢ä¿
Lambda ã¯ãä»ã® AWS ãµãŒãã¹ãšé£æºããŠæ©èœãæ¡åŒµã§ããŸãã以äžã«ãLambda ãã©ã®ããã«ä»ã® AWS ãµãŒãã¹ãšé£æºãããã説æããŸãã
Amazon S3: S3 ã¯ããã¡ã€ã«ãä¿åã§ãããªã³ã©ã€ã³ã¹ãã¬ãŒãžãµãŒãã¹ã§ããLambda ãš S3 ãçµã¿åããããšããã¡ã€ã«ãã¢ããããŒãããããšããåé€ããããšããªã©ãç¹å®ã®ã€ãã³ããçºçãããšãã« Lambda 颿°ãèªåçã«å®è¡ã§ããŸãã
Amazon EC2: EC2 ã¯ãä»®æ³ãµãŒããŒãæäŸãããµãŒãã¹ã§ããLambda ãš EC2 ãçµã¿åãããããšã§ãEC2 ã€ã³ã¹ã¿ã³ã¹ã®ç¶æ 倿Žãã¢ã©ãŒã çºçæã« Lambda 颿°ãå®è¡ããèªåçã«ã¹ã±ãŒãªã³ã°ãéç¥ãªã©ã®ã¢ã¯ã·ã§ã³ãè¡ãããšãã§ããŸãã
Amazon DynamoDB: DynamoDB ã¯ãé«éã§ã¹ã±ãŒã©ãã«ãª NoSQL ããŒã¿ããŒã¹ãµãŒãã¹ã§ããLambda ã䜿ã£ãŠãDynamoDB ã®ããŒãã«ã«ããŒã¿ã远å ã»æŽæ°ã»åé€ããããšãã«ãèªåçã«é¢é£ããåŠçãå®è¡ã§ããŸãã
AWS Step Functions: Step Functions ã¯ãè€æ°ã® Lambda 颿°ãã€ãªããŠãããè€éãªåŠçãå®çŸããããã®ãµãŒãã¹ã§ããLambda 颿°ãã¹ããããšããŠçµã¿åãããé åºä»ãã䞊åå®è¡ããšã©ãŒåŠçãªã©ãç°¡åã«å®è£ ã§ããŸãã
AWS Lambda 颿°ã
ããªã¬ãŒããPython ã®ã³ãŒã
import json
import boto3
def lambda_handler(event, context):
# S3ã€ãã³ããããã±ããåãšãªããžã§ã¯ãããŒãååŸ
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
# ãã°ã«ãã¡ã€ã«æ
å ±ãåºå
print(f"File uploaded to S3: Bucket={bucket}, Key={key}")
return {
'statusCode': 200,
'body': json.dumps('File processed successfully!')
}次ã«ããã® Lambda 颿°ãããªã¬ãŒããããã«ãS3 ãã±ããã®ã€ãã³ãéç¥èšå®ãè¡ããŸãã以äžã®æé ã§èšå®ã§ããŸãã
AWS ãããžã¡ã³ãã³ã³ãœãŒã«ã«ãã°ã€ã³ããS3 ãµãŒãã¹ã«ç§»åããŸãã
ããªã¬ãŒã«äœ¿çšãããã±ãããéžæãããããããã£ãã¿ããã¯ãªãã¯ããŸãã
ãã€ãã³ãéç¥ããã¯ãªãã¯ãããã€ãã³ãéç¥ãäœæããã¿ã³ãã¯ãªãã¯ããŸãã
ã€ãã³ãéç¥ã®ååãå ¥åãããã€ãã³ã ãœãŒã¹ãã§ããã¹ãŠã®ãªããžã§ã¯ãäœæã€ãã³ãããéžæããŸãã
ãLambda 颿°ããéžæããäœæãã Lambda 颿°ãæå®ããŸãã
ãã€ãã³ãéç¥ãä¿åããã¿ã³ãã¯ãªãã¯ããŠèšå®ãä¿åããŸãã
ããã§ãS3 ãã±ããã«ãã¡ã€ã«ãã¢ããããŒãããããšãèªåçã« Lambda 颿°ãããªã¬ãŒããããã°ã«ãã¡ã€ã«ã®æ å ±ãåºåãããŸãã
ãã®äŸã§ã¯ããã°ã«æ
å ±ãåºåããã ãã§ãããå®éã«ã¯ããã¡ã€ã«ã®å
容ãåæããããä»ã® AWS ãµãŒãã¹ãšé£æºãããããåŠçã Lambda 颿°å
ã§è¡ãããšãã§ããŸãã
Lambda 颿°ã® event ãš context ã«ã€ããŠ
event: ããã¯ãLambda 颿°ãããªã¬ãŒããã€ãã³ãã®æ å ±ãå«ã Python ã®èŸæžã§ãããã®äŸã§ã¯ãS3 ããã®ãã¡ã€ã«ã¢ããããŒãã€ãã³ãã Lambda 颿°ãããªã¬ãŒããŠããŸããevent èŸæžã«ã¯ãã¢ããããŒãããããã¡ã€ã«ã®ãã±ããåããªããžã§ã¯ãããŒïŒãã¡ã€ã«åïŒãªã©ã®æ å ±ãå«ãŸããŠããŸãããã®æ å ±ã䜿çšããŠãLambda 颿°å ã§ããŸããŸãªåŠçãè¡ãããšãã§ããŸãã
context: ããã¯ãLambda 颿°ã®å®è¡ã«é¢ããæ å ±ãšæ©èœãæäŸãããªããžã§ã¯ãã§ããäŸãã°ã颿°ã®å®è¡æéããAWS Lambda ã颿°ãå®è¡ãããªãœãŒã¹ãªã©ã®æ å ±ãå«ãŸããŠããŸãããã®ãªããžã§ã¯ãã¯ãéåžžã颿°å ã§çŽæ¥äœ¿çšããããšã¯å°ãªãã§ãããã¿ã€ã ã¢ãŠãã®ç®¡çãä»ã® AWS ãµãŒãã¹ãšã®é£æºãªã©ã®åŠçã§å¿ èŠã«ãªãããšããããŸãã
äžèšã®ã³ãŒãäŸã§ã¯ãevent èŸæžãããã±ããå (bucket) ãšãªããžã§ã¯ãã㌠(key) ãååŸãããããã®æ å ±ããã°ã«åºåããŠããŸããæåŸã«ãLambda 颿°ã®å®è¡ãæåããããšã瀺ãã¹ããŒã¿ã¹ã³ãŒã 200 ãšã¡ãã»ãŒãžãè¿ããŠããŸãã
S3ã€ãã³ããããã±ããåãšãªããžã§ã¯ãããŒãååŸã«ã€ããŠ
S3ã€ãã³ããããã±ããåãšãªããžã§ã¯ãããŒïŒãã¡ã€ã«åïŒãååŸããŠããŸããããããã®å€æ°ã«ã€ããŠã説æããŸãã
event['Records'][0]ïŒevent ã¯ãLambda 颿°ãããªã¬ãŒããã€ãã³ãã®æ å ±ãå ¥ã£ãèŸæžã§ããRecords ãšããããŒã«ã¯ãã€ãã³ãã®ãªã¹ããå«ãŸããŠããŸããä»åã¯ã1ã€ã®ã€ãã³ãã ããæ³å®ãããŠããããã[0] ã䜿ã£ãŠæåã®ã€ãã³ããååŸããŠããŸãã
['s3']['bucket']['name']ïŒããã¯ãã€ãã³ãããS3ãã±ããã®ååãååŸããããã®ããŒã®éå±€ã§ããã€ãã³ãå ã® s3 ããŒã«ã¯ãS3ã«é¢ããæ å ±ãå«ãŸããŠãããããã« bucket ããŒã®äžã«ã¯ããã±ããã«é¢ããæ å ±ããããŸããæåŸã«ãname ããŒã§ãã±ããåãååŸããŠããŸãã
['s3']['object']['key']ïŒããã¯ãã€ãã³ãããS3ãªããžã§ã¯ãã®ããŒïŒãã¡ã€ã«åïŒãååŸããããã®ããŒã®éå±€ã§ããã€ãã³ãå ã® s3 ããŒã«ã¯ãS3ã«é¢ããæ å ±ãå«ãŸããŠãããããã« object ããŒã®äžã«ã¯ããªããžã§ã¯ãïŒã¢ããããŒãããããã¡ã€ã«ïŒã«é¢ããæ å ±ããããŸããæåŸã«ãkey ããŒã§ãªããžã§ã¯ãããŒïŒãã¡ã€ã«åïŒãååŸããŠããŸãã
以äžã®èª¬æã«ãããã³ãŒãã¯ä»¥äžã®ããã«çè§£ã§ããŸãã
æåã®ã€ãã³ãã®æ å ±ãååŸ (event['Records'][0])
ãã®ã€ãã³ããããã±ããåãååŸ (event['Records'][0]['s3']['bucket']['name'])
ãã®ã€ãã³ããããªããžã§ã¯ãããŒïŒãã¡ã€ã«åïŒãååŸ (event['Records'][0]['s3']['object']['key'])
ç°¡åã«èšãã°ãS3ã«ãã¡ã€ã«ãã¢ããããŒãããããšããã®ã¢ããããŒãã«é¢é£ããã€ãã³ããçºçããŸããLambda颿°ã¯ããã®ã€ãã³ããåãåãããã®ã€ãã³ãã®æ å ±ãå ã«åŠçãè¡ããŸããããã§ã®ãæåã®ã€ãã³ãã®æ å ±ããšã¯ããã®ææ°ã®ã¢ããããŒãã€ãã³ãã®æ å ±ãæããŠããŸããäžåŠçã«ããããããã説æãããšãS3ã«ãã¡ã€ã«ãã¢ããããŒãããããšãã«èµ·ããææ°ã®åºæ¥äºïŒã€ãã³ãïŒã®æ å ±ãååŸããŠãããšããããšã§ãã
ãã°ã«ãã¡ã€ã«æ å ±ãåºåã«ã€ããŠ
ãã°ã«ãã¡ã€ã«æ å ±ãåºåïŒ ãã®è¡ã¯ãprint()颿°ã䜿ã£ãŠãã¢ããããŒãããããã¡ã€ã«ã®æ å ±ããã°ã«åºåããŠããŸããf"File uploaded to S3: Bucket={bucket}, Key={key}"ãšããæååã¯ãã¢ããããŒãããããã¡ã€ã«ãä¿åãããŠããS3ã®ãã±ããåãšãã¡ã€ã«åïŒãªããžã§ã¯ãããŒïŒãå«ãã§ããŸãããã®è¡ãå®è¡ãããšããã°ã«ã¯ãFile uploaded to S3: Bucket=ãã±ããå, Key=ãã¡ã€ã«åããšãã圢åŒã§æ å ±ã衚瀺ãããŸããããã«ãããéçºè ã¯ã©ã®ãã¡ã€ã«ãã¢ããããŒãããããã確èªã§ããŸãã
åŠççµæãè¿ãïŒ ãã®éšåã§ã¯ãreturnæã䜿ã£ãŠãLambda颿°ã®å®è¡çµæãè¿ããŠããŸããstatusCode: 200ã¯ãåŠçãæåããããšã瀺ãHTTPã¹ããŒã¿ã¹ã³ãŒãã§ããbody: json.dumps('File processed successfully!')ã¯ãåŠççµæã®ã¡ãã»ãŒãžãJSON圢åŒã«å€æããŠããŸãããã®ã¡ãã»ãŒãžã¯ããFile processed successfully!ããšããæååã§ããããã«ãããLambda颿°ãæ£åžžã«å®äºããããšãç€ºãæ å ±ãè¿ãããŸãã
ãã®ã³ãŒãã¯ãã¢ããããŒãããããã¡ã€ã«ã®æ å ±ã衚瀺ããŠãåŠçãæåããããšãäŒããã¡ãã»ãŒãžãè¿ããŠããŸããæåã«ãã¢ããããŒãããããã¡ã€ã«ã®å ŽæïŒãã±ããåãšãã¡ã€ã«åïŒããã°ã«è¡šç€ºããæ¬¡ã«ããåŠçãæåããŸããïŒããšããã¡ãã»ãŒãžãè¿ããŠããŸãã
ãŸãšã
AWS Lambdaã¯ãã¯ã©ãŠãäžã§ã³ãŒããå®è¡ãããµãŒãã¹ã§ãããã®ãµãŒãã¹ã䜿ãããšã§ããµãŒããŒã®èšå®ã管çãããã«ãå¿
èŠãªæã«èªåçã«ã³ãŒããå®è¡ãããŸããLambdaã¯ãæ§ã
ãªã€ãã³ãïŒäŸãã°ãS3ãã±ãããžã®ãã¡ã€ã«ã¢ããããŒãïŒã«åå¿ããŠåäœããããšãã§ããŸãã
èšäºã§ã¯ãS3ãšLambdaã®é£æºã«ã€ããŠèª¬æããŸããããã¡ã€ã«ãS3ãã±ããã«ã¢ããããŒãããããšãLambda颿°ãèªåçã«å®è¡ãããŸããLambda颿°å ã§ã¯ãã¢ããããŒãããããã¡ã€ã«ã®ãã±ããåãšãã¡ã€ã«åïŒãªããžã§ã¯ãããŒïŒãååŸãããã°ã«åºåããŸããæåŸã«ãåŠçãæåããããšã瀺ãã¡ãã»ãŒãžãè¿ããŸãã
Lambdaã¯ãéçºè ãæè»œã«ã³ãŒããå®è¡ã§ãããããããŸããŸãªçšéã«å©çšã§ããŸããäŸãã°ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ããã¯ãšã³ãåŠçããããŒã¿ã®è§£æã»åŠçãªã©ã«äœ¿ãããŠããŸããLambdaã䜿ãããšã§ãéçºè ã¯ããç°¡åã«å¹ççãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšãã§ããŸãã