ãã®èšäºã§ã¯ã Amazon DynamoDB ããŒã¿ã«å¯Ÿããæ€çŽ¢ã Amazon OpenSearch Service ãšã® ãŒã ETL çµ±åã䜿çšããŠå®è£
ããæ¹æ³ã玹ä»ããŸããããŒã¿ãã€ãã©ã€ã³ã®æ§ç¯ãšä¿å®ãè¡ãããšãªããã¢ããªã±ãŒã·ã§ã³ã«å
šææ€çŽ¢ããããŸãäžèŽãè€éãªæ€çŽ¢ã¯ãšãªã远å ããæ¹æ³ãåŠã³ãŸãã Amazon DynamoDB ã¯ãå€§èŠæš¡ãªç°å¢ã§ 1 æ¡ããªç§ã®å¿çæéãšé«ã¹ã«ãŒãããæäœãå¿
èŠãšããã¢ããªã±ãŒã·ã§ã³ã«æé©ãªéžæè¢ã§ããOpenSearch Service ãšçµã¿åãããããšã§ãã¢ããªã±ãŒã·ã§ã³ã¯è€éãªæ€çŽ¢ãšåæã®ããã®åŒ·åãªæ©èœãç²åŸããŸãããã®ãŒã ETL çµ±åãã¢ããªã±ãŒã·ã§ã³ã®æ€çŽ¢æ©èœãã©ã®ããã«åŒ·åã§ãããã瀺ãå®çšçãªãŠãŒã¹ã±ãŒã¹ãèŠãŠãããŸãããã çŸç¶ã®æŠèŠ AnyCompany ã¯ããšã³ãã¬ã³ããªãŒã§æç¶å¯èœãªè£œåãå°éãšããæ¶ç©ºã®ãªã³ã©ã€ã³ããŒã±ãããã¬ã€ã¹ã§ãäžçäžã®ç°å¢æèã®é«ãæ¶è²»è
ã«ãµãŒãã¹ãæäŸããŠããŸãã圌ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ AWS ãµãŒããŒã¬ã¹ã¢ãŒããã¯ã㣠äžã§åäœããŠããã AWS Lambda 颿°ã e ã³ããŒã¹æäœãåŠçããŸãã補åæ
å ±ãåšåº«è©³çްãªã©ã®ã³ã¢ãã©ã³ã¶ã¯ã·ã§ã³ããŒã¿ã¯ DynamoDB ã«ä¿åãããŠããŸãã AnyCompany ã®è£œåçš DynamoDB ããŒãã«ã¬ã€ã¢ãŠãã«ã¯ã以äžã®å±æ§ãå«ãŸããŸãïŒ å±æ§ äŸ product_id ( ããŒãã£ã·ã§ã³ã㌠) Id_1 name ECO T-Shirt description Organic CottonTee price 100 rating 5 category Activewear brand AnyCompany tags organic specs {âcolorâ:âwhiteâ,âsizeâ:âMâ} stock 48 created_at 2025-12-16T16:15:43.473864+0000 updated_at 2025-12-16T16:15:43.473864+0000 æžãèŸŒã¿æäœã§ã¯ãAnyCompany 㯠DynamoDB ã䜿çšããŠããŒã¿ã®äžè²«æ§ãç¶æããŸãã補åæ
å ±ãæŽæ°ããéãã·ã¹ãã 㯠product_id ãããŒãã£ã·ã§ã³ããŒãšããŠäœ¿çšããŠè£œåã®æŽæ°ãå®è¡ããŸããAnyCompany ã®è£œåã«ã¿ãã°ã®æ¡å€§ã«ãããé¡§å®¢ã®æ€çŽ¢ãã¿ãŒã³ãããè€éã«ãªããã·ã¹ãã ã¯ããªãšãŒã·ã§ã³ãã¹ãã«ãã¹ãã»ãã³ãã£ãã¯ã¯ãšãªããã¡ã»ããæ€çŽ¢ïŒé¡§å®¢ãäŸ¡æ Œåž¯ããã©ã³ããè©äŸ¡ã補åã«ããŽãªãªã©ã®è€æ°ã®å±æ§ã䜿çšããŠè£œåããã£ã«ã¿ãªã³ã°ããçµã蟌ãããšãã§ããæ©èœïŒãåŠçããå¿
èŠããããŸãã äŒæ¥ãæ¡å€§ããã«ã€ããŠã以äžã®ãããªæ€çŽ¢ã·ããªãªãæµ®äžããŠããŸãïŒ ãã«ããã£ãŒã«ãæ€çŽ¢ â 顧客ã¯ã補ååã説æãã«ããŽãªãã¿ã°ãªã©ã®è€æ°ã®ãã£ãŒã«ããåæã«æ€çŽ¢ããå¿
èŠããããŸãã ãã«ãã¬ã³ãžæ€çŽ¢ â 顧客ã¯ãäŸ¡æ Œåž¯ïŒ$20-$50ïŒãè©äŸ¡ïŒ4-5 ã€æïŒãªã©ãè€æ°ã®åºæºã§è£œåããã£ã«ã¿ãªã³ã°ããããšèããŠããŸãã çºèŠãšããã²ãŒã·ã§ã³ â 顧客ã¯ããã¡ã»ããæ€çŽ¢ã䜿çšããŠçµæã段éçã«çµã蟌ã¿ïŒã«ããŽãªããã©ã³ããªã©ã®ãã£ã«ã¿ã䜿çšïŒãåçãªéèšãéããŠéžæè¢ãçè§£ãããïŒã«ããŽãªå¥ã®è£œåæ°ããã©ã³ããè©äŸ¡ã®ååžã確èªãããªã©ïŒãšèããŠããŸãã ãããŸãæ€çŽ¢ãšææ¡ â 顧客ã¯ãã¿ã€ããã¹ãã¹ãã«ãã¹ããã£ãŠãæ€çŽ¢ãæ©èœããããšãæãã§ããŸãïŒäŸãã°ããreuseble botlããšå
¥åããŠããreusable water bottleããèŠã€ããïŒããŸããå
¥åäžã«ãªãŒãã³ã³ããªãŒãææ¡ãåãåãã補åãããè¿
éã«èŠã€ããããããã«ããããšèããŠããŸãã ã»ãã³ãã£ãã¯æ€çŽ¢ â 顧客ã¯ãæ£ç¢ºãªè£œååã§ã¯ãªãèªç¶èšèªã®èª¬æã䜿çšããããšããããããŸããäŸãã°ããbiodegradable kitchen storage containersããæ€çŽ¢ãããšãé¢é£ãããšã³ãã¬ã³ããªãŒãªé£åä¿å補åãè¿ãããã¹ãã§ãã AWS 㯠DynamoDB ãš OpenSearch Service éã®ãŒã ETL çµ±å ãæäŸããããã 2 ã€ã®ãµãŒãã¹éã§ããŒã¿ãåæããŸãããã®çµ±åã«ãããã«ã¹ã¿ã ããŒã¿ãã€ãã©ã€ã³ãæ§ç¯ããã³ä¿å®ããããšãªããOpenSearch Service ã®æ€çŽ¢æ©èœã§ DynamoDB ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãè£å®ãããããã®æ€çŽ¢èŠä»¶ãæºããããšãã§ããŸãã 以äžã®äŸã§ã¯ãOpenSearch Service ã AnyCompany ã®ãããã®æ€çŽ¢ã·ããªãªã§ DynamoDB ãã©ã®ããã«è£å®ãããã«ã€ããŠèª¬æããŸãã ãã«ããã£ãŒã«ãæ€çŽ¢ é¡§å®¢ã®æ€çŽ¢ãã¿ãŒã³ã¯æ¬è³ªçã«åçã§ããã顧客ã¯åžžã«è£œåãæ€çŽ¢ããæ°ããæ¹æ³ãæ±ããŠããŸããAnyCompany ã§ã¯ãé¡§å®¢ã¯æ€çŽ¢ã¯ãšãªãè€æ°ã®è£œå屿§ã«åæã«äžèŽããããšãæãã§ããã補ååã説æãã«ããŽãªãã¿ã°ã§äžèŽãæ¢ããŠãé¢é£ããã¢ã€ãã ãèŠéããªãããã«ããŠããŸãã OpenSearch ã¯ãæ€çŽ¢ãŠãŒã¹ã±ãŒã¹ãã«ã¹ã¿ãã€ãºããæ€çŽ¢ã®é¢é£æ§ãåäžãããããã®å€ãã®æ©èœãæäŸããŸããå®å
šãªãªã¹ãã«ã€ããŠã¯ã æ€çŽ¢æ©èœ ãåç
§ããŠãã ãããOpenSearch ã¯ãããŒã¿ãæ€çŽ¢ããããã«äœ¿çšã§ãã ã¯ãšãªãã¡ã€ã³åºæèšèªïŒDSLïŒ ãšåŒã°ããæ€çŽ¢èšèªãæäŸããŸãã 以äžã¯ããã®æ©èœãå®è£
ããã¯ãšãªã®äŸã§ãïŒ GET products/_search { "query": { "bool":{ "should": [ { } ] } }, "size":20 } ãã«ãã¬ã³ãžæ€çŽ¢ åè¿°ã®æ€çŽ¢æ©èœã«åºã¥ããŠãAnyCompany ã®é¡§å®¢ã¯ãç¹å®ã®äŸ¡æ Œåž¯ïŒ$25â50ïŒå
ã®è£œåãæ€çŽ¢ããªãããç¹å®ã®ã«ããŽãªãšè©äŸ¡ãèæ
®ãããªã©ãè€æ°ã®ãã£ã«ã¿ãªã³ã°åºæºãçµã¿åãããããšèããããšããããããŸãã OpenSearch Service ã§ã¯ãããŸããŸãªæ¹æ³ã䜿çšããŠæ€çŽ¢çµæããã£ã«ã¿ãªã³ã°ã§ããŸããåæ¹æ³ã¯ç¹å®ã®ã·ããªãªã«é©ããŠããŸããã¯ãšãªã¬ãã«ã§ãã£ã«ã¿ãé©çšãã Boolean ã¯ãšãªå¥ãš post_filter ããã³ aggregation ã¬ãã«ã®ãã£ã«ã¿ã䜿çšã§ããŸãã 以äžã¯ããã®æ©èœãå®è£
ããã¯ãšãªã®äŸã§ãïŒ GET products/_search { "query": { "bool":{ "should": [ { "multi_match": { "query": "Men's Wear", "fields": ["name.ngram","description","category","tags"] } } ], } }, "size":20 } çºèŠãšããã²ãŒã·ã§ã³ AnyCompany ã§ã¯ã顧客ã¯ç¹å®ã®ã¢ã€ãã ãæ€çŽ¢ããã®ã§ã¯ãªããã€ã³ã¿ã©ã¯ãã£ããªã€ã³ã¿ãŒãã§ãŒã¹ãéããŠè£œåãçºèŠããããšèããŠããŸããäŸãã°ãæç¶å¯èœãªãã¡ãã·ã§ã³ãé²èЧããŠãã顧客ã¯ããMenâs Wearãã®æ€çŽ¢ããå§ããŠãå©çšå¯èœãªè£œåã®å
šäœåãçè§£ããããšèãããããããŸããã圌ãã¯ãå©çšå¯èœãªã«ããŽãªãæç¶å¯èœãªãªãã·ã§ã³ãæäŸãããã©ã³ããäžè¬çãªäŸ¡æ Œåž¯ã補åè©äŸ¡ã確èªããããšèããŠããŸããéèšãããããŒã¿ã¯éåžžããµã€ãããŒã«ãã£ã«ã¿ãªã³ã°ãªãã·ã§ã³ãšããŠè¡šç€ºããã顧客ãçŽæçã«æ€çŽ¢çµæãçµã蟌ãããšãã§ããŸãã OpenSearch éèš ã䜿çšãããšãããŒã¿ãåæããããããçµ±èšãæœåºã§ããŸããã¡ããªã¯ã¹éèšãé©çšããŠç°¡åãªèšç®ãå®è¡ãããããã±ããéèšã䜿çšããŠããã¥ã¡ã³ãã®ã»ããããã±ãããšããŠåé¡ãããããã€ãã©ã€ã³éèšã䜿çšããŠè€æ°ã®éèšãé£éããããã§ããŸãã 以äžã¯ããã®æ©èœãå®è£
ããã¯ãšãªã®äŸã§ãïŒ GET products/_search { "query": { "bool":{ "should": [ { "multi_match": { "query": "Men's Wear", "fields": ["name.ngram","description","category","tags"] } } ] } }, "aggs": { "categories": {"terms":{"field":"category.keyword","size":10}}, "brands":{"terms":{"field":"brand.keyword","size":10}}, "colors":{"terms":{"field":"specs.color","size":10}}, "sizes":{"terms":{"field":"specs.size","size":10}}, "size":20 } ãããŸãæ€çŽ¢ãšææ¡ AnyCompany ã§ã¯ã顧客ã¯äžå®å
šãªèšæ¶ã§è£œåãæ€çŽ¢ããããšãå€ããã¿ã€ããã¹ãããªããããæå³ãäºæž¬ã§ãããªã¢ã«ã¿ã€ã ã®æ€çŽ¢ææ¡ãæåŸ
ããŠããŸããäŸãã°ããOmgaããšå
¥åãããšãã¿ã€ããã¹ã蚱容ãããOmegaWearãããOmega Eco Essentialsããªã©ã®é¢é£è£œåãææ¡ããå¿
èŠããããŸããããã«ã¯ãã¹ãã«ã®ããªãšãŒã·ã§ã³ãã¿ã€ããã¹ãåŠçããªãããã·ã§ããã³ã°äœéšãåäžãããæ€çŽ¢ææ¡ãæäŸããå
ç¢ãªæ€çŽ¢ã·ã¹ãã ãå¿
èŠã§ããOpenSearch ã§ã¯ãããŒã¹ãããŒã¯ããšã«æŽæ°ãããé¢é£ããææ¡ãæäŸããã¿ã€ããã¹ã蚱容ãããªãŒãã³ã³ããªãŒãæ©èœãèšèšã§ããŸãã 以äžã¯ããã®æ©èœãå®è£
ããã¯ãšãªã®äŸã§ãïŒ GET products/_search { "suggest": { "product_suggest": { "prefix": "Om", }, "size": 5 } } } } ã»ãã³ãã£ãã¯æ€çŽ¢ AnyCompany ã§ã¯ã顧客ã¯ç¹å®ã®è£œååãã«ããŽãªã§ã¯ãªãããred beach hat for summerãã®ãããªèªç¶ãªãã¬ãŒãºã䜿çšããŠè£œåã®ããŒãºã衚çŸããããšããããããŸãããã®çŽæçãªæ€çŽ¢æ¹æ³ã«ã¯ãããŒã¯ãŒãã®äžèŽã ãã§ãªãã顧客ã®ã¯ãšãªã®èåŸã«ããã»ãã³ãã£ãã¯ãªæå³ãçè§£ããã·ã¹ãã ãå¿
èŠã§ãã OpenSearch ã¯ã ãã¯ãã«æ€çŽ¢ ãéããŠãã®èªç¶ãªæ€çŽ¢äœéšãå¯èœã«ããŸããã·ã¹ãã ã¯ã顧客ã®ã¯ãšãªããã¯ãã«åã蟌ã¿ïŒããã¹ãã®ã»ãã³ãã£ãã¯ãªæå³ãæããæ°å€è¡šçŸïŒã«å€æããŸããããã«ãããæ£ç¢ºãªããŒã¯ãŒãäžèŽã§ã¯ãªããæŠå¿µçãªé¡äŒŒæ§ã«åºã¥ããŠäžèŽãããããšãã§ããŸãã 以äžã¯ããã®æ©èœãå®è£
ããã¯ãšãªã®äŸã§ãïŒ GET /products/_search { "query": { }, "aggs": { "categories": { "terms": { "field": "category" }}, "brands": { "terms": { "field": "brand" }}, "avg_rating": { "avg": { "field": "rating" }} }, "size": 20 } 以äžã®ã»ã¯ã·ã§ã³ã§ã¯ãæ¢åã® Amazon DynamoDB æäœãç¶æããªãããæ€çŽ¢æ©èœããµããŒããããœãªã¥ãŒã·ã§ã³ãå®è£
ããæ¹æ³ã瀺ããŸãã ãœãªã¥ãŒã·ã§ã³ã®æŠèР以äžã®å³ã¯ããœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã瀺ããŠããŸãã AnyCompany ã®æ¢åã®ã¢ãŒããã¯ãã£ã¯ã Amazon API Gateway ã顧客ã®ãªã¯ãšã¹ãã AWS Lambda 颿°ã«ã«ãŒãã£ã³ã°ãããµãŒããŒã¬ã¹ãã¿ãŒã³ã«åŸã£ãŠããŸãããã®é¢æ°ã¯ããã©ã€ããªããŒã¿ã¹ãã¢ãšããŠæ©èœãã DynamoDB ããŒãã«ã«å¯ŸããŠèªã¿åãããã³æžãèŸŒã¿æäœãå®è¡ããŸãã æ¢åã®ã¢ãŒããã¯ãã£ãè£å®ããããã«ãAnyCompany 㯠DynamoDB ãš OpenSearch Service éã®ãŒã ETL çµ±åãå®è£
ããŸããçµ±å㯠2 ã€ã®ãã§ãŒãºã§ããŒã¿ãåæããŸãïŒ ãã€ã³ãã€ã³ã¿ã€ã ãªã«ããªïŒPITRïŒ ã¯æ¢åã® DynamoDB ããŒã¿ã Amazon S3 ã«ãšã¯ã¹ããŒãããŠåæã¹ãããã·ã§ãããäœæãã DynamoDB Streams ã¯ç¶ç¶çãªå€æŽããã£ããã£ã㊠OpenSearch ãµãŒãã¹ã«ã»ãŒãªã¢ã«ã¿ã€ã ã§æŽæ°ããŸãã ã»ãã³ãã£ãã¯æ€çŽ¢ã«å¿
èŠãª ãªã¢ãŒãæšè« ãæå¹ã«ããããã«ã OpenSearch ML ã³ãã¯ã¿ ã䜿çšã㊠OpenSearch ã Amazon Bedrock ã® Titan ããã¹ãåã蟌㿠ã¢ãã«ã«æ¥ç¶ã§ããŸãã OpenSearch Ingestion ãã€ãã©ã€ã³ã¯ãããã®ã¹ããªãŒã ãæ¶è²»ããå¿
èŠã«å¿ããŠããŒã¿ã倿ããã»ãŒãªã¢ã«ã¿ã€ã ã§ OpenSearch Service ã«åæããŸããåæãšã©ãŒããã£ããã£ããããã«ããããã¬ã¿ãŒãã¥ãŒïŒDLQïŒãšã㊠Amazon Simple Storage Service ïŒAmazon S3ïŒãã±ãããæå®ããŸãã æ€çŽ¢æ©èœããµããŒãããããã«ããœãªã¥ãŒã·ã§ã³ã¯ OpenSearch Service ã䜿çšããŠæ€çŽ¢ãªã¯ãšã¹ããåŠçããæ°ãã Lambda 颿°ã远å ããŸãããã®é¢æ°ã¯ OpenSearch Service SDK ã䜿çšããŠã¯ã©ã€ã¢ã³ããäœæããæ€çŽ¢ã¯ãšãªãå®è¡ããŸãããã®æ°ãã颿°ã¯ãæ¢åã®æäœãåŠçãç¶ããæ¢åã®æžã蟌㿠Lambda 颿°ãšäžŠè¡ããŠåäœããŸãã ãã®èšèšã«ãããAnyCompany 㯠e ã³ããŒã¹ã¯ãŒã¯ããŒããç¶æããªãããå
ç¢ãªæ€çŽ¢æ©èœãå®è£
ã§ããŸãã Amazon DynamoDB ãš Amazon OpenSearch Service éã®ãŒã ETL çµ±åã®å®è£
ãã®ã»ã¯ã·ã§ã³ã§ã¯ã匷åãããæ€çŽ¢æ©èœã®ããã®ã»ãã³ãã£ãã¯æ€çŽ¢æ©èœãå«ããDynamoDB ãš OpenSearch Service éã®ãŒã ETL çµ±åãã»ããã¢ããããæ¹æ³ã瀺ããŸãã åææ¡ä»¶ ãã®ãœãªã¥ãŒã·ã§ã³ãã»ããã¢ããããã«ã¯ã以äžãå¿
èŠã§ãïŒ AWS ã¢ã«ãŠã³ã ã 以äžã® AWS ãªãœãŒã¹ãäœæããã³ç®¡çããããã®é©å㪠AWS Identity & Access Management ïŒIAMïŒæš©éïŒ DynamoDB ããŒãã«ã OpenSearch ãã¡ã€ã³ ã Amazon OpenSearch IngestionïŒOSISïŒãã€ãã©ã€ã³ã CloudFormation ãã³ãã¬ãŒã ã DynamoDB ãšã¯ã¹ããŒãããã³ DLQ ã€ãã³ãçšã® Amazon S3 æ±çšãã±ããã Amazon Titan Embeddings G1 ãæå¹ã«ãªã£ãŠãã Amazon Bedrockã詳现ã«ã€ããŠã¯ã Amazon Bedrock åºç€ã¢ãã«ãžã®ã¢ã¯ã»ã¹ ãåç
§ããŠãã ããã å®è£
æé ã¹ããã 1ïŒDynamoDB ããŒãã«ã®äœæ ãœãªã¥ãŒã·ã§ã³ã®ãŠã©ãŒã¯ã¹ã«ãŒã®ç®çã§ããProductsããšããååã®æ°ãã DynamoDB ããŒãã«ãäœæããŸããæ¢åã® DynamoDB ããŒãã«ã§ãã®ãœãªã¥ãŒã·ã§ã³ãå®è£
ããå Žåã¯ããã®ã¹ããããã¹ãããã§ããŸãã以äžã® AWS CLI ã³ãã³ããå®è¡ããŠããŒãã«ãäœæããŸãïŒ aws dynamodb create-table \ --table-name Products \ --attribute-definitions \ AttributeName=product_id,AttributeType=S \ --key-schema \ AttributeName=product_id,KeyType=HASH \ --billing-mode PAY_PER_REQUEST \ --region us-east-1 ããŒãã«ã®ã¹ããŒã¿ã¹ã CREATING ãã ACTIVE ã«å€ãããŸã§åŸ
ã¡ãŸããã¹ããŒã¿ã¹ã¯ä»¥äžã§ç¢ºèªã§ããŸãïŒ aws dynamodb describe-table \ --table-name Products \ --region us-east-1 \ --query 'Table.TableStatus' ã¹ããã 2ïŒDynamoDB Streams ãšãã€ã³ãã€ã³ã¿ã€ã ãªã«ããªïŒPITRïŒã®æå¹å 以äžã® AWS CLI ã³ãã³ããå®è¡ããŸãïŒ aws dynamodb update-table \ --table-name Products \ --stream-specification \ StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region us-east-1 aws dynamodb update-continuous-backups \ --table-name Products \ --point-in-time-recovery-specification \ PointInTimeRecoveryEnabled=true \ --region us-east-1 ã¹ããã 3ïŒOpenSearch ãã¡ã€ã³ã®äœæ 以äžã® AWS CLI ã³ãã³ããå®è¡ããŠãã¡ã€ã³ãäœæããŸãïŒ aws opensearch create-domain \ --domain-name demo \ --engine-version "OpenSearch_3.1" \ --cluster-config InstanceType=t3.small.search,InstanceCount=1 \ --ebs-options EBSEnabled=true,VolumeType=gp3,VolumeSize=10 \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:*","Resource":"arn:aws:es:us-east-1:YOUR_ACCOUNT_ID :domain/demo/*"}]}' \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword": "YourStrongPassword123!"}}' \ --node-to-node-encryption-options Enabled=true \ --encryption-at-rest-options Enabled=true \ --domain-endpoint-options EnforceHTTPS=true \ --region us-east-1 泚æïŒ YOUR_ACCOUNT_ID ãå®éã® AWS ã¢ã«ãŠã³ã ID ã«çœ®ãæããŠãã ãã YourStrongPassword123! ã匷åãªãã¹ã¯ãŒãã«çœ®ãæããŠãã ããïŒOpenSearch Dashboards ãžã®ãã°ã€ã³ã«äœ¿çšããããä¿åããŠãã ããïŒ ãã¡ã€ã³ã®ã¹ããŒã¿ã¹ã確èªïŒ aws opensearch describe-domain \ --domain-name demo \ --region us-east-1 \ --query 'DomainStatus.{Status:Processing,Endpoint:Endpoint }' Processing ãã£ãŒã«ãã Status false ãè¿ããŸã§åŸ
ã¡ãŸããããã¯ãã¡ã€ã³ãã¢ã¯ãã£ãã§ããããšã瀺ããŸããã¢ã¯ãã£ãã«ãªã£ãããEndpointïŒAPI ã¢ã¯ã»ã¹çšïŒãã¡ã¢ããäœæãããã¹ã¿ãŒãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã䜿çšã㊠OpenSearch Dashboards URLïŒé垞㯠https:///_dashboards/ïŒã«ç§»åããŸãã ã¹ããã 4ïŒOpenSearch ã»ãã¥ãªãã£èšå®ã®æ§æ OpenSearch Service ãã¡ã€ã³ã® OpenSearch Dashboards ãã©ã°ã€ã³ã«ç§»åããŸããDashboards ãšã³ããã€ã³ãã¯ã OpenSearch Service ã³ã³ãœãŒã« ã®ãã¡ã€ã³ããã·ã¥ããŒãã§ç¢ºèªã§ããŸãã ã¡ã€ã³ã¡ãã¥ãŒãã Security ã Roles ãéžæãã ml_full_access ããŒã«ãéžæããŸãã Mapped users ã Manage mapping ãéžæããŸãã Backend roles ã®äžã«ããã¡ã€ã³ãåŒã³åºãæš©éãå¿
èŠãª Lambda ããŒã«ã® ARN ã远å ããŸãã arn:aws:iam:::role/LambdaInvokeOpenSearchMLCommonsRole Map ãéžæãããŠãŒã¶ãŒãŸãã¯ããŒã«ã Mapped users ã®äžã«è¡šç€ºãããããšã確èªããŸãã ãã®ãããã³ã°ã«ãããã¢ãã«çµ±åã«å¿
èŠãªæš©éãæå¹ã«ãªããŸãããã®ããŒã«ã¯ãã¢ãã« ID ãç»é²ããæ¬¡ã®ã¹ãããã§äœæãããŸãã å³ 2ïŒOpenSearch ã»ãã¥ãªãã£èšå® ã¹ããã 5ïŒBedrock ã¢ãã«çµ±åã®ã»ããã¢ãã ãªã¢ãŒãæšè«ã䜿çšãããšãAmazon SageMaker AI ã Amazon Bedrock ãªã©ã® ML ãµãŒãã¹ã§ã¢ãã«æšè«ããªã¢ãŒãã§ãã¹ãããML ã³ãã¯ã¿ã䜿çšã㊠Amazon OpenSearch Service ã«æ¥ç¶ã§ããŸãã ãªã¢ãŒãæšè«ã®ã»ããã¢ããã容æã«ããããã«ãAmazon OpenSearch Service ã¯ã³ã³ãœãŒã«ã§ AWS CloudFormation ãã³ãã¬ãŒããæäŸããŸãã Amazon OpenSearch Service ã³ã³ãœãŒã« ãéããŸãã å·ŠåŽã®ããã²ãŒã·ã§ã³ãã€ã³ã§ã Integrations ãéžæããŸãã Integrate with Amazon Titan Text Embeddings model through Amazon Bedrock ãéžæããŸã Configure domain ã Configure public domain ãéžæããŸãã ãAmazon OpenSearch EndpointããšãModel regionãã®ãã©ã¡ãŒã¿å€ãå
¥åããŸãã ã I acknowledge that AWS CloudFormation might create IAM resources ãããã§ãã¯ããŸã Create stack ãéžæããŸã ã¹ã¿ãã¯ã®ãããã€ãæ£åžžã«å®äºããããOutputs ã¿ãã«ç§»åãã Model Id ãã¡ã¢ããŸãã å³ 3ïŒBedrock ã¢ãã«çµ±å ã¹ããã 6ïŒOpenSearch Ingest ãã€ãã©ã€ã³ã®ã»ããã¢ãã Amazon Bedrock ã®ã¢ãã«ã䜿çšããŠå
¥åãã£ãŒã«ã description ããåã蟌ã¿ãäœæãã description_embedding ãšããååã®ãã£ãŒã«ãã«ãããã³ã°ãã ã€ã³ãžã§ã¹ããã€ãã©ã€ã³ ãäœæããŸãã ãã¡ã€ã³ã® OpenSearch Dashboards URL ã«ç§»åããŸããURL 㯠OpenSearch Service ã³ã³ãœãŒã« ã®ãã¡ã€ã³ããã·ã¥ããŒãã§ç¢ºèªã§ããŸãã å·ŠåŽã®ããã²ãŒã·ã§ã³ããã«ãéãã DevTools ãéžæããŸãã åã蟌ã¿ãã€ãã©ã€ã³ãäœæããŸãïŒ PUT /_ingest/pipeline/bedrock-embedding-pipeline { "description": "A text embedding pipeline", "processors": [ { "text_embedding": { "model_id": "<your_model_id>", // åã®ã¹ãããã® ModelId ã«çœ®ãæããŸãã "field_map": { "description": "description_embedding" }, "skip_existing": true } } ] } å³ 4ïŒOpenSearch Ingest ãã€ãã©ã€ã³ã®äœæ ã¹ããã 7ïŒOpenSearch ã€ã³ããã¯ã¹ãã³ãã¬ãŒãã®æºå ãŠãŒã¹ã±ãŒã¹ã®ãŒã ETL çµ±åãã€ãã©ã€ã³ãã»ããã¢ããããåã«ãæ€çŽ¢èŠä»¶ãåæããæé©ãªããã©ãŒãã³ã¹ã®ããã®é©åãªã€ã³ããã¯ã¹ãã³ãã¬ãŒããèšèšããŸãã 以äžã®ã¬ã€ãã©ã€ã³ãæ€èšããŠãã ããïŒ ã¢ã¯ã»ã¹ãã¿ãŒã³ãåæããæ€çŽ¢å¯èœã«ããå¿
èŠããããã£ãŒã«ããæ±ºå®ããé©åãªãã£ãŒã«ãã¿ã€ããéžæããŸãã product_id ã category ã®ãããªæ£ç¢ºãªäžèŽã«ã¯ keyword ã䜿çšããŸãã å
šææ€çŽ¢æ©èœã«ã¯ãã¢ãã©ã€ã¶ãŒä»ãã® text ã䜿çšããŸãã ã¿ã€ã ã¹ã¿ã³ããã£ãŒã«ãã«ã¯ date ã䜿çšããŸãã ãã£ãŒã«ãéžæãæé©åããããã«ãåŠçãªãŒããŒããããåæžããããã«å¿
èŠãªãã£ãŒã«ãã®ã¿ãã€ã³ããã¯ã¹åããŸãã ç¹æ®ãªæ€çŽ¢ããŒãºã«å¯ŸããŠã«ã¹ã¿ã ã¢ãã©ã€ã¶ãŒãå®è£
ããŸããäŸãã°ããªãŒãã³ã³ããªãŒãæ©èœã«ã¯ n-gram ã¢ãã©ã€ã¶ãŒã䜿çšããéšåäžèŽãå¯èœã«ããŸãã ã»ãã³ãã£ãã¯æ€çŽ¢èŠä»¶ã決å®ããŸããããžãã¹ãŠãŒã¹ã±ãŒã¹ã«é©ãããã£ãŒã«ããåã蟌ã¿ãŸããéžæããåã蟌ã¿ã¢ãã«ãšããã©ãŒãã³ã¹èŠä»¶ã«åºã¥ããŠãé©åãªæ¬¡å
ãšã¢ã«ãŽãªãºã ã§ãã¯ãã«ãã£ãŒã«ããããã³ã°ãæ§æããŸãã 以äžã¯ããããã³ã°ãã³ãã¬ãŒãã®äŸã§ãïŒ { "template": { "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 1, "knn": true, "knn.algo_param.ef_search": 100, "default_pipeline": "bedrock-embedding-pipeline" }, "analysis": { "analyzer": { "custom_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "stop" ] }, "ngram_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "ngram_filter" ] } }, "filter": { "ngram_filter": { "type": "ngram", "min_gram": 4, "max_gram": 5 } } } }, "mappings": { "properties": { "product_id": { "type": "keyword" }, "name": { "type": "text", "analyzer": "custom_analyzer", "fields": { "keyword": { "type": "keyword" }, "ngram": { "type": "text", "analyzer": "ngram_analyzer" }, "suggest": { "type": "completion", "analyzer": "simple" } } }, "description": { "type": "text", "analyzer": "custom_analyzer" }, "price": { "type": "float" }, "rating": { "type": "float" }, "category": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "brand": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "tags": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "specs": { "properties": { "color": { "type": "keyword" }, "size": { "type": "keyword" }, "weight": { "type": "float" }, "dimensions": { "type": "keyword" } } }, "stock": { "type": "integer" }, "created_at": { "type": "date" }, "updated_at": { "type": "date" }, "description_embedding": { "type": "knn_vector", "dimension": 1536, "method": { "engine": "faiss", "space_type": "l2", "name": "hnsw", "parameters": { } } } } } } } ã¹ããã 8ïŒOpenSearch Ingestion ãã€ãã©ã€ã³ã®ã»ããã¢ãã DynamoDB Service ã³ã³ãœãŒã« ãéãã Integrations ãéžæããçµ±åãäœæã㊠Amazon OpenSearch ãéžæããŸãã ãœãŒã¹ïŒDynamoDB ããŒãã«ïŒã®æ§æ ããããããŠã³ããçµ±åã®ãœãŒã¹ãšãªã DynamoDB ããŒãã«ãéžæããŸãã Enable Stream Enable Export ãæå¹ã«ããS3 BucketãS3 region ãæ§æããŸã Configure processor ïŒããŒã¿å€æã®ããã®ããã»ããµãŒãã»ããã¢ããïŒ Configure sink ïŒOpenSearch ãã¡ã€ã³ïŒïŒ Choose a domain ãIndex NameããšããŠãproductsããšå
¥åããŸãã Customized Mapping ãéžæããã¹ããã 7 ã§å®çŸ©ãããã³ãã¬ãŒãã䜿çšããŸãã 倱æããã€ãã³ãããªãããŒãããåæçšã«ã¢ã¯ã»ã¹å¯èœã«ããããã«ããããã¬ã¿ãŒãã¥ãŒïŒDLQïŒãæå¹ã«ããŸããS3 ãã±ããåãšãªãŒãžã§ã³ãå
¥åããŸãã Configure pipeline äžæã®ãã€ãã©ã€ã³åãå
¥åããŸãïŒçŸåšã® AWS ã¢ã«ãŠã³ãã®çŸåšã®ãªãŒãžã§ã³å
ã§ïŒã èŠä»¶ã«å¿ããŠãã€ãã©ã€ã³å®¹éãæ§æããŸããåäžã® Ingestion OpenSearch Compute UnitïŒOCUïŒã¯ã課éå¯èœãªã³ã³ãã¥ãŒãã£ã³ã°ããã³ã¡ã¢ãªãŠãããã衚ããŸããããŒã¿ãã€ãã©ã€ã³ã®å®è¡ã«äœ¿çšããã OCU ã®æ°ã«åºã¥ããŠæéåäœã§èª²éãããŸããããŒã¹ã©ã€ã³ãšããŠã1 ã€ã® OCU ã¯äžè¬çãªã¯ãŒã¯ããŒãã§æå€§ 2 MiB/ç§ãåŠçã§ããŸããã¯ãŒã¯ããŒãã«å¿ããŠæå°ããã³æå€§ OCU 容éãå
¥åããŸãã OpenSearch Ingestion ã¯ãä»ã®ãµãŒãã¹ã代çã§äœ¿çšããããã®æš©éãå¿
èŠã§ãã Create and use a new service role ãéžæããŸãã ã¹ããã 4 ãšåæ§ã«ãOSIS ãã€ãã©ã€ã³ã® IAM ããŒã«ã OpenSearch all_access ããŒã«ã®ããã¯ãšã³ãããŒã«ãšããŠãããã³ã°ããŸããããã«ãããããŒã¿ã€ã³ãžã§ã¹ãã®ããã®å®å
šã§ãã现ããã¢ã¯ã»ã¹å¶åŸ¡ãå¯èœã«ãªããŸãã Review and create ãã¹ãŠã®æ§æã確èªããŸãã Preview pipeline ãéžæããyaml ãã¡ã€ã«ã確èªããŸãã Create Pipeline ãéžæããŠãã€ãã©ã€ã³ãäœæããŸãã å³ 5ïŒOpenSearch Ingestion ãã€ãã©ã€ã³ã®äœæ æ€èšŒ ãŒã ETL çµ±åãã»ããã¢ããããåŸãããŒã¿ãè€è£œãããŠããããšããã¹ãããã³æ€èšŒã§ããŸãã DynamoDB ã«ãµã³ãã«ã¢ã€ãã ãäœæããŸãã以äžã¯ãã¢ã€ãã ãäœæãããµã³ãã«ã·ã§ã«ã¹ã¯ãªããã§ãïŒ #!/bin/bash for i in {1..10}; do colors=("red" "white" "green" "blue" "black") sizes=("XS" "S" "M" "L" "XL") products=("Hoodie" "Jacket" "Pants" "Shorts" "Sweater" "Joggers" "Tank Top" "Polo Shirt" "Vest" "Leggings") categories=("Activewear" "Men's Wear" "Women's Wear" "Loungewear" "Outerwear") brands=("AnyCompany1" " AnyCompany2" " AnyCompany3" " AnyCompany4" " AnyCompany5" " AnyCompany6") features=("Sustainably crafted" "Eco-friendly materials" "Ethically produced" "Premium quality" "Organic materials") color=${colors[$((RANDOM % 5))]} features=${features[$((RANDOM % 5))]} size=${sizes[$((RANDOM % 5))]} category=${categories[$((RANDOM % 5))]} brand=${brands[$((RANDOM % 6))]} product_name=${products[$((i - 1))]} timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ") aws dynamodb put-item \ --table-name Products \ --region us-east-1 \ --item "{ \"product_id\": {\"S\": \"product_$i\"}, \"name\": {\"S\": \"$brand $product_name\"}, \"description\": {\"S\": \"$features $product_name - $category\"}, \"price\": {\"N\": \"$((100 + RANDOM % 400)).99\"}, \"rating\": {\"N\": \"4.$((RANDOM % 10))\"}, \"category\": {\"S\": \"$category\"}, \"brand\": {\"S\": \"$brand\"}, \"tags\": {\"L\": [{\"S\": \"organic\"}, {\"S\": \"sustainable\"}, {\"S\": \"eco-friendly\"}]}, \"specs\": {\"M\": { \"color\": {\"S\": \"$color\"}, \"size\": {\"S\": \"$size\"}, \"weight\": {\"N\": \"0.$((RANDOM % 9 + 1))\"}, \"dimensions\": {\"S\": \"$((RANDOM % 30 + 10))x$((RANDOM % 30 + 10))x$((RANDOM % 10 + 1))\"} }}, \"stock\": {\"N\": \"$((RANDOM % 200))\"}, \"created_at\": {\"S\": \"$timestamp\"}, \"updated_at\": {\"S\": \"$timestamp\"} }" && echo "â Created: product_id=$i" done echo "Done!" ãã¡ã€ã³ã® OpenSearch Dashboards URL ã«ç§»åããŸããURL 㯠OpenSearch Service ã³ã³ãœãŒã«ã®ãã¡ã€ã³ããã·ã¥ããŒãã§ç¢ºèªã§ããŸãã å·ŠåŽã®ããã²ãŒã·ã§ã³ããã«ãéãã Dev Tools ãéžæããŸãã OpenSearch ãžã®ããŒã¿ãããŒã確èªããŸãã //ãã¹ãŠæ€çŽ¢ GET products/_search { "query": { "match_all": {} } } ã»ãã³ãã£ãã¯ãŠãŒã¹ã±ãŒã¹ã¯ãšãªãå®è¡ããŠãã»ãã³ãã£ãã¯èŠä»¶ãæ€èšŒããŸãã GET products/_search { "query": { "neural": { "description_embedding": { "query_text": "sports", "model_id": "<ã¹ããã 5 ã§ååŸãã model_id ã«æŽæ°>" } } } } ãã®èšäºã®ååã§æäŸãããã¯ãšãªã䜿çšããŠãä»ã®ãã¹ãŠã®ãŠãŒã¹ã±ãŒã¹ããã¹ãã§ããŸãã å³ 6ïŒããŒã¿æ€èšŒ ãã€ãã©ã€ã³ã®ã»ããã¢ãããå®äºããããŒã¿åæãæ€èšŒããåŸããã©ã³ã¶ã¯ã·ã§ã³æäœã DynamoDB ã«ä¿æããªãããæ€çŽ¢ã¯ãšãªã OpenSearch Service ã«ã«ãŒãã£ã³ã°ããããã«ã¢ããªã±ãŒã·ã§ã³ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããŸãã å
·äœçãªå®è£
ã¯ãã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ãšããã°ã©ãã³ã°èšèªã«ãã£ãŠç°ãªããŸããAWS SDK ã䜿çšã㊠OpenSearch Service ãã¯ãšãªããæé ã«ã€ããŠã¯ã AWS SDK ã䜿çšãã Amazon OpenSearch Service ãšã®å¯Ÿè©± ãåç
§ããŠãã ããã ãã¹ããã©ã¯ãã£ã¹ DynamoDB ãš OpenSearch Service éã®ãŒã ETL çµ±åãå®è£
ããéã¯ã以äžã® ãã¹ããã©ã¯ãã£ã¹ ãæ€èšããŠãã ããïŒ OSIS ãã€ãã©ã€ã³ã®ãœãŒã¹ãªãã·ã§ã³ãšã㊠DynamoDB ã¹ããªãŒã ã䜿çšããŸããããã«ãããå®å
šãªåæã¹ãããã·ã§ãããå¿
èŠãšããã«ãæ°ããã¬ã³ãŒããŸãã¯æŽæ°ãããã¬ã³ãŒãã®ã¿ããã£ããã£ãããŸããã¹ããªãŒãã³ã°ããŒã¿ã§ãã€ãã©ã€ã³ãããŒããã¹ããããããšã¯ã¹ããŒããªãã·ã§ã³ã䜿çšããŠå®å
šãªããŒã¿ãç§»è¡ããŸãã Amazon VPC ã䜿çšããŠããããªãã¯ã€ã³ã¿ãŒãããçµç±ã§ã¯ãªãããããã¯ãŒã¯å¢çå
ã§ OpenSearch Ingestion ãã€ãã©ã€ã³ãéããŠããŒã¿ãããŒã匷å¶ããŸãã åã蟌ã¿ããã§ã«å«ãŸããŠãããã£ãŒã«ãã«å¯Ÿããåé·ãª API åŒã³åºããé²ãããã«ã skip_existing ãã©ã°ãæå¹ã«ããŠãåã蟌ã¿çæã€ã³ãžã§ã¹ããã€ãã©ã€ã³ãæé©åããŸãã OpenSearch Service ãã¡ã€ã³ãš OpenSearch Ingestion ãã€ãã©ã€ã³ã® Amazon CloudWatch ãã° ãæå¹ã«ããŸããããã«ãããããŒã¿ãããŒå
šäœã®å¯èŠæ§ãæäŸãããåé¡ãè¿
éã«ç¹å®ã§ããŸãããã¡ã€ã³ã¬ãã«ã§ãã°ãæ§æããŠãæ€çŽ¢ã¯ãšãªãã€ã³ããã¯ã¹æäœãã¯ã©ã¹ã¿ãŒãã«ã¹ã¡ããªã¯ã¹ããã£ããã£ããŸããOpenSearch Ingestion ãã€ãã©ã€ã³ã®å Žåã詳现ãªãã°ãæå¹ã«ããŠãããŒã¿å€æãšã€ã³ãžã§ã¹ãããã»ã¹ãç£èŠããŸãã ã€ã³ãžã§ã¹ããã€ãã©ã€ã³ã® DLQ ãæ§æããŸãããããã³ã°ãšã©ãŒã倿ã®åé¡ããŸãã¯äžæçãªãµãŒãã¹ã®åé¡ã«ããããã¥ã¡ã³ãã®åŠçã倱æããå ŽåãDLQ ã¯ãããã®å€±æããã¬ã³ãŒãããã£ããã£ããŠãåŸã§åæããã³ååŠçã§ããããã«ããŸããããã«ãããããŒã¿æå€±ã鲿¢ãããå埩ã¡ã«ããºã ãæäŸãããŸãã AWS Key Management ServiceïŒAWS KMSïŒ ã䜿çšããŠãDynamoDB ããŒãã«ãš OpenSearch Service ãã¡ã€ã³ã®äž¡æ¹ã§ä¿åæã®æå·åãæå¹ã«ããæå·åããŒãå®å
šã«å¶åŸ¡ããã³ã³ãã©ã€ã¢ã³ã¹èŠä»¶ãæºãããŸãã DynamoDB ããŒãã«ã§åé€ä¿è·ãæå¹ã«ããŠãéèŠãªããŒã¿ã®èª€åé€ãé²ããæ¬çªã¯ãŒã¯ããŒãã«è¿œå ã®å®å
šå±€ãæäŸããŸãã çµ±åãã€ãã©ã€ã³ã®åã³ã³ããŒãã³ãã«ç¹å®ã® IAM ããŒã«ãšããªã·ãŒãäœæããŠãæå°æš©éã¢ã¯ã»ã¹ãå®è£
ãããµãŒãã¹ãæ©èœããããã«å¿
èŠãªæš©éã®ã¿ãæã€ããã«ããŸãã ã·ã£ãŒããµã€ãžã³ã°ãã€ã³ã¹ã¿ã³ã¹ã¿ã€ãããããã€æ§æãå«ã OpenSearch Service ãã¡ã€ã³ã®ãµã€ãžã³ã°æšå¥šäºé
ã«ã€ããŠã¯ã Amazon OpenSearch Service ãã¡ã€ã³ãµã€ãžã³ã°ã¬ã€ã ãåç
§ããŠãã ããã ã¢ãã¿ãªã³ã°ãšã¢ã©ãŒã OpenSearch Ingestion ã¯ããã€ãã©ã€ã³ã®ããã©ãŒãã³ã¹ãç£èŠããã®ã«åœ¹ç«ã€ã¡ããªã¯ã¹ãå
¬éããŸãããã€ãã©ã€ã³ã®å¥å
šæ§ãç£èŠããéã¯ã以äžã®äž»èŠãªé åã«çŠç¹ãåœãŠãŠãã ããïŒ ããŒã¿ã€ã³ãžã§ã¹ãããããã¯ããå¯èœæ§ã®ããèªèšŒã®åé¡ã ããŒã¿æå€±ã«ã€ãªããå¯èœæ§ã®ããããã¥ã¡ã³ãåŠçã®å€±æã ããŒã¿åŠçãé
ãããå¯èœæ§ã®ãã容éã®ããã«ããã¯ã ã¢ããªã±ãŒã·ã§ã³ã®å¿çæéã«åœ±é¿ãäžããããã©ãŒãã³ã¹ã®äœäžã Bedrock åºæã®ç£èŠã«ã€ããŠã¯ãã¢ãã«åŒã³åºãã®ã¬ã€ãã³ã·ãŒãã¹ããããªã³ã°ãããŒã¯ã³äœ¿çšéã®ã¡ããªã¯ã¹ã«ç¹ã«æ³šæããŠãã ããã ãããã®é åãç©æ¥µçã«ç£èŠããããšã§ãDynamoDB ãã OpenSearch Service ãžã®ä¿¡é Œæ§ã®é«ãããŒã¿ãããŒãç¶æããæ€çŽ¢æ©èœã®å¿çæ§ã確ä¿ã§ããŸãããããã®åé¡ãæ©æã«æ€åºããããã« CloudWatch ã¢ã©ãŒããèšå®ãããŠãŒã¶ãŒã«åœ±é¿ãäžããåã«ããã¢ã¯ãã£ããªã¢ã¯ã·ã§ã³ãå®è¡ã§ããããã«ããŸãã ãã°ãšã¢ãã¿ãªã³ã° ã®è©³çްãšãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠã¯ã Amazon OpenSearch Ingestion ã®ãã¹ããã©ã¯ãã£ã¹ ããã³ Amazon Bedrock ã¢ãã¿ãªã³ã° ã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ã³ã¹ãã«é¢ããèæ
®äºé
OpenSearch Ingestion ã䜿çšãã DynamoDB ãã OpenSearch Service ãžã®çµ±åãèšç»ããéã¯ãAmazon CloudWatch ã¡ããªã¯ã¹ãéã㊠DynamoDB ã®æžã蟌ã¿ã¹ã«ãŒããããåæããŸããDynamoDB ããŒãã«ã®æžã蟌ã¿ã¢ã¯ãã£ããã£ã¯ DynamoDB Streams ã«ã¬ã³ãŒããçæããOpenSearch Ingestion ãã€ãã©ã€ã³ããããæ¶è²»ããŸããæå°ãæå€§ãå¹³åã®æžã蟌ã¿ãªã¯ãšã¹ããŠãããïŒWRUïŒãçè§£ããããšã§ãOpenSearch Ingestion ãã€ãã©ã€ã³ãé©åã«ãµã€ãžã³ã°ã§ããŸãããã®èšäºã®å·çæç¹ã§ã¯ãOpenSearch Ingestion ãã€ãã©ã€ã³ã¯ 1 ãã 96 ã® OpenSearch Compute UnitïŒOCUïŒã«ã¹ã±ãŒãªã³ã°ã§ããŸããããŒã¹ã©ã€ã³ãšããŠã1 ã€ã® OCU ã¯äžè¬çãªã¯ãŒã¯ããŒãã§æå€§ 2 MiB/ç§ãåŠçã§ããŸãããããŒã¿ãµã€ãºããã€ãã©ã€ã³å€æãOpenSearch Service ãã¡ã€ã³ã®ãµã€ãºãšã€ã³ããã¯ã¹/ã·ã£ãŒãæŠç¥ã«ãã£ãŠç°ãªãå ŽåããããŸãã äŸãã°ãããŒãã«ã 1 ç§ããã 20,000 WRU ãåŠçããå Žåããã®ã¹ã«ãŒããããå¹ççã«åŠçããã«ã¯æäœ 10 OCU ãå¿
èŠã§ããç·ã³ã¹ãã«ã¯ãDynamoDB Streams ã®æéïŒ100,000 èªã¿åããªã¯ãšã¹ãããã $0.02ïŒãOpenSearch Service ã¯ã©ã¹ã¿ãŒã®ã³ã¹ãïŒã€ã³ã¹ã¿ã³ã¹ã¿ã€ããšã¹ãã¬ãŒãžã«åºã¥ãïŒãOpenSearch Ingestion ãã€ãã©ã€ã³ã®ã³ã¹ãïŒOCU æéãããã®äŸ¡æ ŒïŒãããã³éåžžã® DynamoDB ã³ã¹ããå«ãŸããŸããDynamoDB ãã OpenSearch ãã€ãã©ã€ã³ã«ãªã¢ãŒãæšè«çšã® Amazon Bedrock ãçµã¿èŸŒãå Žåã¯ãã©ã®ãã£ãŒã«ãã«åã蟌ã¿ãå¿
èŠããè©äŸ¡ããåŠçããããã¹ãããŒã¿ã®éãèŠç©ãããŸããã¬ã³ãŒãæ°ãããã¹ããã£ãŒã«ãã®ãµã€ãºãæŽæ°é »åºŠã«åºã¥ããŠãäºæ³ãããããŒã¯ã³äœ¿çšéãèšç®ããŸããã³ã¹ãæ§é ã¯ãéžæããåºç€ã¢ãã«ã«ãã£ãŠç°ãªãããŒã¯ã³ããšã®åŸé課éã¢ãã«ã«åŸããŸãã ã¯ãªãŒã³ã¢ãã ç¶ç¶çãªæéã®çºçãé¿ããããã«ããã®ãœãªã¥ãŒã·ã§ã³ã§äœæãããªãœãŒã¹ãåé€ãŸãã¯ç¡å¹åããŸããAWS ç°å¢ãã¯ãªãŒã³ã¢ããããã«ã¯ãæ¬¡ã®æé ã«åŸã£ãŠãã ããïŒ CloudFormation ã¹ã¿ã㯠ãåé€ããŸãïŒ CloudFormation ã³ã³ãœãŒã«ãéããŸãã ã¢ãã«ã¢ã¯ã»ã¹çšã«äœæããã¹ã¿ãã¯ãéžæããŸãã Delete ãéžæããåé€ã確èªããŸãã OpenSearch ãªãœãŒã¹ãåé€ããŸãïŒ Amazon OpenSearch Ingestion ã³ã³ãœãŒã«ãéãããã€ãã©ã€ã³ãåé€ã㊠OSIS ãã€ãã©ã€ã³ãåé€ ããŸãã Amazon OpenSearch Service ã³ã³ãœãŒã«ãéã㊠OpenSearch ãã¡ã€ã³ãåé€ ããŸãã DynamoDB ããŒãã«ïŒProductsïŒãåé€ããŸãã ãããã¬ã¿ãŒãã¥ãŒïŒDLQïŒãš DynamoDB ãšã¯ã¹ããŒãã«äœ¿çšãã S3 ãã±ããã空ã«ããŸãã ãããã®æé ãå®äºããããåãµãŒãã¹ã³ã³ãœãŒã«ã§ããã¹ãŠã®ãªãœãŒã¹ãé©åã«åé€ãŸãã¯ç¡å¹åãããŠããããšã確èªããŠãã ããã ãŸãšã ãã®èšäºã§ã¯ã Amazon DynamoDB ããŒã¿ã«å¯Ÿããæ€çŽ¢ã Amazon OpenSearch Service ãšã® ãŒã ETL çµ±åã䜿çšããŠå®è£
ããæ¹æ³ã玹ä»ããŸããã AnyCompany ã®äŸãéããŠããã®çµ±åãå®éã®æ€çŽ¢èª²é¡ïŒé¡§å®¢ã®ã¿ã€ããã¹ãã»ãã³ãã£ãã¯ã¯ãšãªã®åŠçããããã¡ã»ããæ€çŽ¢ããã«ããã£ãŒã«ãæ€çŽ¢ã®æå¹åãŸã§ïŒã«ã©ã®ããã«å¯ŸåŠããããå®èšŒããŸããã Amazon OpenSearch Service ããã¥ã¡ã³ã ãš DynamoDB ãŒã ETL çµ±åã¬ã€ã ãæ¢çŽ¢ããŠãç¬èªã®ç°å¢ã§ãããã®æ©èœã®å®è£
ãéå§ããŠãã ããã æ¬èšäºã¯ 2026 幎 02 æ 18 æ¥ ã«å
¬éããã âImplementing search on Amazon DynamoDB data using zero-ETL integration with Amazon OpenSearch serviceâ ã翻蚳ãããã®ã§ãã åæ: https://aws.amazon.com/blogs/database/implementing-search-on-amazon-dynamodb-data-using-zero-etl-integration-with-amazon-opensearch-service/ èè
ã«ã€ã㊠Varun Sharma Varun ã¯ãAWS Professional Services ããŒã ã§åãã·ãã¢ããªããªãŒã³ã³ãµã«ã¿ã³ãã§ãã Vamsi Krishna Ganti Vamsi ã¯ãAWS Professional Services ããŒã ã§åãã·ãã¢ããªããªãŒã³ã³ãµã«ã¿ã³ãã§ãã Sudhansu Mohapatra Sudhansu ã¯ãAWS Professional Services ããŒã ã§åãããªããªãŒã³ã³ãµã«ã¿ã³ãã§ãã