
- TOP
- ã¿ã°äžèЧ
- èšèš
èšèš
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
ãšããªãŒéçºæ¬éšã®å¡ç°ã§ãã ããã¯ãšã³ããããŒã¿åºç€ãã¡ã€ã³ã«æ
åœããŠããŸãã 2026幎4æã« Amazon S3 ã®æ°æ©èœãšã㊠Amazon S3 Files ã GA ãšãªããç¶ããŠ4æåŸåã«ã¯ Lambda ããã®å©çšã«ãå¯Ÿå¿ ããŸããã ããŒã¿ãšã³ãžãã¢èŠç¹ã§èŠããšããLambda ã§äžŠåããŒã¿åŠçãæžããšãã«æ¯åæ©ãã§ãããç¶æ
ã®æã¡åãããããããããªãããããªãããšæããŸããã æ¬èšäºã§ã¯ãLambda äžã®ããŒã¿ååŠçãã€ãã©ã€ã³ã S3 Files ã§çµã¿çŽããšã©ãå€ãããããæ€èšããŸããã ãªã Lambda ååŠçã§ãç¶æ
ããæ©ã¿ã®çš®ã ã£ãã®ã Lambda ã¯ã¹ã±ãŒã«ãå¹ããèµ·åã³ã¹ããå®ãã®ã§ãããŒã¿ååŠçã忣ãããçšéã«ã¯äŸ¿å©ã§ããäžæ¹ã§ãLambda ããã¹ããŒãã¬ã¹ãªé¢æ°ãã§ãããšããåæãšãããŒã¿åŠçã«å¿
èŠãªãããçšåºŠå€§ããªå
±æããŒã¿ã»äžéææç©ã®ããåãããåã¿åããªãããšãå€ããèšèšæã«æ©ãç®æã§ããããŸãã ãããŸã§åãããéžæè¢ãšèª²é¡æã¯ä»¥äžããããšæããŸãã å Lambda ã S3 ããåå¥ã« GET/PUT : èµ·åããšã« DL ã³ã¹ãããããã䞊å床ãäžããŠãã¹ã«ãŒããããé æã¡ã«ãªãããªã¯ãšã¹ã課éãæ¯äŸããŠèšãã DynamoDB / ElastiCache ãå
±æã¹ãã¢ã«ãã : 倧ããã®ãªããžã§ã¯ãã«ã¯äžåããå¥ãµãŒãã¹ã®éçšãä¹ã£ãŠãã Lambda + EFS ããŠã³ã : ãã¡ã€ã«å
±æã¯ã§ããããS3 ãšäºé管çã«ãªããå€éšããèŠãã«ãã EFS ãããŠã³ãããã°ã䞊å Lambda ãå
±æã®ãã¡ã€ã«ã·ã¹ãã ãæã€ãæ§æèªäœã¯ä»¥åããäœããŸããããã ã EFS ãš S3 ã¯ããããå¥ã¹ãã¬ãŒãžãªã®ã§ããåæãããã¯ã¢ãã㯠S3 åŽã®ãªããžã§ã¯ãã§ãããããã€ãã©ã€ã³ã®å
±æã ã EFSããšããããã«äºé管çã«ãªããã¡ã§ããã¡ã€ã«ãšãªããžã§ã¯ãã®éãè¡ãæ¥ããåæã¹ã¯ãªãããå¿
ãã©ããã§çããŠããŸããã S3 Files ãå€ãããã® S3 Files ã¯å
éšçã«ã¯ Amazon EFS ãããŒã¹ã«ãã NFS v4.2 ã®ãã¡ã€ã«ã·ã¹ãã ã§ãEC2 / Lambda / ECS / EKS ãã mount ã§ããæžããããŒã¿ã¯ããŠã³ãåŽããã¯å³æã«èŠããS3 ãã±ããåŽã«ãéåæã§åæ ãããŸãã S3 Files 㯠Mountpoint for Amazon S3 ã®ãããªæ©èœãšã¯å¥ç©ã§ããMountpoint 㯠S3 ã® API ã®äžã«ãã¡ã€ã«ã·ã¹ãã ã®æ¯ãèãããèŠãããã¢ãããŒããªã®ã§ãããšãã°ãã¡ã€ã«ã®äžéšãäžæžãããæäœãåççã«ãµããŒããããŸãããäžæ¹ S3 Files ã¯ãã¡ã€ã«ã·ã¹ãã åŽããèŠããã®ã¯æ¬ç©ã® NFS ã»ãã³ãã£ã¯ã¹ã§ãS3 åŽããèŠããã®ã¯æ¬ç©ã® S3 ãªããžã§ã¯ãã§ãããäž¡è
ã¯å¥ç©ã ãããã®éã®åæã¬ã€ã€ãŒã AWS ãåŒãåããŠãããŠããããšããèšèšã«ãªã£ãŠããŸãã ãããŸã§ãåæã§ããããŒã¿åºç€åŽã«ãšã£ãŠãã®ä»æ§ãå¬ããã®ã¯ã次ã®2ç¹ãããšèããŠããŸãã è€æ° Lambda ãåæããŠã³ãã§ãã ïŒäžŠåãžã§ãéã®å
±æãšããŠäœ¿ãã åãããŒã¿ããã¡ã€ã«çµç±ã§ã S3 API çµç±ã§ãèªãã ïŒãã€ãã©ã€ã³ã®å
éšåŠçã¯ãã¡ã€ã«äžçã§æžããŠãéçšãç£æ»ã¯ S3 äžçã§æžãŸãããã æ€èšŒ: 䞊åç¹åŸŽéçæãã€ãã©ã€ã³ãçµãã§ã¿ã å
·äœçãªã·ããªãªã§ Before / After ãæ¯èŒããŸãã ã·ããªãª å
¥å: æ°èŠã¬ã·ã 1000 ä»¶ïŒã¡ã¿ããŒã¿ãšæ¬æïŒ åŠç: 10 䞊åã® Lambda ãåæ
ããŠç¹åŸŽéãæœåºãã å
±æããŠäœ¿ããã¹ã¿ãŒããŒã¿: é£æèŸæž JSONïŒæ°åãæ°çŸ MBïŒ æ¢åã¬ã·ãã®åã蟌ã¿ãã¯ãã«ïŒæ°çŸ MBã1 GBïŒ åºå: å Lambda ãæœåºããç¹åŸŽéãåŸæ®µãžã§ããéçŽ Before: å Lambda ã S3 ããåå¥ DL ããæ§æ import boto3, json import numpy as np s3 = boto3.client( "s3" ) def handler (event, context): # ã³ãŒã«ãã¹ã¿ãŒãã®ãã³ã«ãæ°çŸMBçŽã®ãã¹ã¿ãŒã /tmp ã«ååŸ s3.download_file( "recipes-bucket" , "master/ingredients.json" , "/tmp/ingredients.json" ) s3.download_file( "recipes-bucket" , "master/embeddings.bin" , "/tmp/embeddings.bin" ) ingredients = json.load( open ( "/tmp/ingredients.json" )) embeddings = np.fromfile( "/tmp/embeddings.bin" , dtype=np.float32) features = build_features(event[ "recipes" ], ingredients, embeddings) # çµæã¯ S3 ã«æžãæ»ã body = serialize(features) s3.put_object( Bucket= "recipes-bucket" , Key=f "features/{event['job_id']}/{event['shard']}.parquet" , Body=body, ) ãã®å Žåã以äžã®ãããªåé¡ç¹ãèããããŸã Lambda ã³ãŒã«ãã¹ã¿ãŒãã®ãã³ã«æ°çŸ MB ã® DL ãèµ°ã /tmp ã® 10 GB å¶éã«åœãããããããšãããããã¹ã¿ãŒãå¢ããéã®èæ
®äºé
ãçºç 䞊å床ãäžãããšãçµå± S3 â Lambda ã®è»¢éã¹ã«ãŒããããããã«ããã¯ã«ãªã ãã¹ã¿ãŒãæŽæ°ãããšãã«ãå
š Lambda ããããèŠãŠãããç¶æ
ãæ
ä¿ãã¥ãã After: S3 Files ãããŠã³ãããŠå
±æé åãšããŠäœ¿ã /mnt/s3files ã« recipes-bucket ãããŠã³ãæžã¿ãšããŸãã import json, os import numpy as np # ã¢ãžã¥ãŒã«ãããã§äžåºŠã ãèªã¿ãã³ã³ããåå©çšæã¯ãã®ãŸãŸäœ¿ã INGREDIENTS = json.load( open ( "/mnt/s3files/master/ingredients.json" )) EMBEDDINGS = np.fromfile( "/mnt/s3files/master/embeddings.bin" , dtype=np.float32) def handler (event, context): out_dir = f "/mnt/s3files/features/{event['job_id']}" os.makedirs(out_dir, exist_ok= True ) out_path = f "{out_dir}/{event['shard']}.parquet" features = build_features(event[ "recipes" ], INGREDIENTS, EMBEDDINGS) write_parquet(out_path, features) boto3 ã®åŒã³åºããæ¶ããçŽç²ã«ããã¡ã€ã«ãèªã¿ããã¡ã€ã«ãæžããã³ãŒãã«ãªã£ãŠããŸããLambda 颿°å
ã§ s3.put_object ãçºè¡ããå¿
èŠããªãã®ã§ããªãã©ã€ããã«ãããŒãã¢ããããŒãã®èæ
®ããã€ãã©ã€ã³åŽã®ã³ãŒãããã¯æ¶ããŸãã æžãåºããç¹åŸŽéã¯ãåŸæ®µã®éçŽãžã§ããã㯠S3 API ã§ s3://recipes-bucket/features/{job_id}/ ã aws s3 ls ããã ãã§äžèЧã§ããéçšè
ããèŠãããã±ããã®äžçãèªç¶ãªãŸãŸã§ãã Before / After ã§äœãå€ããã ææš BeforeïŒåå¥ DLïŒ AfterïŒS3 FilesïŒ ã³ãŒã«ãã¹ã¿ãŒãæã®åæå çŽ 1 GB ã® DL ãçºçãã ããŠã³ãè¶ãã® mmap / page cache ã«ä¹ã 䞊åå®è¡æã®ã¹ã«ãŒããã S3 â Lambda ã® DL 垯åãããã«ããã¯ã«ãªãããã å Lambda ãåããã¡ã€ã«ããã£ãã·ã¥è¶ãã«åç
§ S3 GET ãªã¯ãšã¹ãæ° ã³ãŒã«ãã¹ã¿ãŒã à ãªããžã§ã¯ãæ° ã¶ãçºç ãã¹ã¿ãŒã¯ååã®ã¿ãåºå PUT ã¯äžèŠ /tmp 䜿çšé DL ãããã¹ã¿ãŒã¶ãæ¶è²» ããŠã³ãé å㯠/tmp ãæ¶è²»ããªã ç¹ã«å¹ããããªã®ã¯ ã³ãŒã«ãã¹ã¿ãŒãæã® DL ã³ã¹ã ãš S3 ãªã¯ãšã¹ãæ° ã§ããåè
ã¯ãã¹ã¿ãŒãµã€ãºã«æ¯äŸããåŸè
ã¯ãã®ãŸãŸææ¬¡ã³ã¹ãã«è·³ããããã䞊å床ãé«ãã·ããªãªã»ã©å·®ãåºãããŸãã ãã§ãã¯ãã€ã³ãä»ããžã§ããšããŠã®å¿çš 䞊ååŠçã®å
±æã ãã§ãªããããäžã€äŸ¡å€ãåºããããŠãŒã¹ã±ãŒã¹ã é·æéãžã§ãã®ãã§ãã¯ãã€ã³ã ã ãšèããŠããŸãã Lambda ã¯æå€§å®è¡æéã®å¶éããããŸããããããè¶
ããåŠçã¯åå²ã㊠Step Functions ã§ç¹ãããšããã®ãããããæ§æããšæããŸããã¹ãããéã§ãã©ããŸã§åŠçãé²ãã§ãããããåŒãæž¡ãã®ã«æ§ã
ãªæ¹æ³ã§èæ
®ãå
¥ããããšãçºçããŸããS3 Files ã䜿ããšãããããã®ãŸãŸãã¡ã€ã«ãšããŠæžããããã S3 API ããèŠãã ãšããæ§è³ªãæŽ»ãããŸãã import json, os WORKSPACE = "/mnt/s3files/agents/recipe-tagger" def handler (event, context): job_id = event[ "job_id" ] state_dir = f "{WORKSPACE}/{job_id}" state_path = f "{state_dir}/state.json" os.makedirs(state_dir, exist_ok= True ) state = json.load( open (state_path)) if os.path.exists(state_path) else { "processed" : 0 , "results" : [], } # äžæãããå Žåã¯ãprocessed ã®ç¶ãããåé for item in event[ "items" ][state[ "processed" ]:]: state[ "results" ].append(process(item)) state[ "processed" ] += 1 # 100ä»¶ããšã«ãã§ãã¯ãã€ã³ããæ°žç¶å if state[ "processed" ] % 100 == 0 : tmp_path = f "{state_path}.tmp" with open (tmp_path, "w" ) as f: json.dump(state, f) os.replace(tmp_path, state_path) # ã¢ãããã¯ã«çœ®ãæãã with open (state_path, "w" ) as f: json.dump(state, f) return { "job_id" : job_id, "processed" : state[ "processed" ]} ãã€ã³ãã¯ã ãã§ãã¯ãã€ã³ãã S3 API åŽãããèŠãã ãšããç¹ã§ããéçšäžã«ãããŸã©ã®ãžã§ããã©ããŸã§é²ãã§ããããã aws s3 cp s3://recipes-bucket/agents/recipe-tagger/{job_id}/state.json ã§ç¢ºèªã§ããŸãã åãçšéã»åããªãçšé æ€èšŒãéããŠèŠãããèªåãªãã®ç·åŒãã§ãã S3 Files ãåãçšé 䞊åãžã§ããå
񂆇
§ãã倧ããã®ãã¹ã¿ãŒããŒã¿ã®é
眮å
䞊åãžã§ãã®äžéææç©ãéçŽãã é·æéãžã§ãã®ãã§ãã¯ãã€ã³ã æ¢åã®ãã¡ã€ã«åæã³ãŒããæå°æ¹ä¿®ã§ S3 ãžç§»ããªããã¢ã³ãã·ãã åããªãçšé 匷æŽåæ§ãå¿
èŠãªã¡ã¿ããŒã¿ç®¡ç 倧éã®å°ãã¡ã€ã« rename ã䌎ãã¯ãŒã¯ãã㌠ããªç§ã¬ã€ãã³ã·ãèŠæ±ãããã¯ãªãã£ã«ã«ãã¹ ãã¡ã€ã«çµç±ãš S3 API çµç±ã®äž¡æ¹ããåããã¡ã€ã«ã«æžã蟌ãéçš ãããã« ãã¹ãŠã®åŠçã S3 Files çµç±ã«ããå¿
èŠã¯ãªãã䞊åãžã§ãã®å
±æããã§ãã¯ãã€ã³ããå
±éãã¹ã¿ãŒã®é
åžãªã©ãããããŸã§ãã¡ã€ã«ã·ã¹ãã ãæ¬²ããã£ããããã« EFS ãå¥å»ºãŠããŠãã / èªåã§åæããŠãããç®æã ãããã³ãã€ã³ãã§çœ®ãæããã®ããå¹ãã®è¯ã䜿ãã©ããã ãšçŸç¶ã§ã¯èããŠããŸãã
ã¯ããã« AIãæŽ»çšããéçºãäžè¬åããã«ã€ããŠãAPIå©çšæãæ¥åžžçã«æèããå Žé¢ãå¢ããŠããŸããã æè¿ã§ã¯ãããŒãPCäžã§åäœããèªåŸå AI ãšãŒãžã§ã³ãïŒäŸïŒOpenClaw ãªã©ïŒãéçºæ¯æŽããŒã«ãåžžæçšŒåãããå€åºå
ããã¹ããŒããã©ã³çµç±ã§æç€ºãäžãããããªå©çšã¹ã¿ã€ã«ãå¢ãã€ã€ãããŸãã ãã®ãããªç°å¢ã§ã¯ãAPIå©çšæã¯ããã¯ã°ã©ãŠã³ãã§ç¶ç¶çã«å¢å ããããã ãæ°ã¥ãããæ³å®ä»¥äžã®èª²éãçºçããŠããã ãšããç¶æ³ãèµ·ããåŸãŸãã ãããå®éã®éçšã§ã¯ã以äžã®ãããªèª²é¡ããããŸãã APIå©çšæã確èªããããã« OpenAI PlatformïŒç®¡çã³ã³ãœãŒã«ïŒãæ¯
ã¯ããã« ã¯ãããŸããŠã2025幎9æã«å
¥ç€Ÿããshun-itoãšç³ããŸããæå±ã¯åºå¹¹ã·ã¹ãã ã°ã«ãŒã ã€ã³ãã©ã·ã¹ãã ããŒã ã§ããæ
åœæ¥åã¯ãªãã£ã¹åã³ããŒã¿ã»ã³ã¿ãŒã®ãããã¯ãŒã¯ã®èšèšã»æ§ç¯ã»éçšã»ä¿å®ã§ãã è¶£å³ã¯ãã¹ã±ãããŠãªã³ã°ãªã©ã§äœãåããããšãšããé
ïŒæè¿ã¯ç¹ã«ã¯ã©ããããŒã«ã𿥿¬é
ïŒã飲ãããã«ãåºããããããšã§ãã ãããŸã§ã®çµæŽãšè»¢è·ã®ãã£ãã åè·ã§ã¯æäºæ¥äŒç€ŸïŒéITç³»ïŒã®åäŒç€Ÿã«åšç±ããŠãããã»ãã¥ãªãã£ç³»ã·ã¹ãã ã®ã€ã³ãã©éšåïŒãããã¯ãŒã¯ããµãŒãïŒã®èšèšã»æ§ç¯ãæ
åœããŠãããŸããã åè·ã§ã®ç§ã®ããžã·ã§ã³ã¯é¡§å®¢ïŒèŠªäŒç€Ÿã®ã·ã¹ãã éšïŒã®èŠæã®ãã¢ãªã³ã°ãé²æå ±åãã·ã¹ãã éçºãã³ããŒãžã®äŸé Œãé²æç®¡çãæ
åœããŠãããŸãããã§ãã®ã§ãèªåã§æãåãããŠã·ã¹ãã ã«è§Šããæ©äŒãããŸãç¡ããã¹ããŒã¯ãã«ããŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãåãæéãæ¥åã®å€§åãå ããŠãããŸããã ç§ã¯èªåã®æã§ã·ã¹ãã ã«è§Šããæ¹ãæ§ã«åã£ãŠãããšæãããã³ããŒãžå§èšãããããå
è£œã§æ¥åãéè¡ããäŒç€Ÿã«è»¢è·ããããšèããããã«ãªããŸããããŸããåè·ã§ã¯éçšã»ä¿å®ã¯æ
åœããŠããªãã£ãã®ã§ãããå¹
åºãå·¥çšã«æºãããããšãèããŠãããŸããã æ¥åãå
補åããŠããããšã»èªèº«ã®æè¡é åïŒäž»ã«ãããã¯ãŒã¯ïŒãšäžèŽããŠããããšã»ã§ããã ãå¹
åºãå·¥çšã«æºãããããšã®3ç¹ã軞ãšããŠè»¢è·å
ã®åè£ãšãªãäŒç€Ÿã調ã¹ãŠãããšããããããã£ã«ãã©ãçããŸããã ãããã¯ãŒã¯ãšã³ãžãã¢ãšããŠåœç¶ãããã£ã¯åãäžããŠãããè»¢è·æŽ»åã®æ©ã段éã§åè£ã«äžãããŸãããä»ã«ãåè£ã¯äœç€ŸããããŸããããä»ã®äŒç€Ÿãšæ¯èŒãããšæ±ããããã¹ãã«ãçµéšãç§ã®æã€ãã®ãšå
±éç¹ãå€ãå¿åæ§ãåãããã ãšèããŠå¿åãã幞ãã«ãå
å®ãé ãããšãã§ããŸããã å
¥ç€ŸããŠæããããš å¿åããè·çš®ã¯æåéãããããã¯ãŒã¯ãšã³ãžãã¢ãã§ããã®ã§ãæŠãäºæ³ããŠããéãã®æ¥åå
容ã§ã¯ãããŸããã ããããäžå£ã«ããããã¯ãŒã¯ãšã³ãžãã¢ããšèšããŸããŠãããã¯ãäŒç€Ÿã«ãã£ãŠæ¡çšããŠããæè¡é åã«ã¯å
ããªéãããããŸããå
ã»ã©ãæ±ããããã¹ãã«ãçµéšãç§ã®æã€ãã®ãšå
±éç¹ãå€ãã£ãããšç³ãäžããŸããããå
ãã«éãæè¡é åã®ç¿åŸã¯å¿
èŠã«ãªããŸããã®ã§ãæ
£ãããŸã§ã®èŠåŽã¯ãããŸããïŒãããã£ã«è»¢è·ãããŸã§ã¯ãCiscoãJuniperã®æ©åšã䜿çšãããªã³ãã¬ã®ãããã¯ãŒã¯ã®çµéšãããªããAWSãAzureçã®ãããªãã¯ã¯ã©ãŠãã䜿çšããçµéšããããŸããã§ããïŒ ãã ããªã³ããŒãã£ã³ã°ã®å
容ãäœç³»çã«ãŸãšããããŠãããäœãã©ã®é çªã§ç¿åŸããŠããã°ããã®ããåãããããã£ãã®ã倧ããªå©ãã«ãªããŸããã ä»åŸã®ç®æšã»æ±è² å®ã¯ç§ã¯åè¶ãªãããããªãŒããšã³ãžãã¢åè£ããšããæ ã§å
¥ç€ŸãããŠããã ããŸãããéå»ã«ãããŒã ãªãŒããŒã®çµéšïŒããŸãèªèŠã¯ç¡ãã§ããåšãããã¯ããèŠãããŠããããã§ãïŒã¯ãããŸãããããããã£ã®ãªãŒããŒã¯ã©ã¹ã®æ¹ã
ãèŠãŠãããšãç¥èã®åºããæ·±ãããããŠå€æã®éãã«é©ããããæ©äŒãå€ãã§ãããããã£ãæ¹ã
ã身è¿ã«ããã£ãããããšã¯å€§å€å¿åŒ·ãã®ã§ããããã®äžæ¹ã§å°æ¥çã«ã¯èªèº«ããã®ãããªç«ã¡äœçœ®ã«ä»ããŠããããšãæåŸ
ãããŠãããšèãããšãæ¬åœã«èªåã§å€§äžå€«ããªã»ã»ã»ïŒããšäžå®ã«ãªãããšããããŸãã ä»åŸã¯æè¡ãç¥èã身ã«çããŠããããšã¯ãã¡ããããªãŒããŒã·ãããçºæ®ã§ãããããªã³ãã¥ãã±ãŒã·ã§ã³ã¹ãã«ã身ã«çããŠãããæåŸ
ã«å¿ããããããã«ãªãŒããŒãšããŠæŽ»èºããŠããããã§ãã æåŸã« ãããŸã§èªãã§ããã ãããããšãããããŸããã ãããã£ã¯æäŸãµãŒãã¹ãå€ãããã®åæ¡çšããŠããæè¡é åã®å¹
ãåºãã®ã§èªåã«åã£ãããŒã ãèŠã€ãããããäŒç€Ÿã ãšæããŸãã ãèªåã®åŸæåéã§æŽ»èºãããããšããæ³ãããæ°ããããšã«ãã£ã¬ã³ãžãããããšããæ³ããå¶ããããç°å¢ããããŸãã å°ãã§ããããã£ã«ãèå³ãæã£ãŠããã ããã®ã§ããã°ããã²å¿åããŠããã ããã«ãžã¥ã¢ã«é¢è«ã颿¥ã§ã話ããŠã¿ãŸãããïŒ çãããšäžç·ã«åããæ¥ããåŸ
ã¡ããŠãããŸãïŒ
























