7 æ 15 æ¥ããã Amazon EventBridge ã®æ¡åŒµãã°èšé²æ©èœã䜿çšããŠãå
æ¬çãªãã°ã§ã€ãã³ãããªãã³ã®ã¢ããªã±ãŒã·ã§ã³ãã¢ãã¿ãªã³ã°ããã³ãããã°ã§ããŸãããããã®æ°ããæ©èœåŒ·åã¯ãã€ãã³ããããŒã®ã¢ãã¿ãªã³ã°ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®æ¹æ³ãæ¹åããã®ã«åœ¹ç«ã¡ãŸãã Amazon EventBridge ã³ã³ãœãŒã« ã§ãã®æ°ããæ©èœãèŠã€ããæ¹æ³ã¯æ¬¡ã®ãšããã§ã: æ°ãããªãã¶ãŒãããªãã£æ©èœã¯ãå
æ¬çãªã€ãã³ãã©ã€ããµã€ã¯ã«è¿œè·¡ãæäŸããããšã§ããã€ã¯ããµãŒãã¹ãšã€ãã³ãããªãã³ã®ã¢ãŒããã¯ãã£ã®ã¢ãã¿ãªã³ã°ã®èª²é¡ã«å¯ŸåŠããŸããEventBridge ã¯ãã«ãŒã«ã«äžèŽããã€ãã³ããçºè¡ããããããµãã¹ã¯ã©ã€ããŒã«é
ä¿¡ããããã倱æããŠå詊è¡ãããããããã³ã«ã詳现ãªãã°ãšã³ããªãçæããããã«ãªããŸããã æåã倱æãã¹ããŒã¿ã¹ã³ãŒãã«é¢ãã詳现æ
å ±ã«ãããã€ãã³ãã®é²è¡ç¶æ³å
šäœãå¯èŠåã§ãããããåé¡ã®ç¹å®ãšèšºæã容æã«ãªããŸãã以åã¯äœæéãããã£ãŠãã詊è¡é¯èª€ã«ãããããã°ãã詳现ãªã€ãã³ãã©ã€ããµã€ã¯ã«è¿œè·¡ãšçµã¿èŸŒã¿ã®ã¯ãšãªããŒã«ã«ãããæ°åã§å®äºããããã«ãªããŸããã Amazon EventBridge ã®æ¡åŒµãªãã¶ãŒãããªãã£ã®äœ¿çš Amazon EventBridge ã®ãã°èšé²æ©èœãã玹ä»ãããã¢ãã芧ãã ããã æ¢åã®ã€ãã³ããã¹ããŸãã¯æ°ããã«ã¹ã¿ã ã€ãã³ããã¹ãäœæããéã«ããã°èšé²ãæå¹ã«ããããšãã§ããŸãããŸããEventBridge ã³ã³ãœãŒã«ã«ç§»åããå·ŠåŽã®ããã²ãŒã·ã§ã³ãã€ã³ã§ [ã€ãã³ããã¹] ãéžæããŸãã [ã«ã¹ã¿ã ã€ãã³ããã¹] ã§ã [ã€ãã³ããã¹ãäœæ] ãéžæããŸãã ãã®æ°ããæ©èœã¯ã [ãã°] ã»ã¯ã·ã§ã³ã«è¡šç€ºãããŸãã [ãã°ã®ä¿åå
] ãèšå®ããã«ã¯ã Amazon CloudWatch Logs ã Amazon Data Firehose ã¹ããªãŒã ã Amazon Simple Storage Service (Amazon S3) ã® 3 ã€ã®ãªãã·ã§ã³ããããŸãããã°ãããŒã¿ã¬ã€ã¯ã«ã¹ããªãŒãã³ã°ããå Žåã¯ãAmazon Kinesis Data Firehose ã¹ããªãŒã ãéžæããŸãã ã€ãã³ããã¹ã«ã«ã¹ã¿ããŒãããŒãžãã㌠(CMK) ãæå®ãããŠãã å Žåããã°ã¯è»¢éäžã« TLS ã§ãããã³ä¿ç®¡äžã«æå·åãããŸããCloudWatch Logs ã¯ã«ã¹ã¿ããŒãããŒãžãããŒããµããŒãããData Firehose ã¯ããŠã³ã¹ããªãŒã ã®å®å
ã®ããã«ãµãŒããŒåŽã®æå·åãæäŸããŸãã ãã®ãã¢ã§ã¯ã [CloudWatch ãã°] ãš [S3 ãã°] ãéžæããŸãã ãŸãã [ãã°ã¬ãã«] ã [ãšã©ãŒ]ã[æ
å ±]ã[ãã¬ãŒã¹] ããéžæããããšãã§ããŸãããã€ããŒãã確èªããå¿
èŠãããããã [ãã¬ãŒã¹] ãéžæãã [å®è¡ããŒã¿ãå«ãã] ãéžæããŸãããã€ããŒãããŒã¿ã®ãã°èšé²ã«ã¯æ©å¯æ
å ±ãå«ãŸããå Žåãããããã®èšå®ã¯éžæãããã¹ãŠã®ãã°ã®ä¿åå
ã«é©çšããããããæ³šæãå¿
èŠã§ãããã®åŸã [CloudWatch ãã°ã°ã«ãŒã] ãš [S3 ãã°] ã®ããããã« 1 ã€ãã€ãåèšã§ 2 ã€ã®ä¿åå
ãèšå®ããŸãããããŠã [äœæ] ãéžæããŸãã ãã°èšé²ãæå¹ã«ãªã£ããããã¹ãã€ãã³ãã®çºè¡ãéå§ããŠããã°èšé²ã®åäœã芳å¯ã§ããŸãã æåã®ã·ããªãªã§ã¯ã AWS Lambda 颿°ãæ§ç¯ãããã® Lambda 颿°ãã¿ãŒã²ãããšããŠèšå®ããŸããã [ã€ãã³ããéä¿¡] ãéžæããŠãã€ãã³ããã¹ã«ç§»åãããµã³ãã«ã€ãã³ããéä¿¡ããŸãã 䜿çšãããã€ããŒããæ¬¡ã«ç€ºããŸã: { "Source": "ecommerce.orders", "DetailType": "Order Placed", "Detail": { "orderId": "12345", "customerId": "cust-789", "amount": 99.99, "items": [ { "productId": "prod-456", "quantity": 2, "price": 49.99 } ] } } ãµã³ãã«ã€ãã³ããéä¿¡ãããšãS3 ãã±ããã§ãã°ã䜿çšå¯èœã«ãªã£ãŠããããšãããããŸãã ãŸããAmazon CloudWatch ãã°ã«ãã°ãšã³ããªã衚瀺ãããŠããã®ãããããŸãããã°ã«ã¯ã EVENT_RECEIPT ãã SUCCESS ãŸã§ã®ã€ãã³ãã©ã€ããµã€ã¯ã«ã衚瀺ãããŸããã€ãã³ãã®ã©ã€ããµã€ã¯ã«å
šäœã®è©³çްã«ã€ããŠã¯ãTBD:DOC_PAGE ãã芧ãã ããã ããã§ã¯ããããã®ãã°ãè©äŸ¡ããŠã¿ãŸããããç°¡æœã«ããããã«ãããã€ãã®ãã°ã®ã¿ãå«ããããšãšããèªã¿ãããããããã«ç·šéããŠããŸããã€ãã³ããããªã¬ãŒããéã®ãã°ã次ã«ç€ºããŸã: { "resource_arn": "arn:aws:events:us-east-1:123:event-bus/demo-logging", "message_timestamp_ms": 1751608776896, "event_bus_name": "demo-logging", // REDACTED FOR BREVITY // "message_type": "EVENT_RECEIPT", "log_level": "TRACE", "details": { "caller_account_id": "123", "source_time_ms": 1751608775000, "source": "ecommerce.orders", "detail_type": "Order Placed", "resources": [], "event_detail": "REDACTED FOR BREVITY" } } ã€ãã³ããæ£åžžã«åŒã³åºãããéã®ãã°ã次ã«ç€ºããŸã: { "resource_arn": "arn:aws:events:us-east-1:123:event-bus/demo-logging", "message_timestamp_ms": 1751608777091, "event_bus_name": "demo-logging", // REDACTED FOR BREVITY // "message_type": "INVOCATION_SUCCESS", "log_level": "INFO", "details": { // REDACTED FOR BREVITY // "total_attempts": 1, "final_invocation_status": "SUCCESS", "ingestion_to_start_latency_ms": 105, "ingestion_to_complete_latency_ms": 183, "ingestion_to_success_latency_ms": 183, "target_duration_ms": 53, "target_response_body": "<REDACTED FOR BREVITY>", "http_status_code": 202 } } 远å ã®ãã°ãšã³ããªã«ã¯ããã©ãã«ã·ã¥ãŒãã£ã³ã°ã容æã«ãããªãããªã¡ã¿ããŒã¿ãå«ãŸããŠããŸããäŸãã°ãã€ãã³ããæåããå Žåãã€ãã³ãã®éå§ããå®äºãŸã§ã®ã¬ã€ãã³ã·ãŒã¿ã€ãã³ã°ãã¿ãŒã²ãããåŠçãå®äºãããŸã§ã®æéãHTTP ã¹ããŒã¿ã¹ã³ãŒãã確èªã§ããŸãã å®å
šãªã€ãã³ãã©ã€ããµã€ã¯ã«è¿œè·¡ã«ãã倱æã®ãããã° EventBridge ã®ãã°èšé²ã®å©ç¹ã¯ãåé¡ãçºçãããšãã«æããã«ãªããŸãã倱æã®ã·ããªãªããã¹ãããããã«ãLambda 颿°ã®èš±å¯ãæå³çã«èª€ã£ãŠèšå®ããé©åãªèš±å¯ã®ãªãå¥ã® Lambda 颿°ããã€ã³ãããããã«ã«ãŒã«ã倿ŽããŸãã èš±å¯ãäžè¶³ããŠããããã詊è¡ã¯æ°žç¶çãªå€±æã§çµãããŸããããã°ã«ã¯ã FIRST 詊è¡ã NO_PERMISSIONS ã¹ããŒã¿ã¹ã§çµãã£ãããšã瀺ãããŠããŸãã { "message_type": "INVOCATION_ATTEMPT_PERMANENT_FAILURE", "log_level": "ERROR", "details": { "rule_arn": "arn:aws:events:us-east-1:123:rule/demo-logging/demo-order-placed", "role_arn": "arn:aws:iam::123:role/service-role/Amazon_EventBridge_Invoke_Lambda_123", "target_arn": "arn:aws:lambda:us-east-1:123:function:demo-evb-fail", "attempt_type": "FIRST", "attempt_count": 1, "invocation_status": "NO_PERMISSIONS", "target_duration_ms": 25, "target_response_body": "{\"requestId\":\"a4bdfdc9-4806-4f3e-9961-31559cb2db62\",\"errorCode\":\"AccessDeniedException\",\"errorType\":\"Client\",\"errorMessage\":\"User: arn:aws:sts::123:assumed-role/Amazon_EventBridge_Invoke_Lambda_123/db4bff0a7e8539c4b12579ae111a3b0b is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-east-1:123:function:demo-evb-fail because no identity-based policy allows the lambda:InvokeFunction action\",\"statusCode\":403}", "http_status_code": 403 } } æåŸã®ãã°ãšã³ããªã«ã¯ãã¿ã€ãã³ã°ã¡ããªã¯ã¹ãšæ£ç¢ºãªãšã©ãŒã¡ãã»ãŒãžãšãšãã«ãå®å
šãªå€±æã®æŠèŠã瀺ãããŠããŸãã { "message_type": "INVOCATION_FAILURE", "log_level": "ERROR", "details": { "rule_arn": "arn:aws:events:us-east-1:123:rule/demo-logging/demo-order-placed", "role_arn": "arn:aws:iam::123:role/service-role/Amazon_EventBridge_Invoke_Lambda_123", "target_arn": "arn:aws:lambda:us-east-1:123:function:demo-evb-fail", "total_attempts": 1, "final_invocation_status": "NO_PERMISSIONS", "ingestion_to_start_latency_ms": 62, "ingestion_to_complete_latency_ms": 114, "target_duration_ms": 25, "http_status_code": 403 }, "error": { "http_status_code": 403, "error_message": "User: arn:aws:sts::123:assumed-role/Amazon_EventBridge_Invoke_Lambda_123/db4bff0a7e8539c4b12579ae111a3b0b is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-east-1:123:function:demo-evb-fail because no identity-based policy allows the lambda:InvokeFunction action", "aws_service": "AWSLambda", "request_id": "a4bdfdc9-4806-4f3e-9961-31559cb2db62" } } ãã°ã¯ãããã«ããã¯ãç¹å®ããã®ã«åœ¹ç«ã€è©³çްãªããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãæäŸããŸãã ingestion_to_start_latency_ms: 62 ã¯ã€ãã³ãã®åã蟌ã¿ããåŒã³åºããéå§ãããŸã§ã®æéã瀺ãã ingestion_to_complete_latency_ms: 114 ã¯åã蟌ã¿ããå®äºãŸã§ã®åèšæéã衚ããŸããããã«ã target_duration_ms: 25 ã¯ãã¿ãŒã²ãããµãŒãã¹ã®å¿çã«ããã£ãæéã瀺ããŠãããEventBridge ã®åŠçæéãšã¿ãŒã²ãããµãŒãã¹ã®ããã©ãŒãã³ã¹ãåºå¥ããã®ã«åœ¹ç«ã¡ãŸãã ãšã©ãŒã¡ãã»ãŒãžã«ã¯ã倱æããã¢ã¯ã·ã§ã³ ( lambda:InvokeFunction ã¢ã¯ã·ã§ã³ )ã倱æããçç± ( ID ããŒã¹ã®ããªã·ãŒã§ã¢ã¯ã·ã§ã³ãèš±å¯ãããŠããªã )ãé¢ä¿ããããŒã« ( Amazon_EventBridge_Invoke_Lambda_1428392416 )ã圱é¿ãåããç¹å®ã®ãªãœãŒã¹ (Lambda 颿°ã® Amazon ãªãœãŒã¹ããŒã (ARN) ã§ç€ºãããŸã) ãæç¢ºã«èšèŒãããŠããŸãã EventBridge ã®ãã°èšé²æ©èœã䜿çšãã API ã®å®å
ã®ãããã° EventBridge ã®ãã°èšé²æ©èœãç¹ã«åœ¹ç«ã€ãšæããããŠãŒã¹ã±ãŒã¹ã® 1 ã€ã¯ãAPI ã®å®å
ã«é¢ããåé¡ã®ãããã°ã§ãã EventBridge API ã®å®å
ã¯ãã€ãã³ããã¹ã«ãŒã«ãŸãã¯ãã€ãã®ã¿ãŒã²ãããšããŠåŒã³åºãããšãã§ãã HTTPS ãšã³ããã€ã³ãã§ããHTTPS ãšã³ããã€ã³ãã¯ãHTTPS åŒã³åºãã䜿çšããŠãã€ãã³ããã¹ãããå€éšã·ã¹ãã ãSoftware as a Service (SaaS) ã¢ããªã±ãŒã·ã§ã³ããŸãã¯ãµãŒãããŒãã£ãŒ API ã«ã€ãã³ããã«ãŒãã£ã³ã°ããã®ã«åœ¹ç«ã¡ãŸãããããã¯æ¥ç¶ã䜿çšããŠèªèšŒãšèªèšŒæ
å ±ãåŠçããŸããããã«ãããã€ãã³ãããªãã³ã®ã¢ãŒããã¯ãã£ã HTTPS ããŒã¹ã®ãµãŒãã¹ãšç°¡åã«çµ±åã§ããŸãã API ã®å®å
ã¯ãå€éšã® HTTPS ãšã³ããã€ã³ãã«ã€ãã³ããéä¿¡ããããã«ãã䜿çšãããŸãããå€éšãšã³ããã€ã³ãããã®ãšã©ãŒã®ãããã°ã®å€±æã¯èª²é¡ãšãªãå ŽåããããŸãããããã®åé¡ã¯éåžžããšã³ããã€ã³ãã®èªèšŒèŠä»¶ã®å€æŽãã倿ŽãããèªèšŒæ
å ±ã«èµ·å ããŸãã ãã®ãããã°æ©èœã®ãã¢ãè¡ããããæå³çã«ãæ¥ç¶ãªãœãŒã¹ã§èª€ã£ãèªèšŒæ
å ±ã䜿çšã㊠API ã®å®å
ãèšå®ããŸããã ãã®èª€ã£ãŠèšå®ããããšã³ããã€ã³ãã«ã€ãã³ããéä¿¡ãããšãæ¡åŒµãã°èšé²ã§ãã®å€±æã®æ ¹æ¬åå ã瀺ãããŸãã { "resource_arn": "arn:aws:events:us-east-1:123:event-bus/demo-logging", "message_timestamp_ms": 1750344097251, "event_bus_name": "demo-logging", //REDACTED FOR BREVITY//, "message_type": "INVOCATION_FAILURE", "log_level": "ERROR", "details": { //REDACTED FOR BREVITY//, "total_attempts": 1, "final_invocation_status": "SDK_CLIENT_ERROR", "ingestion_to_start_latency_ms": 135, "ingestion_to_complete_latency_ms": 549, "target_duration_ms": 327, "target_response_body": "", "http_status_code": 400 }, "error": { "http_status_code": 400, "error_message": "Unable to invoke ApiDestination endpoint: The request failed because the credentials included for the connection are not authorized for the API destination." } } ãã°ã«ãã£ãŠå€±æã®æŠèŠãããã«ããããŸããtarget_arn ã¯ããã API ã®å®å
ã«é¢ä¿ããŠããããšã瀺ãã final_invocation_status 㯠SDK_CLIENT_ERROR ã瀺ããŠããŠã http_status_code 㯠400 ã§ããããã¯ãã¯ã©ã€ã¢ã³ãåŽã®åé¡ã瀺ããŠããŸããæãéèŠãªã®ã¯ã error_message ãæ¬¡ã®ããã«æç€ºçã«ç€ºããŠãããšããããšã§ã: ApiDestination ãšã³ããã€ã³ããåŒã³åºãããšãã§ããŸãã: æ¥ç¶ã®ããã«å«ãŸããèªèšŒæ
å ±ã API ã®å®å
ã«ã€ããŠèªå¯ãããŠããªãããããªã¯ãšã¹ãã¯å€±æããŸããã ãã®å®å
šãªãã°ã·ãŒã±ã³ã¹ã¯ããããã°ã«é¢ãã圹ç«ã€ã€ã³ãµã€ããæäŸããŠãããŸãããªããªããã€ãã³ãã®åä¿¡ãããåã蟌ã¿ãã«ãŒã«ã®ãããã³ã°ãåŒã³åºãã®è©Šè¡ãŸã§ãEventBridge ãéããŠã€ãã³ããã©ã®ããã«ç§»åããã®ããæ£ç¢ºã«ææ¡ã§ããããã§ãããã®è©³çŽ°åºŠã«ãããæšæž¬äœæ¥ãæé€ãããåé¡ã®æ ¹æ¬åå ãçŽæ¥ç¹å®ã§ããŸãã ç¥ã£ãŠããã¹ãè¿œå æ
å ± ããã€ãã®çæç¹ã次ã«ç€ºããŸã: ã¢ãŒããã¯ãã£ãµããŒã â ãã°èšé²ã¯ãã«ã¹ã¿ã ã€ãã³ããã¹ãããŒãããŒã€ãã³ããœãŒã¹ãHTTPS ãšã³ããã€ã³ãã® API ã®å®å
ãªã©ããã¹ãŠã® EventBridge æ©èœã§æ©èœããŸãã ããã©ãŒãã³ã¹ãžã®åœ±é¿ â ãã°èšé²ã¯éåæã§å®è¡ããããããã€ãã³ãåŠçã®ã¬ã€ãã³ã·ãŒãã¹ã«ãŒãããã«æž¬å®å¯èœãªåœ±é¿ã¯ãããŸããã æé â ãã°ã®ä¿åãšé
ä¿¡ã«ã¯ãAmazon S3ãAmazon CloudWatch LogsããŸã㯠Amazon Data Firehose ã®æšæºæéãããããŸããEventBridge ã®ãã°èšé²èªäœã«ã¯è¿œå æéã¯ããããŸããã詳现ã«ã€ããŠã¯ã Amazon EventBridge ã®æéããŒãž ã«ã¢ã¯ã»ã¹ããŠãã ããã å¯çšæ§ â Amazon EventBridge ã®ãã°èšé²æ©èœã¯ãEventBridge ããµããŒããããŠãããã¹ãŠã® AWS ãªãŒãžã§ã³ã§ãå©çšããã ããŸãã ããã¥ã¡ã³ã â 詳现ã«ã€ããŠã¯ã Amazon EventBridge ã®ã¢ãã¿ãªã³ã°ãšãããã°ã«é¢ããããã¥ã¡ã³ã ãã芧ãã ããã Amazon EventBridge ã®ãã°èšé²æ©èœã®äœ¿çšãéå§ããã«ã¯ã EventBridge ã³ã³ãœãŒã« ã«ã¢ã¯ã»ã¹ããã€ãã³ããã¹ã§ã®ãã°èšé²ãæå¹ã«ããŠãã ããã æ§ç¯ãããŸããããŸãããã«! â Donnie åæã¯ ãã¡ã ã§ãã