From 43cfe46182e70a3193c3991b38c20ffb50987a59 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 28 Aug 2025 21:39:15 +0000 Subject: [PATCH 1/5] chore(deps): add @aws/lambda-invoke-store --- .gitignore | 1 + .../aws-lambda-invoke-store-0.0.1.tgz | Bin 0 -> 10949 bytes .../middleware-recursion-detection/package.json | 1 + yarn.lock | 8 ++++++++ 4 files changed, 10 insertions(+) create mode 100644 packages/middleware-recursion-detection/aws-lambda-invoke-store-0.0.1.tgz diff --git a/.gitignore b/.gitignore index 104af9a157eff..bcbe7628625f2 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ jspm_packages .eslintcache .node_repl_history *.tgz +!*aws-lambda-invoke-store-0.0.1.tgz .yarn-integrity .yarn/* **/.yarn/* diff --git a/packages/middleware-recursion-detection/aws-lambda-invoke-store-0.0.1.tgz b/packages/middleware-recursion-detection/aws-lambda-invoke-store-0.0.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..38c9d30535f98b15cc421df8fe01e574b1fd2cdd GIT binary patch literal 10949 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 nnk! Date: Thu, 28 Aug 2025 21:56:08 +0000 Subject: [PATCH 2/5] chore(middleware-recursion-detection): read trace id from Labda Invoke Store --- .../src/recursionDetectionMiddleware.spec.ts | 67 +++++++++++++++---- 1 file changed, 54 insertions(+), 13 deletions(-) diff --git a/packages/middleware-recursion-detection/src/recursionDetectionMiddleware.spec.ts b/packages/middleware-recursion-detection/src/recursionDetectionMiddleware.spec.ts index 2707368499a7d..7a06d8cf5f21b 100644 --- a/packages/middleware-recursion-detection/src/recursionDetectionMiddleware.spec.ts +++ b/packages/middleware-recursion-detection/src/recursionDetectionMiddleware.spec.ts @@ -1,3 +1,4 @@ +import { InvokeStore } from "@aws/lambda-invoke-store"; import { HttpRequest } from "@smithy/protocol-http"; import { afterAll, beforeEach, describe, expect, test as it, vi } from "vitest"; @@ -6,10 +7,12 @@ import { recursionDetectionMiddleware } from "./recursionDetectionMiddleware"; describe(recursionDetectionMiddleware.name, () => { const mockNextHandler = vi.fn(); const originEnv = process.env; + const TRACE_ID_HEADER_NAME = "X-Amzn-Trace-Id"; beforeEach(() => { vi.clearAllMocks(); + vi.spyOn(InvokeStore, "getXRayTraceId").mockImplementation(() => undefined); process.env = {}; }); @@ -17,20 +20,58 @@ describe(recursionDetectionMiddleware.name, () => { process.env = originEnv; }); - it(`sets ${TRACE_ID_HEADER_NAME} header when function name and trace id environmental variables are set`, async () => { - process.env = { - AWS_LAMBDA_FUNCTION_NAME: "some-function", - _X_AMZN_TRACE_ID: "some-trace-id", - }; - const handler = recursionDetectionMiddleware()(mockNextHandler, {} as any); - await handler({ - input: {}, - request: new HttpRequest({}), + describe(`sets ${TRACE_ID_HEADER_NAME} header when function name and`, () => { + const mockTraceIdEnv = "trace-id-from-env"; + const mockTraceIdInvokeStore = "trace-id-from-invoke-store"; + + it("trace id environmental variables is set", async () => { + process.env = { + AWS_LAMBDA_FUNCTION_NAME: "some-function", + _X_AMZN_TRACE_ID: mockTraceIdEnv, + }; + const handler = recursionDetectionMiddleware()(mockNextHandler, {} as any); + await handler({ + input: {}, + request: new HttpRequest({}), + }); + const { calls } = (mockNextHandler as any).mock; + expect(calls.length).toBe(1); + const { request } = mockNextHandler.mock.calls[0][0]; + expect(request.headers[TRACE_ID_HEADER_NAME]).toBe(mockTraceIdEnv); + }); + + it("trace id value is set in InvokeStore", async () => { + vi.spyOn(InvokeStore, "getXRayTraceId").mockImplementation(() => mockTraceIdInvokeStore); + process.env = { + AWS_LAMBDA_FUNCTION_NAME: "some-function", + }; + const handler = recursionDetectionMiddleware()(mockNextHandler, {} as any); + await handler({ + input: {}, + request: new HttpRequest({}), + }); + const { calls } = (mockNextHandler as any).mock; + expect(calls.length).toBe(1); + const { request } = mockNextHandler.mock.calls[0][0]; + expect(request.headers[TRACE_ID_HEADER_NAME]).toBe(mockTraceIdInvokeStore); + }); + + it("favors trace id value from InvokeStore over that from env variable", async () => { + vi.spyOn(InvokeStore, "getXRayTraceId").mockImplementation(() => mockTraceIdInvokeStore); + process.env = { + AWS_LAMBDA_FUNCTION_NAME: "some-function", + _X_AMZN_TRACE_ID: mockTraceIdEnv, + }; + const handler = recursionDetectionMiddleware()(mockNextHandler, {} as any); + await handler({ + input: {}, + request: new HttpRequest({}), + }); + const { calls } = (mockNextHandler as any).mock; + expect(calls.length).toBe(1); + const { request } = mockNextHandler.mock.calls[0][0]; + expect(request.headers[TRACE_ID_HEADER_NAME]).toBe(mockTraceIdInvokeStore); }); - const { calls } = (mockNextHandler as any).mock; - expect(calls.length).toBe(1); - const { request } = mockNextHandler.mock.calls[0][0]; - expect(request.headers[TRACE_ID_HEADER_NAME]).toBe("some-trace-id"); }); it(`should NOT set ${TRACE_ID_HEADER_NAME} header when function name environmental variable is NOT set`, async () => { From 3413f70805c2f5ac85e0cdacea64d2b687d36a36 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 28 Aug 2025 22:00:16 +0000 Subject: [PATCH 3/5] chore: add tar file in files --- packages/middleware-recursion-detection/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/middleware-recursion-detection/package.json b/packages/middleware-recursion-detection/package.json index a151c5e3f6274..e71d5cb742720 100644 --- a/packages/middleware-recursion-detection/package.json +++ b/packages/middleware-recursion-detection/package.json @@ -40,7 +40,8 @@ } }, "files": [ - "dist-*/**" + "dist-*/**", + "aws-lambda-invoke-store-*.tgz" ], "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/middleware-recursion-detection", "repository": { From 29e34ba16a81d1b957c3d0547ad52f42cb6babff Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:45:15 +0000 Subject: [PATCH 4/5] chore: switch to published version of invoke store --- .gitignore | 1 - .../aws-lambda-invoke-store-0.0.1.tgz | Bin 10949 -> 0 bytes .../middleware-recursion-detection/package.json | 5 ++--- yarn.lock | 8 ++++---- 4 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 packages/middleware-recursion-detection/aws-lambda-invoke-store-0.0.1.tgz diff --git a/.gitignore b/.gitignore index bcbe7628625f2..104af9a157eff 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ jspm_packages .eslintcache .node_repl_history *.tgz -!*aws-lambda-invoke-store-0.0.1.tgz .yarn-integrity .yarn/* **/.yarn/* diff --git a/packages/middleware-recursion-detection/aws-lambda-invoke-store-0.0.1.tgz b/packages/middleware-recursion-detection/aws-lambda-invoke-store-0.0.1.tgz deleted file mode 100644 index 38c9d30535f98b15cc421df8fe01e574b1fd2cdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10949 zcmV;$Dmv94iwFP!00002|LuKidmFdWXg>2-;AQ$Yq)VHG!C>w)m<1*@yre_6^|E((d~$yL z#a(>1x3`}?c|z*G-`?JR{Os{F^2Ot)&$f4Vo;}-sLcZAE+1~y7Yx2eR7x(ZUlY=U_s^5hE{o$P&fojsJ;B#YIAPgY6FaJ55q5r(}0~`^n6Q zMp{qywzjUXuLFwH1VRqCVl$Q6YQTdR$7esDlY^5Za(H@j)Vt`No}7~xr)T8#`EiGw z9lts|J$iizUw3fSQSbcXtoQ9}_yz&&1muVfc)~Roi3%DPo2Fe+lc*7mV=`tmA$r7! zW^$|uO(GJCBr;EtfsiCstV1N5ND-wWeBH62U~I&dmb{EI#2hBPL}2)cqqn!o}Pdq!x8P#hLXL}(maFhY-*MUXRP zrVd4-rHDI(O6LBE5$O)B2EI*`h)EKP@mM4lk{w8{xgHrfX2O8H5EAj2q;et@Q#n;L zhC3cLEtDoMMUfV7n@7bplN}Oq$wCcC@WlMPL$n|vO%;Q27K-@^DIm$1CUnSvc`&a^ z!;wX-L#{^*m*1Zn>?y+bDRa$1nuH`R&fA7PYQ!f1X}|}1N+wK(0J`;b`+wUwosi5D z-T_Lr(lm*H2WmtmQw}0;lRit>fQOvMMd%)$Im>?*X_K^s#DB?V+vhq>kS13=N&%K6 zzI<2!>;sb_SAfWb$uU<71s>(hC;_siB5LO%l_6__dX3AHHj!+=q-2r#b$}GVgek@% z;sYL1)GEhdo`i9Vr0A!bBtnyzk2%b)1yN$4uR**NPDnx#u}-FY2*`pl13FIs2Yi@H z{GAMV%slgP+W(b>x{5kYrsg}zR2rjx45S#7F$+gD;URSjq9sifjHFJW@SE8FIUtl6 z@*ucQae)>_X_=uIPdF%)K;-N)hb&=|!jQs(ed`s9^DMQ zR*b^6ke7%t+98m%Tm^XImXRrdA)Q^;m`04yE6QWqkDdN|cBuo_6a+A&R+MOF7o2rV zgytd3%$uPUi(qarD_VnZK?*r+Er=FP2>U?ClbFGS6Dh8^eGo<-OeQRe_y^KwvAAyM zR5)UiUs27k7y*K)W?2GYj(Qr{)muo01`hE)RlvLiRWX7&K>DQ^8(RfaA-g~qu17o^ zdB%W6Tnh>6F4+}FR)Q2KLR&o{ET(-S-CsgFHv8ISfq|D}iX|GUPs#O2#HbWRNIv8V zjca&bwa3m*4GQYtA!YJe>VY&{-XVDFH6$BTp6Mr>P>GTPbirkenPl;l#5}n~!u5HA za+1(7Ydfa%L^C;{Av%eU=OZ(sR*(YfFfquveh8-A`uJLomvtahS#Q3KfL7t0FU{}( zUqo;0&HH7zXT?=!P3286{d)KVlo>;M<~ zG)6hPmhfDH!AF`{>J!icpXe+n6wpblTv?F*sx#LWWwy(oLnIzfWK4Ms564_-)$v_c z77D4U(rm1J6V8=N8Mu%TeWV>>*bko1L@QaW{EMO=lcLNAXqj?rG) zF!BvryxcXh4~_`MwK{nWMWQA=Ohu~VDH&6F38qix(UA+enBv0(Z9h+tM@ZOONd#ln zJQ12u;_GVAtg3J+zRs5IG;m?a;}a0<}kf9~-PYd(pN~qYsQkLi# zrVWLh2;;6H;Puqc7^2;Pd8+|6oFwZLto7gAB!L{JhN% z^D|qF!E$BB8h4Ji#W3ix$DmgfjPCD%J1zDhWD^YvrnFN=L{OQ8s7)qjtseKr^pbVR zh+Z*_@*F~#M~lG#;yghVi{p;{FCR~Y)P^yc9k7A2jSA7sxRn7343FHbbTWw{-4sbY zHB<)MWl;-b%E!u%^%mEk8X!J(GrO6vkSRqaN9`O)o(x?^!?^Q(zT&r3o6uM!%zDI7 zjQc#vqI!I+{D51K$#AW=)xrjOMda)h*T4$r>jKgn0ROXGNNKJ?rZc8!J~SxMA%&mO z$l1ibl{>5~ww6MvE)oou5sDPzC-XN?2qiJSRw>u8)R+y86QDXnK931XR&kzzL!V#} zS2oqo;e>uC}$GS(T%z}``(ne3%Hq6zGV~rYG2D1=cLT4GedSL1)TuWCJHmXU?sDgCLuhQE`a&4W&kOc2J zG^xWer*%%Df>f!wI6U`_c|pj0y)G7@2p{Bj23+Pa_kdOSLUyWDrY_d=s$4cVsG-uJ zq$wCcTrp{wrAJ&wU0CEa<4pqfxj3FeV8N&i$i>KHVPLNUYW33Mf%Ld0WvMipCQbweT!NWQ z*md|QLrIQ9)LMvgYa;l(v{$obWWacPMPg8cO($2I0Va#n8L5b0oy$}S;lb2iH7`e? zvRhT~!dcV}wPXyXL5>P#nJiN&Wda3;JjG zqPIbk)i#BhZ)O-924sG{p#~7shJJ45KT{D3pavdG>_jHIFa=W0@|0*OnGyV{)ey|c z*asGRCLRrMMi9w{RGNLIa_(XG0-gor!UZ4-%%T@ZM*=OUHX*mSBLsxE8)_zeaoZSl z40W?CqJgRxlUGpFw|@#rtPGpMPG}v*oxJK~(^Sd+m2$g#1P)z^1YJ6^G*w!RVS5^| z;RzI(LdpA<6wp|_g{c#4+78GYDuFK3ObIen`%{y^ zV&)AgR&EB6iJJYeOnbh-B5oiUGOkUA#Q*kdxDsZtvv9S?}b#;~$StE;{7L z4^A!)zU{s2UHpt9^rClha(r&u2M#QZR|jVoy~Ecp56;M|*JrOz&yS6_HM@l|>?}y8 zCL&QBcO7tN#$<&>aiNom6cfoIJjVqONQ$*ml)v2Kdi7FMZB!~9W3J-NHCJfal?Zv3 zCL5z}_gS$T>u=GDz4k=0lc*tli0WyE}zaZdUnODDN#3C_qg==6ww45V;}LBeH!9H>HLS z1ckff_4;9~XTg0yQO2<><~Xsf2q0_em=23Ie0bWm1mw*DYQkV|-P?WU5d^koD**x+ zQ`3bFISbTTXsEf-P(!&|nmu#y;+e08UE^}1i_}ar8AT7$A0bbk|-@E6AD#AhzU|ad_Z}eO5=@aJV=u~xIrga(+L8*03f_RJ5TKU}aTZ2aOsCNm$4%0KZQoFeTOzpT1`FP3z+VD#5Q0wtDmcpvGauxR+Ea=* zBM9A#>RR3`oV(rTqR?<8gsFmJrL(Zvjx|?8$$+6f=@5z-(j;VN5ff7ewbpNna>vFA zw3g%rF+=>g8y zhaD|R?CpkRF}K|o!6L5x8VqS}MiF0(bn;!4+@j}|B2Nr#O&D?}J}~wf6yE4N(q@p+ zCSn7YMCOT+h@+a)IhA9yL@v0_sFJ)&jRVb;4t`a4*8jQlZ1?LY z<^Ip7PaZ#g=>NQrPZQh*n7U9mpEpbeI5547ucUw))U?GufH_hf(tP)hsUJm@#;n;P zAITMsQ?^GSQztj==M7BT$rT5gdACFMouh9x&3DagjFGf=C~5D0RmH(UQ4oJs@LX%V zlR*w_xX#+GW)Fv+!$|TSiYz(j$uMSGB+U+KwaNZp$;XE6BZTsp?Y}UC53bcqI_^i5 z>=PsLkjVt}TE+PF^O`4*lPj_hF*Ixp1uVHTg9;e-*+58k5XbG7j{@#P)J#M6XW?aF z19dBN(1B*Mc8aYn!c@!?-HkYIbafNnbk_{pN<`P?;N3h71w$G$ z&F0Vr>y$Yiyj2`Ks?=g`sB=uiQ5E+hypJRZ0-x|VbHH-lZZ*|Nq;W)0c5LU5GOm>; zwM!{UiKXAg_s1vM--TJ&hY1UHyHy7(@WinlXz?vOGJU|U_VZ0ZYgH7dFlJfWj9mXM zRPg#tUqfV-H71!|SQB;|jlxb$i13@x4>nE0I*NVQ`^h7jQ5l&03<6=LdlA_uO`JOF z+PS-E6`t2T^aGp1aQJ8Ul1*#J`~>DF8->Qm8@IJZ-h6+2Lb~L&tvHkyh?~!vq!UMq z>{)tEd5w|sX&uNkX?-NW%pdgX?DXRJ@Z$LB-4Dk znm}Y8c*S(fQmd1b#1l17m`T^!$BdiA$pbS4QgqBJw8&|0grVousor4v_!aS(BlZqv zFl0GNT5T)y1wysg0_v#bgDlhPW?A)tZbY*+<7fu#p%BvJwz*d(&Pc6R)tp-pdxq*6 z01H*l4qK>ncHC^WJ7+qxF{Thwwk9QgE3wTgSn1naYg7r|iYjzkvLVZAP_3NKSMJT| z!ooT3Mm3a+!7#nM;Xh ze^O7`&3Tn0LnGXRaV~YlV0$8kI{Pqh+V;t8DQnUQvhQev&(Dbct3d43Ju~Zm5$J3e zlXYv4(sMV(KV_Qi6?i#FTJ7SHA=8J(VlOdr(GbO!fs)zU>ev7%ea3Vu6IAS0 z6Taw5^F)_N%__Kmp3&)rq#>&VSR6f~YKg_(6vCKqwCWoB)MZi%NxDUG2r0yFB!+Da z+yjlN-8jmk9MIpny5P$u*)PDagj6Nb{7AfK_sAJ@UfKY=SuJu{s-RPv!`fmW=|x4H z5`=oUTxI9WZFJSjY*2V%@8^!?7pHg-;Rg{eJIXH}K6kkP zf4e>ZrT720pFVz4+5dmMyYu8>|Nl3)|8EDDqW&wvBeLyw{?Svs8wqh)+V%H-07c*0 zTFwLIy{vGQhYIP0krCDK)+C2C=9+yaS?SFIYpd-cDdrtZ=xMUH+SnnJ>rmS(%;Z;! zjA#LDB5utp2iSD9Tmz_ksyGIoym{W(di1D49u?d+^b@n} zr6Oq6QmR27Z8h*;{?Oid5?hq<4ZkqkxZB5SUO_g41NiHu2x)w7MmZ<8wMAY@p^c1O zvZ-k!vm)U30|uPMk@DxN5U==!g$?V253G?x_bC6j>424KV$OhYZ$2fqj9;uwKicx= z1Yd7|?vO#!_FT8bY6SKI29^vqGzfygt>OlsvTnDG;CJ>-P<&Gak~Hj@OY}U1^0G{8 z5i&!jk!!7a^HbA^JK&)$IA`x8W$g`9;L!|RT9<6<<6*?yJ-R<1ArEo;#NUEnF4^?$ z417&(+}IO~t=&YfC!8l`wZi4SFeR>-w8xj!tyGzncFe5)g27baBDuW98Ul2N;<`pUD#~AylUafm=!JUEOk2^vG5WY zU|g!jE}pJrkn&393i?m}XMZ1GPr#&S5qcE#-Ja%U1+oP%^kVaHooKe}5UtUND!%YF zdfxf`c8=YB<~=oo7dH*a?|4=`t#|R{kAEbKb4a@mzDjS&O@qaXRi7+*SA*_q$h8-2 zsFcD2@Xmd$RNOL;m;B|Gi@WcWL8e={*g9 z_aIg51-)b!@UG?(+XqVlJYzIo0-(1jnI<(|$&0(LxDxjGP}kHOio}Hx=7nE)i>EoS zH>gsy^*W>^o}ai+etA2y|AUWH*eLWT25uIQm-K-eoY@71mmc>a<{fjz0vgAyUn+aY zOSDkc9yWc8wyLJvsoSa9%U&IJ(Z6GT6{uPZeQpm|7L_AYf=Q}It@mKeba$uwhmWiD z7T&xs^}rO1#}M&bwzOK3DG^^WL`X3WaxGHrzV48n?e+{{1w>gAZ3fMocIUH_lHEI% zlHCnT$?hkVlBY`x$?jbU$=lMH!v1lZ9KnvT< zsq#GY({!AiCw)yr#)U&>PxW@0-J1mt$+pHDNrk|I-l;39W7`^5;V%5fLVYdhfC*eS zp#+w2R9)I~XRWr@n~z#cU#n;V9KqFE+7$5w4jtNzj#s~1Rw8#L>r%xXN)YZm>R{vzvOyj}KnATN#eiD6zR zE!3%3NpWq#6%Q|jGaVRQfB^X|#S3KMCKNcX&1{lkZMWH(WkV|Vz?cxfk7X4mKc8ie zmV;C%+^;Dem5!NibD8%&ES7Vcik33$ZV${$_b*|mLKRqKcL|CdnrrK4@(EAK+5bdl z+%+S08h4Z8RY1>ZyYjXn>aC^B+tF7M=gw@?yA-H`Jl7cd4H-lu1;L_Tv1MQs)S#8K zVGWCCH+LtdbjtCy-=%FFg(F%a)Yk5Xg`xd-9oXNM>X-#W#TjD+Y<#e1+%y;1n*pwI)gF>{#Xvd|*>ZF6f%Rt~~OV7Qt!4I;LDAR$a4`S+UE zFV4N!<=ZWza(5tyT>hLMPYcWo-&m06$#4}-fE1Jtp}_-TK#2zq%yk=ncw~Xw^INx; zZ?N0S!4tILYfnp%mmglGqnL3@|V0#cl6 zBZo-Uyyf0)uDL;E1&hyUUc&Q!;aXm7KEB8OBCj*)oM|1i=rd_hQfUb93)MT{HM&DA zxZhE84vN&K=wr864a^O-(3D@Tm}Bsk>1SDETj|i;WYx-~$&;$3_Y#Vb3WUm7aIf}e zp(BijaMFodtx#(X6^PA9ibSM}xFhh@8rx1b?)iO0JoEO(HWTyImH1cjFV-Dqmy6>| zpdK&RcPcf33m?Osj1VuGi6AWcEk`g5WW)JLv)I}I>A^VJ4&`552dQk!34O`k{O?}GmP zg&n{1GNV}yy^fO`%8%^LSb%eD#*iC)_hgOszR$g%H`t2WQF-OB1k zB4MAi(aWWFu?fp1W!bU2OO3TOTG=w*ERM!{t}d{Fcr1f;2lh0pUp$!7&mtzvc)eCs zmUHtSw{mPh7uiq1A^_a36MPZyQBV>jWL z`U@Uj-ZnBT!@Co!`ax?RUOrgUPam9>*}YbPmNE1pKD+Pu%p?707@pmWF~Jb+!KQph z5!&sH${j>$DQnx){K3( zjbXjJVXQ0ky;JNT--}U&a|=IXlj<~Nv3bnobjhK+%MX3L)KEjojfZN-cuK=dAtvP2 zXw^RZigmY*eEErS<`9S&z)u|b&6sYdjpn~@NQFf zM%p@W@y&{1)_W)L{hTg{H6hOIbzKvlr{bFdI5SIL6JBkkwmhsLX30>G?3+!`)`;m2 z^VhPE{W~S@?7j+nuP?rf@tNFRv5eh%xU7OK5mRpXvI>)%?{2rB17}}~WXPoX^5Ig7 zJCcUa_)?0zQUlU(J`z%|CJy&<{Y38BGln^5KHv#gBVuZ^+0Q!ndXio7J2DPE?M${x?A5I5w8i>*oO`A0V_80tmsgsV(@H&Ms^}m-)sf!U! z@}adNztUv&5N1qQQHwR!Rgk<{6U~tKm8P2oW6s*vpR7h1W=&Kt?kmkU1H_z_&6;cJ z&Hy-i?{Lkd_aqBbsrVHupC+-n27qjeHTM6l9_vi|_sQdj4uK^DlbFF-_-O)XB5rS} zkKUcglnYL)y>!2TV`KLZ9}%ycO~#A}@lSu6J%A5L%aG&$coNlK5bYL@iLy(EYj@{F zr89qFaO(NTTSvW(<-hf~^xxbRmP_9DisN@y9KU;)Jz~ok^fCVchpy#?Qgf1;o=!H{ z(}l(1uGvR?=<3>}&EDD~|43QN2=yH@hQwO(;gCr+zqWO+Ckx#{pVOwwYa6actW_zw zm#(K3JjcA+$lQ9$x@RN(e!7ZRI0tUE^GRlR$!xZ___uz(?r-J%U;F>yS0$27&oTG> z-|d}eJGJr?|pp06EqV#X3ag){Dxkutr%}L>-tCV;zmRBib(~>*Y1(# zcCa0o&ETfV=qK9#VoW4ap_s6UL{w7(An1^hfso|j&AGca?LOEqQe1?mm{9pF2sSZcp@8)kiB8(YDe#tTE$^mgi zzOkZqb!2aT2|4r7_(rQxBm+L&N<_qV{tOWQ@6Mlt-QbCX{0(v$e|Nv`{3Y1g+0BrH z-*J8L`~Q0yJPDq<-|Xqt@Z95IC)mkRV#$yvJ}Pd4zwYn+IoJ-i^P$$l{zwx#WWb%~ zl*;6rC&6EWC(Xu9|M&6vGPA?h za+`C^i?+Jact6WEyoVIyibqTlN`@?9l7}5KVX~VyL1nLRDF?f;oF52CPZO5Ve#{g; z?C!;uOiRwLuwpfzVRHpN4-o^%M0qldnVToar(>G3%x&7$9^^)C4|33GeEB7L z!Kh9pQ;kNKJbKj2m)LVq9zEJ4=XAj0sa>vzFEb9&Vmlkb0HMDs-w$hVl7kt(O?j-l z=8!3Et`$L^*^wFAWXv?hNn6?WY=`_}Z#;k7a$YDBp$dv-f9r#!(=BLiQ+g|6SHqM? z48QCGf!IW=V5GrCw@89>S8a0y1*kBaL zWR`}*Um9ZU zO|=+PZLe~$H;nUt;~hPW_!lf>Z-Q$4sn3Qy!CME#z-+#HT9jP`?u!2roLvI)pn#Kh zwn!vjLFI`>L<`(QBJa!9yY_n$aoDqsrvXwgj}{t+d*ovQ%^Nb1Vmv3Je%@$6d%8i; z)Ig=-D7O(b(%xLXk=+++hV8o&AHJj7aWu&)JGSNGtak`kj1n44MkAlBQH88Hb7mpX zX8p5!MyJGDiiQDufLDT*@2f@=Y^tXsWZ zRb|K-F!t?x6CY+I-XpVVVWLh01pa;Vym4dX#a$Q6RrYQ)n3U?$%omy9S6Ao+KgDbH`X0#I=axjOnGf3sQ!@)TTpragR}ipAd-} z$u~d$z^2Vv3sPo59kY;jqj7H5Wi`w!&o#=F7Dp-}k-2ak8psl%NuQCii1>iBs6vR@ z76kv*-Py&~p2{$ATT0XMq}c(p!h%Fxx1islfo7J2AC6;tfg?@K9dLW_V;R&^gzk{9 z5_a9?(N}XM!c(S3<4`15Ea4#J5bccw`mrI?1rk~bAibm2MZ~|)&ss&)m9M&A`8wdt z#4N1;c}Axf#+@vW_b;9sBE6$Kj93H1&E64M*Hp0xLrJJWNZwCD=3pRZAjY3SyrXO# zWd>2L_pFk%K#KxVGy4Lh1)&D}DCBZf_OF|6G_WsC0h~}o43=f78c!iu#IVWbB1y^E zSHqkEY0a7{^CoZDSJ>ueY+@N^Zkvl(Lxg3AbjToS7o$t$iWLy_dwfhKkEe!5{iz=U zF9Wy6nR&OkP)E>rO*m#yg8(;$BDo2;i<Ky;1U)N^f1erm_ZZq+qx#;Or}uYgRr8)#!?edimKxjoOLlVGym!I< z*RY=iJ1!H?oi z$)Q88M;uI?BBA6cduaFEtCX;=nLMeSyfmS9+Nnq-p_56>UGWMH{JcU&b;*2TS>r2J zDQxVO4W&(d3xE}&SCq$4L$mmGf3J*6exi~i0Zu2n zdz$J-qlbKhByzwch8bFz*xC5gGO0T_9JEACG{hp{cooyyX^L0z!Fx7gy1l&6^d&js z%Hu%}*+%TvY8|{efA{j>$8V1g-kqEt9sm9O-O1^@?_QpMd+_qz!JBjQ)BcX(!9ayiJtv?lO9Y8zGdp#0MB+@e@7vcGy_4_Ww*0?>arC9KgS%X*lywuKv-PXC(MY2b10lz`N|Bdl$Ir^&L<+pP nnk! Date: Tue, 9 Sep 2025 20:11:57 +0000 Subject: [PATCH 5/5] chore: read trace id from Labda Invoke Store --- .../src/recursionDetectionMiddleware.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/middleware-recursion-detection/src/recursionDetectionMiddleware.ts b/packages/middleware-recursion-detection/src/recursionDetectionMiddleware.ts index 3b8f196889cf6..21355280466d9 100644 --- a/packages/middleware-recursion-detection/src/recursionDetectionMiddleware.ts +++ b/packages/middleware-recursion-detection/src/recursionDetectionMiddleware.ts @@ -1,3 +1,4 @@ +import { InvokeStore } from "@aws/lambda-invoke-store"; import { HttpRequest } from "@smithy/protocol-http"; import { BuildHandler, @@ -31,7 +32,11 @@ export const recursionDetectionMiddleware = return next(args); } const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME]; - const traceId = process.env[ENV_TRACE_ID]; + + const traceIdFromEnv = process.env[ENV_TRACE_ID]; + const traceIdFromInvokeStore = InvokeStore.getXRayTraceId(); + const traceId = traceIdFromInvokeStore ?? traceIdFromEnv; + const nonEmptyString = (str: unknown): str is string => typeof str === "string" && str.length > 0; if (nonEmptyString(functionName) && nonEmptyString(traceId)) { request.headers[TRACE_ID_HEADER_NAME] = traceId;