├── .dccache ├── .github └── workflows │ ├── application.yml │ └── infrastructure.yml ├── .gitignore ├── .tool-versions ├── _scripts └── terraform-snyk-scan.sh ├── application ├── README.md ├── app │ ├── __init__.py │ └── main.py ├── backend.Dockerfile ├── backend.entrypoint.sh ├── backend.requirements.txt ├── benchmark_input.json ├── docker-compose.yml ├── entities │ ├── __init__.py │ └── thumbnail.py ├── integration_worker.py ├── post-event-driven-benchmark ├── pre-event-driven-benchmark ├── run-snyk-test.sh ├── snyk-docker-image-scan.sh ├── templates │ └── thumbnail.html ├── tests │ ├── __init__.py │ ├── backend │ │ ├── __init__.py │ │ └── test_endpoints.py │ └── worker │ │ ├── __init__.py │ │ ├── test_celery_config.py │ │ ├── test_entities.py │ │ └── test_workers.py ├── worker.Dockerfile ├── worker.entrypoint.sh ├── workers.requirements.txt └── workers │ ├── __init__.py │ ├── config.py │ └── thumbnail.py ├── ebsource └── .platform │ └── hooks │ └── prebuild │ └── custom.sh ├── infrastructure ├── .terraform.lock.hcl ├── backend.tf ├── data.tf ├── locals.tf ├── main.tf ├── outputs.tf ├── providers.tf ├── tfvars │ ├── main.tfvars │ └── poc.tfvars └── variables.tf └── task /.dccache: -------------------------------------------------------------------------------- 1 | {"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/integration_worker.py":[129,1630006270035.815,"eed348d0892b9e4b5f9fc567c652662ab8a61c7d95c3d2ae4117537b157c800f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/app/__init__.py":[0,1630006270033.9656,"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/app/main.py":[1660,1634432422233.6487,"bd2d3d86b962d12a92c78752b75e6effa5a642c5df0db420185ea5cbc5606b43"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/entities/__init__.py":[0,1630006270035.0464,"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/entities/thumbnail.py":[1612,1630733811494.3967,"25d672cbad2dd04498cbd1b9ad0e87c1881794b66b9bb5502a74bb7595c3cee1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/templates/thumbnail.html":[182,1630006270037.1587,"362ac4cb1ee7863d5caa387cb18e4e5f72a5dfef44aee96c0bf862794603ded5"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/tests/__init__.py":[0,1630006270037.3445,"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/workers/__init__.py":[0,1630006270039.4587,"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/workers/config.py":[1772,1630733811499.3655,"d27d421d97cca5559217d7a112b317dc03ac4c701f084210ddf876d86d36fe14"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/workers/thumbnail.py":[474,1630733811499.9512,"8ab02ca76f6c3fd75d021b76064f98407e15d58235bb403fba083fb539ae7451"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/tests/backend/__init__.py":[0,1632481571113.6213,"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/tests/backend/test_endpoints.py":[2165,1633818844895.036,"dac75128778c7ce14d9d7d6755e0474dce35ab140a059467afb84396bb9968e5"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/tests/worker/__init__.py":[0,1631522106381.258,"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/tests/worker/test_celery_config.py":[1641,1633818844896.5295,"88744d6f58383ff79fa3a3460a2ddc73061fda3a8ba48c1406d6f1560f5f5173"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/tests/worker/test_entities.py":[1361,1631522327993.5771,"f78d454b0f52d138770834df4704ba444868256434814fbd13e44c3d58c23c0e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/application/tests/worker/test_workers.py":[700,1631522339316.5374,"08a9397f626bad674dd7bfd24e8551cb10d7df17cc56612a82c7bdd060d78593"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/distPackage.py":[1203,1633756636652.5615,"21009bc6ef2ad01baa4b8599de27ba6125c735730978b49d2a111404afb0b1a3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/package.py":[844,1633756636661.983,"f6ec56623397a8a61f11d8ba58e112e425b420e61d5dcd3278a7ef28428efede"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/pip_resolve.py":[12476,1633756636665.9922,"e43b19825b2e71d071b3c249c9d45bcd60779671bac982630ce50758b8a4d1be"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/pipfile.py":[1788,1633756636661.6343,"26583350f08edb0e25459b60a41bec3084b3108495fff6200acc73cb0f1f1cde"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/reqPackage.py":[1508,1633756636660.0254,"88f09752fc78fd5c9100d3c26dcc89972e2c3b1b08ceed7b92a7a32f5f2bd35e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/setup_file.py":[1427,1633756636666.5908,"87d7f724486086151e8badffa16186c8855592e44571fed5786c5c2a081f14e1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/test_pip_resolve.py":[6291,1633756636667.0664,"6642b79cefffabfb88e8d30c98fb32ea19f6a26329080f2761701296ab37b0b7"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/utils.py":[2258,1633756636664.4502,"40121736003100fa5adeddbf4148f758344fb860a43f67eff0d89dfe049c04d6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/gosrc/resolve-deps.go":[13987,1633756634069.9053,"721efa3085e73fc8535f2b17e2601ab349da8f4b241cec08ab3c499fc5dbead9"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/110.index.js":[1834,1633756634073.1304,"ee8d46c4924a2f1ab7121c322eee0dbf96b964d0f51327a2102f1e9322020929"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/139.index.js":[769111,1633756634097.634,"d38af7617a81176afeb5a49198b8afe44cfcb641d6dc7e3afae5459adea0c008"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/200.index.js":[58649,1633756634098.565,"40d42f3042ae65ccb26d0b8fd4f7a53b62734c85b9508cdd7637d58c6d05e9e1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/409.index.js":[33570,1633756634101.8933,"cf2b86031d51b1f1a52a92a9efa6b25c2f98221f7fa7230016abb0f5fec5a5ef"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/477.index.js":[2569,1633756634114.19,"547b2b8dc6dca2eac91b5f6665c1fc59de794e21a17650bd9311631a4b1cf138"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/522.index.js":[3501,1633756634103.9604,"c79aea0de54f4c6686e0ad4b6de8be4b7ec4067ea5827c8708a82f2ae99a1f0c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/535.index.js":[568159,1633756634173.7705,"eccff9f0a337889a87b2ff14268dc48b3c9f74e62fe0922b06bf321176593bda"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/542.index.js":[5400,1633756634185.5618,"a3346358e90524d895041d2c2869b91d44f76e59576135d185c38cc9f3522d14"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/622.index.js":[304806,1633756634199.3723,"aa52b4c32c57c80434e1248ae50b8049cf045c452109b4cc84de09ee10cb0f32"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/64.index.js":[8629189,1634348036886.2307,"74e09960ad14f0781a19498794cc0ed524862a6cb99a78029e849bb8771d9bde"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/708.index.js":[24251,1634348036996.8445,"c5b579b99b5e4015b25196f6b0d6c9fb8330bfb017c98c9201316060c3c4ba89"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/741.index.js":[105976,1633756635108.8606,"bc720636ce167ba51156b2307d0c8a69c20643758ebf1e24fc0edad1185ad06e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/77.index.js":[1115697,1633756635194.5452,"ad8a32e182190bb0c9ff809789c148fa7d43cf5020a0a0eb7b924a776415bd10"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/784.index.js":[225397,1634348037147.776,"681f972a09c6368a0cb9b165a3fcf5640fd953a2576ac2d1a3ce9f1aeb16f1f1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/788.index.js":[26512,1633756635182.3787,"274cbbcb122405d1c52c0cdc0e82f95c4d97574a3c63334ae94142409f695501"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/855.index.js":[1252,1633756635186.7026,"656f5a00aa59133fc6e078c0ad8da9b83ce5f894ec1aee4bae2d26a4095f6022"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/862.index.js":[1418,1633756635186.4304,"4f2ea925e30e1fd84fab90a8286838b1ada2f5b8c1f81b0bc0a507423bd271d9"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/917.index.js":[4172176,1634348037490.2588,"d50b3914ebe846c7aaa1b40adfdec3958091f4f394255b42cee8ece840c50ce4"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/959.index.js":[22576,1633756635449.3005,"9c08af0b5c96527a64c8f7631a82de19cb9840472c9331ba76fd9638e243d981"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/970.index.js":[529,1633756635449.3596,"78bdc755cc7edca17498a5b493223d85944c76d709a525f6bcf01dd4234879d4"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/974.index.js":[20818,1633756635453.9653,"9a4a3ce397b25e9999081be0c4ee47b788acb185d6fc0c0d143a2c91fac6652a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/args.d.ts":[571,1633756636694.8909,"01209e18d9146a72d34ca82057b55124c1230cd9a8c1fa846225e0499fb05f52"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/copy.d.ts":[82,1633756636713.9102,"e358619dbdefe13a77bc14f819d2a9d1a655343e1d3e2492b8dbaaa37aab0ef7"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/index.d.ts":[11,1603874218190.8103,"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/index.js":[1347523,1634348037640.0935,"a3e5ba3acc056e404b31ab3752bf890be120e2d937609c11bf3e321ca0fa004d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/modes.d.ts":[202,1633756636868.8728,"9ce439dba8b35ccc4d75b6d59295c3088a276d37bb0a42d4c807d962b0da5f8f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/runtime.d.ts":[115,1633756636975.145,"579cef550575b5d39c72a138dc1181604b25bcaf5206dd2e486ff15f3b1c2df1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/alerts.d.ts":[345,1633756636694.8325,"4bd1205729905735a381b20046378bb798f72be4440bb81a47c21a9286dfd853"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/api-token.d.ts":[382,1633756636694.7637,"8ce750fc304386b62332820e7eb8f5a4b9b2c6c7248a5e5b46a64d03490cacec"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/authorization.d.ts":[143,1633756636722.813,"d9d6b4beeef36314a6be7648f424c16c4ecae0fb86c90ec3a4dd97f6cc0766b3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/common.d.ts":[58,1633756636702.0537,"613c9a86acf1144a9549772a7f6cee63aca9d82ddbb9a0f2ba196815acf74973"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/config.d.ts":[370,1633756636701.769,"16460e7a396d5d4569b932bf9be664d276e68d3b159938752bddcc6153bd4f1c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/constants.d.ts":[203,1633756636723.4702,"9195c92d2d5508ac818355f6ab506cdf3e92764a47ac9b9b2131a18af6386eec"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/detect.d.ts":[579,1633756636713.9863,"9d70c4ebfad7bd5584e028d76fd10b3003a27181a23129f5c8eff4bc41f64808"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/display-policy.d.ts":[63,1633756636734.1594,"6e3aabdb8b4b6b24f91f6e816bcdda6cd2faa5a4841525b19f1823059e31dbcf"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/error-format.d.ts":[101,1633756636740.1555,"541df9269b77fc47e95801cebdf6e83f80302a8693f5f1d49a8a5a4c0f81617c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/exec.d.ts":[79,1633756636721.0212,"0a3ac268014a34a3eda175328c875f8873c4b05aa35c073381c122af9d2fa977"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/find-files.d.ts":[988,1633756636728.7678,"0325db7dc298310afab2b1b62be0954bfa6515e1227ae7dd451c8d096a594ed1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/get-file-contents.d.ts":[121,1633756636762.818,"def3e280334fe0237d33554422c2d2578114a79629ee2110e53c09391e398471"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/is-ci.d.ts":[41,1633756636791.0168,"05de01c285dbdb5f06010f5f589d9d20fb498c80b29782d860e7542981cfc745"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/is-docker.d.ts":[45,1633756636870.5857,"70862c64a8dcf702f0c383e5a832c19cb03ff0384d66af437f1cfdc998da8d1a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/is-multi-project-scan.d.ts":[206,1633756636791.1506,"1ce43faced8e1d25f00ca6a8f08d9134c1e8c0946094af1a67151353ebdf1da4"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/json-file-output.d.ts":[1106,1633756636791.0593,"3764a02f3b760bc221c937c1d9fa0ade7a79a027f74ea6a4ea56d693e9a90d9e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/json.d.ts":[364,1633756636871.006,"6c35bac128f134f20e65dc918e572d37c3184760535de514082be92e70d9e385"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/metrics.d.ts":[1470,1633756636881.2117,"7ef1119d997cb553dd1023ae54c665407620b8ad52f76a55494817131133c931"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/npm.d.ts":[202,1633756636960.3867,"e2dc1789f49d54dc8d11e5879357b2373e1d0bdd9063da3df36446b0ae172cc5"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/options-validator.d.ts":[289,1633756636978.0115,"310b4b963179526ac98481b76ebdc59006d320427941d0c596d12ff55cac6f3c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/package-managers.d.ts":[1841,1633756636878.3381,"dbefdbb6c6d95a256679fa4edf409d0e409c7a23243509b8805929875cf1702c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/print-deps.d.ts":[406,1633756636936.1782,"c8c1f794fe543d77f1190c9a34686eb1c17020ddfec96c19f69a0fab1a3d1b67"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/prune.d.ts":[251,1633756636936.32,"5ab411466aec341a77842e0034841f2420358c7304ea0ac3d87f08034c3701e5"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/query-strings.d.ts":[122,1633756637026.7363,"d69fedbe5d4f5f45f0c183d1e4873663a05c579c63fef43cf5e4f4289afc3212"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/reachable-vulns.d.ts":[513,1633756636936.4866,"6c1f2f11ec1f706607b1008d63eb0315091e8e2ebc2aa02acb4e7f5ba8482bf2"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/right-pad.d.ts":[80,1633756637057.761,"f0fda78661e462607ed2659a83e27f944b56a80da787d05bb9382042ef09ba3f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/spinner.d.ts":[280,1633756636975.3066,"e5af0a65ad9154c9cd760dfef434ac0e3acde4520b8bf81d50fad3b97adedc8d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/sub-process.d.ts":[115,1633756636977.4995,"267684724329a9afb28c82a3f042b4c6435d4b519f3b52f7cccb3ea9885af2ee"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/theme.d.ts":[452,1633756637003.2727,"39f7d6d063bef0c40816e34ed2489e874752a159d90a7e5534d4acfec4b61b91"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/types.d.ts":[5782,1634348039847.7166,"05a239ea632d84fbbb723815f2f793492504e2b04837b635f94ec4e362a59b45"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/user-config.d.ts":[294,1633756637117.488,"6d172a512511cad7aca0d040f1bdcd0c1d97413cee9833aa4842bd7f67503fcb"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/utils.d.ts":[268,1633756637119.6616,"3dc33b90b527fe68ac2d75c439e6b7c4cb5de2a45fe3db2eaa6b492e11c3965f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/version.d.ts":[283,1633756637112.282,"c3ee3ca45d6944149554e588e80c97f060d1c5676a81185bbe722ff8bcd29586"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/vuln-helpers.d.ts":[607,1633756637112.4753,"5845d2883efd965e092ab8a771e27ace29291d46a2227d28732d2620125122b7"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/yarn.d.ts":[129,1633756637111.688,"5d57d218f68bfcfed91ba2be73abd885e9c6048e322facd592035ed61d4d9ce2"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/help/generator/generator.ts":[4001,1633756636737.5737,"23c16059e07fef5b1cc651c14dfa8431f5c41d4f4b147b67f17b3bb097e4bf3a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/pytoml/__init__.py":[92,1633756636652.472,"ab5d97bf6dd3b5ae3882d2b81c62baf06af8b4a7dc8882e27453e63eea08a88a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/pytoml/core.py":[509,1633756636661.1921,"f42acb2d3b353dd5a3130467633b7f8b87611dc66f1b1b3f1ac3256005f7898e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/pytoml/parser.py":[11254,1633756636661.8823,"b2a6c3007913035989261719fd313292cc4664d33a14d919c2a346d85a6b3535"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/pytoml/writer.py":[3815,1633756636668.806,"fa648e5466a218bae98f905147b7339aab995c919f95c1251ebc00777dc9e3c0"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/requirements/__init__.py":[353,1633756636658.7427,"2ec54f53204ef9c38bb0162a9c4b620a4410b583b2fb842a7a84325a2d2f3f8b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/requirements/fragment.py":[1352,1633756636652.6677,"9a0f61a3d1bd3ba0ff6b19f83cd302792bd0a52636ea94665212091d2c0e85b8"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/requirements/parser.py":[3092,1633756636664.706,"692cfb7547147ff92b10ac9c8dbc1c48cef63e822cb28dd2d9e23bc23d97b97d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/requirements/requirement.py":[8925,1633756636667.4373,"46eefb38cdb9d779105a9d145decbc64ec0fe02e12cc8a60ef150b590f11626f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/pysrc/requirements/vcs.py":[405,1633756636663.783,"982ef6b0359bcf35d4b991d90b0db9790ddd262b57208e44e00637920f321c4c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/config.d.ts":[112,1633756636701.8923,"3676697deef4183731013c27ea62cba52afa158a91e70b9a5971a179601a62fe"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/help.d.ts":[72,1633756636752.133,"209cb00d0416e53623f54ae17bc094aa32211d056d82f56e3f2463f7eaafbcb2"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/ignore.d.ts":[109,1633756636782.751,"5be722f23fbd5dc622ba0de70210d43cd3ef79b17ad6392041eea6b82ce5cd46"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/policy.d.ts":[71,1633756636878.871,"20233c2a0c6174f910ced787ff15922308114901acf97fba758c1c9e03aec687"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/process-command-args.d.ts":[184,1633756636935.154,"8b4da0905fbc21c153263834c2c3c91d2ee569e226642f1f99bca23dcbb1fbbd"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/types.d.ts":[1194,1633756637103.785,"9d3373858d4066d1211affa07711fbabf7e7b0baccce38c93409f9bf64133f16"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/version.d.ts":[52,1633756637111.5796,"fa502f56d177ee62eb3cd1a24af1994d41ad102a779065b0ee52a440bfa3be82"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/woof.d.ts":[95,1633756637111.908,"d9e30e4fa0b36bfecdd2df1ef59fba5ded6f962d767d9c5ba149b94a95dc8802"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/analytics/getStandardData.d.ts":[189,1633756636751.3271,"e05be9ea745a069b84ced8fcb978b65927a2a4fdb358b27c8193ee5894d9b645"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/analytics/index.d.ts":[1001,1633756636772.8916,"fec937339e0afafe9209b8c772463c6c84dcd7a162ad19bca938e57dc9951506"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/analytics/sources.d.ts":[1137,1633756636977.5376,"db863945002696c44b5a1280a62133981926b45a0e7f4201a5011ebaa6c9f660"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/analytics/types.d.ts":[471,1633756637103.3699,"6cf4123a3c4d712e663551c78a0286bedf652eb3f74ca0ae814209b366ef0185"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/container/index.d.ts":[723,1633756636773.163,"d22cdcdad121f04d7532c10651daa1d927e6812ccb18c3816cdb068263623d59"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/authentication-failed-error.d.ts":[143,1633756636701.4985,"5157b1023d7b46d7198a5073a6876b9bcdcccaa0efba4dac600399a18d649aa6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/connection-timeout-error.d.ts":[167,1633756636701.606,"7a9f4fd0cc1a005e8bc3242d73e5baefda74af1f5acb824f3f117c1e2bdd50a6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/custom-error.d.ts":[206,1633756636734.6045,"7f292ba13f385c9ce761119921af0665ec69e470c05c31dac2305463f5fd872c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/docker-image-not-found-error.d.ts":[179,1633756636714.9792,"eecbf9e0a63b399534120b9154621a2586de0058cc835f99ba2adf9315669c4e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/empty-sarif-output-error.d.ts":[201,1633756636740.0112,"ba93679c2742fcef2b783ae73483968367971fa9d9c5ec9709e41ec9c6e57393"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/exclude-flag-bad-input.d.ts":[200,1633756636720.4006,"b9fd6af8682dc69ec84495bab77100eadc13a82af1814b34026c3bfa54e62b19"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/exclude-flag-invalid-input.d.ts":[204,1633756636720.566,"6174859f70fcfe6624bc1935732547174665c26f8f1119e54a1fe80f3c77f60d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/fail-on-error.ts.d.ts":[156,1633756636720.6582,"28e105e75935e0e262924fca047ac62f7fd89bd4441c64a3264bca4b07e73976"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/failed-to-get-vulnerabilities-error.d.ts":[278,1633756636720.798,"63754ecd2ccdc47853d6188fd42ad73a568a4901266af24609060c366af5279d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/failed-to-get-vulns-from-unavailable-resource.d.ts":[158,1633756636741.0432,"34f1f027bad8544755cf200ba9bf102f1a6b68c0d0368c9d2430b17f2e1309b1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/failed-to-load-policy-error.d.ts":[237,1633756636740.11,"1354c91d031b5b8c47504574f78b45c46253f18f8019c5ad19d222265a6d98fd"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/failed-to-run-test-error.d.ts":[198,1633756636721.2534,"e3747d8d09d3678c1654d0092a468fad26f23bf6b232ee4d8d390742108da92b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/feature-not-supported-by-package-manager-error.d.ts":[331,1633756636741.2615,"22b3a94597f9f619b98eb8f2fba36c3b7e999ac45b96bda071b89826fa402dd6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/file-flag-bad-input.d.ts":[197,1633756636752.8196,"d48b6548a1de6e5427f3099243b4e7f994bb722219c7d0defddad80a834888e6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/index.d.ts":[2057,1634348039709.466,"a842ffda3f9a6e8ec742658efbdb4476ae6482e74342c17a872f861b05917525"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/internal-server-error.d.ts":[249,1633756636781.4954,"5c1c6de8ebc3647ad844cb53eeffd2e7a14f91b5d78b4789fb5a26c05341d58b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/invalid-detection-depth-value.d.ts":[137,1633756636870.2405,"b09bfea3f80a99dc866510df052bfcf94d818a9fdcecb4959365e2f8172ccc36"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/invalid-endpoint-config-error.d.ts":[171,1633756636790.8474,"0cfe30c7b0d270b71dc6fc20e855faef293d33d5e307c307e01671145570f1e3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/invalid-iac-file.d.ts":[616,1633756636870.3284,"1e3a787320da7e18ecbfee3b915c7394c2c5f1e141c91600d1b70c325436aadd"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/invalid-remote-url-error.d.ts":[166,1633756636870.8513,"ad8de841283f1f043f8123e6f62e58899f73cbd2bd46a7ffb32271ae80b294cd"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/json-file-output-bad-input-error.d.ts":[203,1633756636791.3098,"d0aba640f124080afac4893f548f5a28bb9231e7848d4056781a573efd921ecc"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/misconfigured-auth-in-ci-error.d.ts":[108,1633756636868.7556,"b10daac4956ecbb31fb47f6f017275e6178366fca644852ad950e46ec34907ac"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/missing-api-token.d.ts":[234,1633756636868.9536,"6f38d30d787e3c2dfbe3f30e7ead078e9e2258e1acb4fd1f1effd151fb3a0a06"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/missing-arg-error.d.ts":[126,1633756636959.3303,"f51d05eb0fcf369e3beb4a078ba62b53fc360d21466984254b33067e74a60bf5"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/missing-option-error.d.ts":[163,1633756636959.1545,"894f0c8fa08086e458f903c3a70ccf1dff0b89d61acce50e159f0fdca39441f3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/missing-targetfile-error.d.ts":[121,1633756636869.2153,"13f8c8f7231c807ea5092e204d8962aa9af375059423590722c2b8fe01b229f6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/monitor-error.d.ts":[185,1633756636869.3452,"92cb851f43ba49f94b7f4f00b6bfe62a9f10fb8c5dbdb1cc1ad3758184de5362"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/no-supported-manifests-found.d.ts":[138,1633756636869.467,"5621c377638c8a8877556e3fd972fd54b9f6dbbc71fc2ccbc4216bb65881debe"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/no-supported-sast-files-found.d.ts":[165,1633756636960.2173,"6dedf80e67f1e095e92612c3edcee572fc5dccea7577055399a4fdbaf788a5e5"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/not-found-error.d.ts":[205,1633756636959.0017,"c93d9c645fc8f75a60f4062309dae1dde020d3665710139e2efa282ea248733f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/not-supported-by-ecosystem.d.ts":[353,1633756636869.8606,"6877fa233a62539dfe25febf95bdaf975c33515b71a053f78898f139e2d0e322"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/policy-not-found-error.d.ts":[233,1633756636878.954,"de09fd951cda978a16425fe942e240e974012302a43c576e8947297b57034778"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/token-expired-error.d.ts":[104,1633756637104.5684,"9584c2021085435624904fa19d24e5927d783e469193e5083a3d3c9b9b20fdb6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/too-many-vuln-paths.d.ts":[230,1633756637001.8025,"5f97e2914a196661ba305ec4b6fdd7b852568ffa4c1cca2765933bd8882be953"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/unsupported-feature-flag-error.d.ts":[210,1633756637117.424,"ce2560bf615dda1e2308729c71fc0b0104d3bc948e2c0baaba856e9776177d87"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/unsupported-feature-for-org-error.d.ts":[225,1633756637109.836,"a4d7d28877f1d6f47b003e9cba0a6ef5df4f58d918c9d06a73c3500c9786a1db"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/unsupported-option-combination-error.d.ts":[238,1633756637108.5588,"b6ac74d7120c9a0bfd861b34f4e7c570bce25d04ea3584a39951793dc0f05b51"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/unsupported-options-iac-error.d.ts":[211,1633756637109.6206,"90531b141a29aaa11445c243ea49bb27fd3a3c6f84f1b0042cca42be4baf6fe7"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/unsupported-package-manager-error.d.ts":[194,1633756637117.768,"8971742becb16ce95bc0ee9b1a1eaee23a7af75f7693b7c0e4dc569d0a415170"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/errors/validation-error.d.ts":[141,1634348039850.2195,"53eeada28eb33ea8e33c2ccfa06c9b110b5e8fcb387ef23ac1efbf9d0870c66b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/index.d.ts":[683,1633756636772.837,"8b58761958958d3eb5839d0aa42dceea12cab3c5c0fccc88e1dbaac1feeb240c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/monitor.d.ts":[735,1633756636959.072,"6bcffbae19772c385e153981a22c8ecfa3aa5a15a1ad45441bc89fec3eaf186a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/plugin-analytics.d.ts":[157,1633756636878.7925,"0d1511e101dd8f654d5e3c0a2dbd40d5ff5b6045b2c46e7770b4638423a4f96e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/plugins.d.ts":[128,1633756636978.055,"dd8bac485bace7e15ec983c75437af5b77376efcb47118e32b5c5452cfbd17b4"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/policy.d.ts":[232,1633756636980.3396,"6a16eea472bbb320d9f533a31d7d630cef32a987aa88c9caa89bd5ecc69360fd"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/resolve-monitor-facts.d.ts":[294,1633756636958.0044,"8da37c0161b93e385a98be2e55fd5e901d837c3a4727dbef49e9c0aaa6fde6d9"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/resolve-test-facts.d.ts":[262,1633756636936.6638,"38e70b12cc172f68508958ae87903bffee88e6a4490dc1adf2eba436600f7657"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/test.d.ts":[469,1633756636996.5647,"2a9d001d8cdb47e26d7d3d4bde46e2da2c7d4767836e0f8e1d905da42c69b666"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/ecosystems/types.d.ts":[2822,1633756637103.1804,"4daa04bc160106173807a35697366fb47d345526762443c98f32ccd7c2e09536"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/feature-flags/fetchFeatureFlag.d.ts":[156,1633756636728.245,"266040311e2e4a947ac137fccab96b077fe095c67dd15cb2ae463030622e6c40"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/feature-flags/index.d.ts":[168,1633756636772.97,"311107b69b762eb69c09f14e02e51f083077cd5831bb0a861364c6ff8c1b4b55"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/feature-flags/types.d.ts":[133,1633756637104.508,"992db7b5b3010a371a0e7f2bbfb00c84a2fc2f0e3e43fa44f385d7b4a01d792a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/format-error-result-summary.d.ts":[83,1633756636729.0444,"5173de977e90a90d29b8d67f5304e1c6d79365a3552ec3795709050ff36e08ae"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/format-monitor-response.d.ts":[335,1633756636753.7764,"7a45a1895f938d10dee27efbf917b11d0d1b1f5656cc8f6cc7311ce21e50b5e0"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/format-reachability.d.ts":[741,1633756636732.0288,"2ca7f4bbe888e3232055fca661665a199e4c76d49b919e47c8f65c36480e033c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/format-test-meta.d.ts":[299,1633756636737.8943,"5ec2d2b8372c21a0fe369bb9ed4d0d0e2023cdbe80f7b078a2464e2f7a46b836"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/format-vulnerable-result-summary.d.ts":[172,1633756636762.1577,"5cd383b0bbb7b087f8f8a9f796c73c99c845ff74e6ab54afc261a8b1382d14b4"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/get-severity-value.d.ts":[127,1633756636751.652,"2de4b7d0617eca741ca1e39b5c487446e3a97d384b6f8859f42250230ef2298a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/iac-output.d.ts":[970,1633756636783.2896,"6bca3e174c06c3ae6aacef034a3d1f895335f61dbf0c814fc95c4045f32322cf"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/index.d.ts":[595,1633756636780.8806,"ceacc1c98cf8e1967d8676f9c5d90ee734581fd8f1f00d5a50becf4e7929a08b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/legacy-format-issue.d.ts":[266,1633756636791.6152,"e0f7d14ce8eca672042fb618da7c09da1d528d304f151adb6cb4ffd78b0beb17"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/legal-license-instructions.d.ts":[183,1633756636880.3474,"e812da83e1279e7eba006aedec88b72ced3cc1593f7e1c5e9c3b722f06c569f8"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/open-source-sarif-output.d.ts":[434,1633756636962.8123,"6cf519f59ef6b3d889afcdb55da3f82ed189018b27891cf701df5aa12cd06a1b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/remediation-based-format-issues.d.ts":[778,1633756636936.0264,"8768cd5405aa3295667c1763ef971b73932b320fd26885b3c9fc1530c9816039"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/sarif-output.d.ts":[307,1633756636975.2146,"442613e17e7220a8f02ce53709ec3fb5a126e9d2a5a9cf5607aa97ecb23cc644"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/show-all-projects-tip.d.ts":[111,1633756636975.3542,"108f90122c96d3a437d82e0699c665fbff0c6144922146ae47a26162996d8789"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/show-all-sub-projects-tip.d.ts":[117,1633756636975.258,"90c86b74010a4d1c06821e8879fa2b9cd2baf8f1dfd7abf66ae218cb0615ae4f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/show-fix-tip.d.ts":[251,1633756637101.3308,"75086e332ae1b705d9802bd0a7de68d7acb5a7ecea415ba86a595a841a30115d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/show-multi-scan-tip.d.ts":[309,1633756637060.0706,"5c8eabb615078ace8263a5cfe9d0709c02be99929d5fd75a921cc173b2951a35"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/types.d.ts":[764,1633756637115.072,"d00a8d12252fed0954cb2917a145c0628e0a69ee6e253ddad0f4d3d3659b3d4c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/monitor/count-total-deps-in-tree.d.ts":[116,1633756636733.1582,"29d3c7aa95eb5f1599f380dda046bc81b081bd3098789f9a7074f439678fae5f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/monitor/dev-count-analysis.d.ts":[2183,1633756636734.485,"c0a934219b1b43cb2b1f692f0c76b86f89d62b60031fe3ea99b43b21491098d7"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/monitor/drop-empty-deps.d.ts":[146,1633756636720.2227,"d4ee4ccd45cf211d1f9a493ee1c8caffb1166fc12d22f49694104d49c09dbbe3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/monitor/filter-out-missing-deps.d.ts":[215,1633756636728.568,"36323d7396427a80dc10490ab8a12f4b0de50b1db71cb7a0b7a28b78a3ffa63f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/monitor/index.d.ts":[900,1633756636781.187,"906d5a020beeb5a3b524e043d92220cdc13c7323b66d14c024eafae5b25b0248"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/monitor/prune-dep-tree.d.ts":[132,1633756637005.3977,"858ff4a4f02174d2936eeec48ebd795aa99431008d14609021ecc2f8950c3d0b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/monitor/utils.d.ts":[736,1633756637110.9915,"5e8be7c9ad98b1e918e3769c3d2c420214e4555ff18325f7659a25ba95c4850e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/module-info/index.d.ts":[258,1633756636861.3555,"c2155ad33014a42d1955cc5a4abbbc591ac4b7b889eb7a3711b07f89ea68e756"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/iac/constants.d.ts":[850,1633756636723.7393,"bb86dbf4b80049132e36630eddc321060dfc5be15098f91b4a82e73927ab2628"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/iac/detect-iac.d.ts":[152,1633756636714.2139,"e30e9b1228e86df03da15412f9d3ed1fc20b3fb4a9dfd6392e9ecf5b2ddb57ad"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/iac/iac-parser.d.ts":[353,1633756636783.0493,"37d39f70c3ae2fc26be760f192bad4c5d14def75397321ea6be4347a1f14f76b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/iac/makeDirectoryIterator.d.ts":[369,1633756636858.892,"98dc6df789acd531d562f296754f4ba45a1a7b522cd2918f1d4d8e32b53a728e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/convert-multi-plugin-res-to-multi-custom.d.ts":[388,1633756636733.1106,"b0258318de89bd1c0ab93d9dccbf41c542a0c716a10642ad303122b7ec4c5abc"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/convert-scanned-projects-to-custom.d.ts":[484,1633756636733.449,"394e8eff16826941d4707ad1bbff71e5a347ff04a4aab665db74d727df2b844a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/convert-single-splugin-res-to-multi-custom.d.ts":[369,1633756636712.3967,"e954051d306827b0247d9d3698cadb4929967265ce58ecb0e870c2d751e14775"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/extract-package-manager.d.ts":[424,1633756636740.0654,"ab9eea27677f6828692adbf874560f64b7c7f94c26287f7a9092aab9a6cfd852"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/get-deps-from-plugin.d.ts":[590,1633756636739.2378,"cd161f7de55ce6bbca49caa0ce127586391a96785df55f3122c8b8af8ee2b292"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/get-extra-project-count.d.ts":[248,1633756636762.5835,"e43fc3fc6377a6f04b8318290e7129b45abedaeb32733859a7133d8cff91a82e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/get-multi-plugin-result.d.ts":[980,1633756636773.9907,"47554d58553f65b1d7c2408c980e17b14cdafb57039d9c2f2046d731625704bd"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/get-single-plugin-result.d.ts":[297,1633756636774.421,"e9ccb8ac5ce1c5e58535f2ce153a52faf284926919009c6d07bf6a1e4918f4df"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/index.d.ts":[202,1633756636781.3606,"71fb4017b7997d183150db255c9405fa74f7cf8a1c1c885815233a2969c90cbc"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/types.d.ts":[632,1633756637104.0085,"af66b31b14cd6c599d8b154173866244a7fea45c97cb21cf2b941492c2bb29ed"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/policy/find-and-load-policy.d.ts":[474,1633756636753.284,"d2c5f29cab1f2f429f98dc9797522d1ca4a4d6a2a175f1088a0376e720ba2580"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/policy/index.d.ts":[110,1633756636781.7988,"1ddc5ae0514b1af3cf4bea7617a91401022f907cc741d76e59d4258b8d8f2e17"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/policy/pluck-policies.d.ts":[133,1633756636978.09,"157a7586ce17504d736f6c0e7c978f37a9dc127a8a35a69375fe3af4458fc9ca"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/polling/common.d.ts":[330,1633756636723.6401,"44be4f4e98e58892e2c22f46523bc0ee435b552aac3e7807ab5109b01de0c2f8"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/polling/polling-monitor.d.ts":[585,1633756636996.3557,"b6dc3b42875693438454155be4dab5162fbf6dfcd169c104179f30f599e025e3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/polling/polling-test.d.ts":[552,1633756636934.8213,"12b6483c8d0a8ca871f4f1672378746d1373c91304df13119109bf4b9b4c3757"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/polling/types.d.ts":[1110,1633756637103.537,"6314d5320f84b86dc33e22afff973e96c8e2aa11660155f055bd986ebea70737"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/project-metadata/index.d.ts":[420,1633756636781.6677,"c280bbb1650ffa81636edb6d34751389d58e44bab9a1bd67ae30d4650a3cd588"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/project-metadata/types.d.ts":[204,1633756637117.0745,"b4c462c8ec27335f26af25f90542cc629e6f13426abf464d43e7ce6f99020b2f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/request/index.d.ts":[320,1633756636782.6274,"99eab2017f079801f10641159e9a51f74dcc0986e87ab6dac297f73822befa11"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/request/promise.d.ts":[66,1633756636935.6782,"e11d51cae04abb00df06b221f13a1a1f678caec728987c4a45d37ab4e59935bf"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/request/request.d.ts":[185,1633756636936.7542,"b259958ac365fe036afd68ac449fced1dda4f966ee0bb04463f2ac9551f2fff3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/request/types.d.ts":[317,1633756637106.2642,"6e6ea2dbb4d57180b7e93965435c5ee5d474ccb5ed642899cdffec80804e8649"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/sln/index.d.ts":[122,1633756636782.5068,"57dbec31850684ca3fc6e2110be52c9c3d78957b31062383c69dcc54d6021f5b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/protect/fetch-patch.d.ts":[96,1633756636721.3345,"4bb8dda40903c014a61e0e5fb835633fd3363ae67c283d6c736a018782e1b8a0"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/snyk-test/assemble-payloads.d.ts":[289,1633756636716.6025,"1f61e3b71eed51e76afe9b45e46fb25ffbae0a145ba0257c4e89e1d330682ea9"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/snyk-test/common.d.ts":[647,1633756636723.0566,"b73572d41e461dd8bcc188d4b747ba45af7bc7ad4b4088e8c5331eb50bfa1eef"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/snyk-test/iac-test-result.d.ts":[2010,1633756636761.259,"15d4c9142eb2c1de34f94c2dc9a8e7da455c5ab0f38e6fde65cf7504d7f72012"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/snyk-test/legacy.d.ts":[7276,1633756636859.1318,"340bf2b1d12fe48911d8e8b0e868dc61ea75e914482c2ccaf35eeee1c68d3912"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/snyk-test/payload-schema.d.ts":[474,1633756636879.0408,"cfc4bffbf63db93c0b795a66625accc48d9497c7858b5e628b70148b13744ed1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/snyk-test/run-iac-test.d.ts":[685,1633756636975.0403,"6ff3559d30325755ebf9bcc15c3702011cd00648d69f7994f77c0ff7b4e4f395"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/snyk-test/run-test.d.ts":[261,1633756636975.1018,"9934d53658fb6ef4511809967b90f3b86aee952727f8309da22239c7625817f3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/snyk-test/types.d.ts":[1153,1634348039834.325,"f287a15963704bf0708ee1377e6dc3f73854ed3f4727771ebe6a934fdd6558c4"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/auth/index.d.ts":[150,1633756636783.1772,"483bfa9cba8359e6daaed94b9cfca56c5b33d974196f0954871422c60fb86a77"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/auth/is-authed.d.ts":[113,1633756636870.4402,"4d2c85ab62e6a09c989d0c4753ae60f22f7284fade6fd0b29d91f99b3218d064"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/monitor/index.d.ts":[693,1633756636773.3604,"827af725d5f5322afe16b01d1725db46725bb8dd590c64c6f5c194d0f2ecded8"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/monitor/process-json-monitor.d.ts":[149,1633756636935.3552,"aa678dffc4a2a243f18990d200a0988288991e97dac7d17b87524e088a9f56d6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/monitor/types.d.ts":[248,1633756637026.8313,"697e97af43944065cce3b272679bf868c1a4b630bff08de490b655328975c875"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/fix/convert-legacy-test-result-to-new.d.ts":[236,1633756636701.6714,"d188e0d298d42ac63511f9e1bf8594ef95238efe84414a889cb496bed9d0990a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/fix/convert-legacy-test-result-to-scan-result.d.ts":[217,1633756636711.6755,"2d2429a00c920993c6a5f7d25760b1869ee5524063cffa13e1140cc07b9580ed"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/fix/convert-legacy-tests-results-to-fix-entities.d.ts":[342,1633756636714.1428,"c0dd2e34077191c836e223bcba06ea680c5407d7bfdbb16ad450d6d450c18330"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/fix/get-display-path.d.ts":[62,1633756636761.9998,"0fe80a2e1d29aa9b198e75e716eb6cdf06c3c55f2e6d919bd92579af708804f3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/fix/index.d.ts":[108,1633756636772.7732,"1c208c652cb1357baf3f651e305a04d61c96372511c4d7da99263e286830f7ad"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/fix/validate-fix-command-is-supported.d.ts":[164,1633756637111.2327,"58bdc934667404fb56e10b12cfeb606521aec5a82d5ccf8697edc4b68f6d2823"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/protect/index.d.ts":[188,1633756636853.2585,"72a279769c1335767c259ca9d6daecffe7b2290b6478788266b8466bf3ee825f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/protect/prompts.d.ts":[1048,1633756636935.5447,"5b5d6fd45bf87cc6347b56b620881b4165182c26ae60d0e530b25140cbc9772b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/protect/tasks.d.ts":[140,1633756636996.4497,"76332f45fe53ef3ba9fefdd97974ee10f74977b9eddd0de9bbfa61ab6565f972"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/protect/wizard.d.ts":[369,1633756637111.9966,"88971a8ad7eb6df2af1a19d753709c8e8b7bdfdc24d9ce9f51851efb71d7f52b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/format-test-error.d.ts":[58,1633756636739.0574,"f426cf2c33e7fdc53d3e286aa04aceaf6fdec87c1d2615a66ae302cdd408669c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-test-shim.d.ts":[463,1633756636782.844,"897aba4c5ed5a10210e3294c4f48bde0b221ca5b69b40e1e93037a0e25dc670d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/index.d.ts":[178,1633756636772.7026,"e36aa908ef36718383194a2679dc512c1e0cb9055ee4ef2d554001bc6c35738e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/set-default-test-options.d.ts":[197,1633756636975.3882,"a3dacb24650fdd52f20b5a1e7b01d33bbcf5e50a9ec497d658c7ed0444a1b671"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/utils.d.ts":[166,1633756637119.8071,"7a6d3b0ec7b002dfadad5153d7daddbb499094f28d29caf1a4a22e4bd4c294a1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/validate-credentials.d.ts":[142,1633756637111.6362,"69a0810b088aeef19fad1f665f4f14cc8a256f0efde30ca262d31b3d156068b3"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/validate-test-options.d.ts":[142,1633756637111.111,"67e3b19eb540235cc74a5512d33aad34fdd97518bb648d509aace8fc0e7b3134"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/woof/getWoof.d.ts":[100,1633756636775.0752,"5eba9ef91fb52b71002f26d67fbd7684cd5f0202e5e94ac59fa2c6bcd764c39d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/docker/format-docker-advice.d.ts":[138,1633756636752.912,"07d6dbaf33b3c3ee0dc81b9681bab21e897a560d56c781345e59de2a1651f5d5"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/docker/format-docker-binary-heading.d.ts":[73,1633756636753.3667,"d7176c1ad5c29201d295f406638fc40afb9bf29c600987461f6e4ab4fdc6a753"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/docker/format-docker-binary-issues.d.ts":[212,1633756636753.452,"7c4b81edab8464b082882c3deaad641be97f93c5a0dc97602180a335031ef056"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/docker/index.d.ts":[222,1633756636781.0337,"ea5ad28b89d93fda30de3dbdbe4f237556e0ddd2829609a4ad410a10d0af9954"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/test/display-result.d.ts":[243,1633756636713.8457,"18b524d0d16cbd8b0ee71fad508cd8f064c9a8eaf17537510cd556d4690990b2"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/formatters/test/format-test-results.d.ts":[956,1633756636737.3127,"a0eb815a6fbc207e64e25f3c55c604e01733a13a5483041ef1d208a6fdbcf441"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/nodejs-plugin/index.d.ts":[228,1633756636861.7925,"e4c47bcbd99de39fd6e3bc8e577229c90162e2734aa112e1a3794489c5df158a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/nodejs-plugin/npm-lock-parser.d.ts":[192,1633756636869.7556,"f2304d28d1c26f18ec0b5ac40e35a69b10c0d475bbc022d9762439edd7122142"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/nodejs-plugin/npm-modules-parser.d.ts":[215,1633756636961.2095,"0ae76af1c1d31c3eebd5bbd32239e7ddb024afd056272409551fc05325bc0340"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/nodejs-plugin/yarn-workspaces-parser.d.ts":[483,1633756637113.2388,"7daf250099136407a980613650c3b515dfdac231189373d50603344db294b835"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/rubygems/index.d.ts":[168,1633756636861.447,"6258f41a8bf6884aae7bd80b875ad51de6b6b9f85286cd471777da8a9cf992a6"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/sast/analysis.d.ts":[177,1633756636716.4844,"cd9b166d7729b00f76c73083cfe5770f5b30eccc3c847f7baa77a7d47fb038fe"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/sast/checks.d.ts":[362,1633756636722.7234,"f612f27026f29820edc85003f30bbe3a28f4b4f15bae92754cc17b54287f02ec"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/sast/index.d.ts":[108,1633756636861.6697,"ee8307846a3cd8814adb2ac9c144470260972c7c3c568717c27f2251b2d4ba11"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/sast/validate.d.ts":[114,1633756637111.1716,"89c940625aedab042c788ba0820b887edd6b0b8b7915e221fb976244b2d5c6ba"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/project-metadata/target-builders/container.d.ts":[298,1633756636723.853,"ae184eb5e3e76e24dfd994554fd3ab01d55e6dc766ca211219ee28669f4189e8"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/project-metadata/target-builders/git.d.ts":[124,1633756636773.909,"608490ba89edf94d6b80f91ad9393368f4c6ebb3ab5e9d017517a99626479237"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/sast/errors/unsupported-feature-snyk-code-error.d.ts":[233,1633756637108.3784,"c36d933f8786038c79a59f8a672e81958970deeb27d5a5df70a2f22758caedb9"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/analytics.d.ts":[690,1633756636694.368,"ca9c74deae810aa8c25ee6bacf202931449ea5ebc0c70f0e4213594844e5ed4c"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/assert-iac-options-flag.d.ts":[852,1634348039598.093,"771cd92287c68e9a41279b35bc0d5051b83f52d5280644f3f51ff4fbea47fb8e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/error-utils.d.ts":[66,1633756636739.6838,"1883d0189bb5d0f5a39e64311007f4020b630f37aa42cd9b58d673066f7d5a06"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/extract-line-number.d.ts":[309,1633756636720.463,"420e87267eb3af67a34cf580b4be2878b7525ca670d3de9303f3f6d512eb587a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/file-loader.d.ts":[501,1633756636753.106,"a058cafe271d6107609bb1bdf868df3c5ed621f8ce684eb09827259931b69ba0"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/file-parser.d.ts":[459,1633756636752.6267,"9ce3e13fc6d040bdcdc0e805884e5ef02cffa6a532fd77e1f9baa50894ae18d8"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/file-scanner.d.ts":[484,1633756636753.2212,"7dab46d0f11d68bdb6f5320b7e56a66af7c32a238615093e5ad5aa4316997748"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/file-utils.d.ts":[248,1634348039648.7664,"ca3acd4b2ca5e1c2f27ce2f8024c3fa6b42126c7c62a89a9b8b250fc29c5aa9d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/index.d.ts":[367,1633756636853.8777,"48a378ec7671f9ce271af87657e648a9f2b284f8100b8c0a6c1a46c22d1ede9b"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/local-cache.d.ts":[1020,1634348039722.1963,"f0e8768f6d63f57d7b5519d7d733bc50ddfc64a2c731d49ff9a469781989c45e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/math-utils.d.ts":[286,1633756636881.1167,"e1870f7525018ebcdf3690449de2e16e67666f46e08a2f9715b9df7f0e679a4a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/measurable-methods.d.ts":[2443,1633756636860.2263,"3a2c84d5dcb58c9296457eb9eb652186873825d3804e386c8bca78bf16ede18a"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/policy.d.ts":[283,1633756636878.6873,"f3f4104524dc794f3ffc85a59e30acd723d685cba1f8901416c23369a565bada"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/results-formatter.d.ts":[588,1633756636968.9436,"1ed25ad146aea54dd9375f70d634e1271320a5c8560ce8697f1f2a5b7ea49d98"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/types.d.ts":[5778,1634348039834.5212,"20405675b0f6c7653d4d79e502baa0f627b64e14aec3de1ddff878d08019e0a1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/usage-tracking.d.ts":[368,1633756637108.802,"7b00145047925bf4c085edeaeed880dc103ff0ae0ed26641f6a4ffcb25c78548"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/yaml-parser.d.ts":[374,1633756637112.363,"bb9b9172af97493d32bd9b740af08c3fa89d7ebfe0dbb3cace80fbb2a30c40c1"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/rubygems/inspectors/gemfile.d.ts":[172,1633756636762.2522,"0c199946410b72eb9dced20f8f633b816813db4b84cc012c1bcf33dcfa67da5e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/rubygems/inspectors/gemspec.d.ts":[172,1633756636762.2522,"0c199946410b72eb9dced20f8f633b816813db4b84cc012c1bcf33dcfa67da5e"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/rubygems/inspectors/index.d.ts":[224,1633756636781.2756,"0b15ee9bbb3cd087524c5c31091a07250a0c534fe213eec46659fab25b1c7a6d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/rubygems/inspectors/try-get-spec.d.ts":[226,1633756636996.9934,"28ce18c4c000c7031c1cc88a1515dfb453255ea1b522e50561c0b245b75ca4fa"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/sast/format/output-format.d.ts":[311,1633756636878.5022,"6045102e1067023488dbf90cf60ef67a51e356b30c9740b2eaade403f0694243"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/sast/utils/index.d.ts":[56,1633756636781.4329,"206f56e33f0303fa853021263869c84857aa31e54066375689e7db63ca425503"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/lib/plugins/sast/utils/testEmitter.d.ts":[56,1634348039804.7603,"d3473f9da66e1a81143641d2f7254e38a6e0180736279413a6d0e8c4f087fb1d"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/org-settings/apply-custom-severities.d.ts":[212,1633756636694.6526,"de69de28a605fe39ae4d313dd9a745d330d24695759e24e5e3d7f4771eaad581"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/org-settings/get-iac-org-settings.d.ts":[301,1633756636751.472,"615536a61fa17db565eda12d69135907e7c729cf8b824463adbe997b40d04e68"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/parsers/k8s-or-cloudformation-parser.d.ts":[381,1633756636791.4197,"40300b610d9e0c3a4c910f31765dbf21a7221880eaa14a90f906fb0369c35fcd"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/parsers/path.d.ts":[60,1633756636978.9639,"008e7457cb2faf791c76bc95b5ef1f97806e87d05e9a69de02e3cd7a10efd4ba"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/parsers/terraform-file-parser.d.ts":[318,1633756636996.9126,"6d8d37cee18258019e8b02f2c4408771e55a8437c4655ae43e7525f2c5fe061f"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/parsers/terraform-plan-parser.d.ts":[532,1633756637106.3567,"00efdfe13f855ec60f0e22622487190fc059dc5e484e03b1c34cb9092c58aec0"],"/Users/gabuzo/workspace/git/infrastructure-for-event-driven-system/node_modules/.pnpm/snyk@1.737.0/node_modules/snyk/dist/cli/commands/test/iac-local-execution/parsers/hcl-to-json/index.d.ts":[81,1633756636853.5566,"1fa57ed249cb21f5d1b7aed0686eb6dba736c96932eebdd5968795beae3942a5"]} -------------------------------------------------------------------------------- /.github/workflows/application.yml: -------------------------------------------------------------------------------- 1 | name: Application Deployment 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | 9 | jobs: 10 | app-build: 11 | environment: 12 | name: main 13 | url: ${{ steps.create_release.outputs.html_url }} 14 | name: Build and publish docker images 15 | runs-on: ubuntu-latest 16 | strategy: 17 | matrix: 18 | repository: [backend, worker] 19 | steps: 20 | - name: Checkout 21 | uses: actions/checkout@v2 22 | 23 | - name: Python module dependency scan 24 | working-directory: application 25 | env: 26 | SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} 27 | DOCKER_BUILDKIT: 1 28 | run: | 29 | docker build -f ${{ matrix.repository }}.Dockerfile \ 30 | --target scan-result \ 31 | --output type=local,dest=${{ matrix.repository }} \ 32 | --build-arg SNYK_TOKEN=${SNYK_TOKEN} . 33 | 34 | - name: Check snyk scan status 35 | run: | 36 | result=$( cat application/${{ matrix.repository }}/snyk.sarif | \ 37 | jq -r '.runs[].results | length' 38 | ) 39 | exit $result 40 | 41 | - name: Configure AWS credentials 42 | uses: aws-actions/configure-aws-credentials@v1 43 | with: 44 | aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} 45 | aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} 46 | aws-region: ${{ secrets.AWS_REGION }} 47 | 48 | - name: Login to AWS ECR 49 | uses: aws-actions/amazon-ecr-login@v1 50 | id: login-ecr 51 | 52 | - name: Build docker image 53 | working-directory: ./application 54 | env: 55 | ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} 56 | DOCKER_BUILDKIT: 1 57 | IMAGE_TAG: ${GITHUB_SHA::8} 58 | run: | 59 | docker build -f ${{ matrix.repository }}.Dockerfile \ 60 | -t $ECR_REGISTRY/${{ matrix.repository }}:${{ env.IMAGE_TAG }} . 61 | 62 | docker tag $ECR_REGISTRY/${{ matrix.repository }}:${{ env.IMAGE_TAG }} \ 63 | $ECR_REGISTRY/${{ matrix.repository }}:latest 64 | 65 | - name: Security scan on docker image 66 | uses: snyk/actions/docker@master 67 | id: docker-image-scan 68 | continue-on-error: true 69 | env: 70 | SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} 71 | with: 72 | image: ${{ steps.login-ecr.outputs.registry }}/${{ matrix.repository }} 73 | args: --file=./application/${{ matrix.repository }}.Dockerfile 74 | --severity-threshold=low 75 | --sarif-file-output=./application/${{ matrix.repository }}/docker.snyk.sarif 76 | sarif: false 77 | 78 | - name: Upload sarif file to Github Code Scanning 79 | if: always() 80 | uses: github/codeql-action/upload-sarif@v1 81 | with: 82 | sarif_file: application/${{ matrix.repository }} 83 | 84 | - name: Check docker image scan status 85 | if: ${{ steps.docker-image-scan.outcome == 'failure' }} 86 | run: exit 1 87 | 88 | 89 | - name: Publish docker image 90 | if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }} 91 | run: docker push --all-tags ${{ steps.login-ecr.outputs.registry }}/${{ matrix.repository }} 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /.github/workflows/infrastructure.yml: -------------------------------------------------------------------------------- 1 | name: Infrastructure Deployment 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | 9 | jobs: 10 | terraform: 11 | name: Infrastructure Deploy 12 | runs-on: ubuntu-latest 13 | defaults: 14 | run: 15 | working-directory: ./infrastructure 16 | env: 17 | TF_WORKSPACE: main 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@v2 21 | 22 | - name: Vulnerability scan 23 | uses: snyk/actions/iac@master 24 | env: 25 | SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} 26 | with: 27 | args: --severity-threshold=medium 28 | --sarif-file-output=terraform.snyk.scan 29 | sarif: false 30 | 31 | - name: Upload sarif file to Github Code Scanning 32 | if: always() 33 | uses: github/codeql-action/upload-sarif@v1 34 | with: 35 | sarif_file: terraform.snyk.scan 36 | 37 | 38 | - name: Terraform setup 39 | uses: hashicorp/setup-terraform@v1 40 | with: 41 | cli_config_credentials_token: ${{ secrets.TF_TOKEN }} 42 | 43 | - name: Terraform format 44 | run: terraform fmt 45 | 46 | - name: Terraform init 47 | run: terraform init 48 | 49 | - name: Terraform validate 50 | run: terraform validate 51 | 52 | - name: Terraform plan 53 | id: plan 54 | continue-on-error: true 55 | run: | 56 | cp tfvars/$TF_WORKSPACE.tfvars $TF_WORKSPACE.auto.tfvars 57 | terraform plan -no-color 58 | 59 | - name: Attach terraform plan output 60 | uses: actions/github-script@v5 61 | if: ${{ github.event_name == 'pull_request' }} 62 | with: 63 | script: | 64 | const output = ` 65 |
Terraform Plan Output 66 | 67 | \`\`\`${{ steps.plan.outputs.stdout }}\`\`\` 68 | 69 |
70 | `; 71 | 72 | github.rest.issues.createComment({ 73 | issue_number: context.issue.number, 74 | owner: context.repo.owner, 75 | repo: context.repo.repo, 76 | body: output 77 | }); 78 | 79 | - name: Check terraform plan status 80 | if: ${{ steps.plan.outcome == 'failure' }} 81 | run: exit 1 82 | 83 | - name: Terraform Apply 84 | if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }} 85 | run: terraform apply -auto-approve 86 | 87 | 88 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/venv/** 2 | **/.pytest_cache/** 3 | **/__pycache__/** 4 | .env 5 | **/.terraform/** 6 | *.tfplan 7 | Dockerrun.aws.* 8 | *.sarif -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | python 3.9.6 2 | awscli 2.2.10 3 | terraform 1.0.0 4 | -------------------------------------------------------------------------------- /_scripts/terraform-snyk-scan.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | [ -z "$SNYK_TOKEN" ] && echo "SNYK_TOKEN required" && exit 1 5 | [ -z "$TF_CODE_PATH" ] && echo "TF_CODE_PATH required" && exit 1 6 | 7 | 8 | docker run -e SNYK_TOKEN \ 9 | -v $TF_CODE_PATH:/infra \ 10 | -w /infra \ 11 | snyk/snyk:alpine snyk iac test \ 12 | --sarif-file-output=terraform.snyk.sarif -------------------------------------------------------------------------------- /application/README.md: -------------------------------------------------------------------------------- 1 | Episode 16 2 | Event Driven Architecture - Integrating FastAPI with Celery 3 | Youtube video: https://www.youtube.com/watch?v=bIX2aLO0vFI&t=30s -------------------------------------------------------------------------------- /application/app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyordsabuzo/infrastructure-for-event-driven-system/92adc9733ccb9f82bfeae5250a82fa5525810402/application/app/__init__.py -------------------------------------------------------------------------------- /application/app/main.py: -------------------------------------------------------------------------------- 1 | from fastapi import FastAPI, HTTPException, Request 2 | from pydantic import BaseModel 3 | from typing import Optional 4 | import requests 5 | from wonderwords import RandomWord 6 | 7 | from fastapi.templating import Jinja2Templates 8 | from fastapi.responses import HTMLResponse 9 | 10 | import os 11 | import logging 12 | 13 | from workers import thumbnail 14 | from dotenv import load_dotenv 15 | 16 | load_dotenv() 17 | 18 | logger = logging.getLogger(__name__) 19 | logger.setLevel(logging.INFO) 20 | 21 | 22 | class Thumbnail(BaseModel): 23 | url: str 24 | filename: Optional[str] = None 25 | 26 | 27 | app = FastAPI() 28 | templates = Jinja2Templates(directory="templates") 29 | 30 | 31 | @app.post("/thumbnail", response_model=Thumbnail) 32 | def create_thumbnail(tn: Thumbnail): 33 | try: 34 | rw = RandomWord() 35 | filename = '_'.join(rw.random_words( 36 | 3, include_parts_of_speech=["nouns", "adjectives"])) 37 | tn.filename = filename 38 | 39 | thumbnail.create_s3_thumbnail.delay( 40 | tn.url, 41 | filename, 42 | os.environ.get("S3_BUCKET_NAME", None) 43 | ) 44 | return tn 45 | except Exception as e: 46 | logger.error('Error encountered:{}'.format(e)) 47 | raise HTTPException( 48 | status_code=500, 49 | detail="Internal Server Error") 50 | 51 | 52 | @app.get("/thumbnail/{id}", response_class=HTMLResponse) 53 | def load_thumbnail(request: Request, id: str): 54 | source = f'{os.environ.get("THUMBNAIL_BASE_URL", None)}/{id}' 55 | response = requests.get(source) 56 | 57 | if response.status_code == 200: 58 | return templates.TemplateResponse("thumbnail.html", { 59 | "request": request, 60 | "id": id, 61 | "source": source 62 | }) 63 | 64 | raise HTTPException(status_code=404, detail="Thumbnail not found") 65 | -------------------------------------------------------------------------------- /application/backend.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.9-alpine AS base 2 | 3 | WORKDIR /usr/src 4 | 5 | ENV PYTHONDONTWRITEBYTECODE 1 6 | ENV PYTHONUNBUFFERED 1 7 | ENV CRYPTOGRAPHY_DONT_BUILD_RUST 1 8 | ENV APPLICATION_PORT 8000 9 | 10 | COPY ./backend.requirements.txt /usr/src/requirements.txt 11 | 12 | RUN set -eux \ 13 | && apk add --no-cache --virtual .build-deps build-base \ 14 | libressl-dev libffi-dev gcc musl-dev python3-dev \ 15 | libressl-dev libffi-dev gcc musl-dev python3-dev \ 16 | tiff-dev jpeg-dev openjpeg-dev zlib-dev freetype-dev lcms2-dev \ 17 | libwebp-dev tcl-dev tk-dev harfbuzz-dev fribidi-dev libimagequant-dev \ 18 | libxcb-dev libpng-dev \ 19 | && pip install --upgrade pip setuptools wheel \ 20 | && pip install -r /usr/src/requirements.txt \ 21 | && rm -rf /root/.cache/pip 22 | 23 | COPY ./app/ /usr/src/app/ 24 | COPY ./templates/ /usr/src/templates/ 25 | COPY ./workers/ /usr/src/workers/ 26 | COPY ./entities/ /usr/src/entities/ 27 | 28 | FROM snyk/snyk:python AS scan 29 | ARG SNYK_TOKEN 30 | ENV SNYK_TOKEN=${SNYK_TOKEN} 31 | 32 | COPY backend.requirements.txt requirements.txt 33 | COPY run-snyk-test.sh . 34 | 35 | RUN pip install -r requirements.txt 36 | RUN ./run-snyk-test.sh 37 | 38 | FROM scratch AS scan-result 39 | COPY --from=scan /snyk/output . 40 | 41 | FROM base AS test 42 | 43 | COPY ./tests/backend/ /usr/src/tests/ 44 | RUN pytest 45 | RUN touch /usr/src/test.complete 46 | 47 | FROM base AS final 48 | COPY --from=test /usr/src/test.complete . 49 | COPY ./backend.entrypoint.sh /usr/src/entrypoint.sh 50 | 51 | # RUN addgroup -S appgroup && adduser -S appuser -G appgroup 52 | # USER appuser 53 | 54 | ENTRYPOINT [ "sh", "/usr/src/entrypoint.sh" ] -------------------------------------------------------------------------------- /application/backend.entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | uvicorn app.main:app --reload \ 3 | --workers 1 \ 4 | --host 0.0.0.0 \ 5 | --port $APPLICATION_PORT -------------------------------------------------------------------------------- /application/backend.requirements.txt: -------------------------------------------------------------------------------- 1 | fastapi 2 | uvicorn 3 | pytest 4 | requests 5 | wonderwords 6 | aiofiles 7 | Pillow 8 | celery==v5.1.2 9 | jinja2 10 | boto3 11 | moto 12 | python-dotenv -------------------------------------------------------------------------------- /application/benchmark_input.json: -------------------------------------------------------------------------------- 1 | { 2 | "url": "http://lorempixel.com/400/200/" 3 | } -------------------------------------------------------------------------------- /application/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | 3 | services: 4 | backend: 5 | build: 6 | context: . 7 | dockerfile: backend.Dockerfile 8 | ports: 9 | - 8000:8000 10 | volumes: 11 | - $PWD/.env:/usr/src/.env 12 | 13 | worker: 14 | build: 15 | context: . 16 | dockerfile: worker.Dockerfile 17 | volumes: 18 | - $PWD/.env:/usr/src/.env 19 | -------------------------------------------------------------------------------- /application/entities/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyordsabuzo/infrastructure-for-event-driven-system/92adc9733ccb9f82bfeae5250a82fa5525810402/application/entities/__init__.py -------------------------------------------------------------------------------- /application/entities/thumbnail.py: -------------------------------------------------------------------------------- 1 | from abc import abstractmethod 2 | from PIL import Image 3 | from io import BytesIO 4 | 5 | import requests 6 | import os 7 | import logging 8 | import boto3 9 | from dotenv import load_dotenv 10 | 11 | load_dotenv() 12 | 13 | logger = logging.getLogger(__name__) 14 | 15 | 16 | class Thumbnail: 17 | __slots__ = ('url', 'filename', 'SIZE', 'STATIC_DIR') 18 | 19 | def __init__(self, url, filename): 20 | self.url = url 21 | self.filename = filename 22 | self.SIZE = 128, 128 23 | self.STATIC_DIR = os.environ.get('STATIC_DIR', '/tmp/static') 24 | 25 | @abstractmethod 26 | def create(self): 27 | logger.info('Begin creation of thumbnail') 28 | content = requests.get(self.url).content 29 | with Image.open(BytesIO(content)) as img: 30 | img.thumbnail(self.SIZE) 31 | img.save(f'{self.STATIC_DIR}/{self.filename}', 'JPEG') 32 | logger.info('Finished creation of thumbnail') 33 | 34 | 35 | class S3_Thumbnail(Thumbnail): 36 | __slots__ = ('s3_bucket') 37 | 38 | def create(self): 39 | logger.info('Begin creation of thumbnail in s3') 40 | content = requests.get(self.url).content 41 | with Image.open(BytesIO(content)) as img: 42 | in_memory_file = BytesIO() 43 | img.thumbnail(self.SIZE) 44 | img.save(in_memory_file, 'JPEG') 45 | in_memory_file.seek(0) 46 | 47 | s3 = boto3.client( 48 | 's3', endpoint_url=os.environ.get("AWS_ENDPOINT", None)) 49 | s3.upload_fileobj( 50 | in_memory_file, 51 | self.s3_bucket, 52 | f'thumbnail/{self.filename}', 53 | ExtraArgs={'ContentType': 'image/jpeg'} 54 | ) 55 | logger.info('Finished creation of thumbnail in s3') 56 | -------------------------------------------------------------------------------- /application/integration_worker.py: -------------------------------------------------------------------------------- 1 | from workers import thumbnail 2 | 3 | filename='somefilenamefromtest' 4 | thumbnail.create.delay('http://lorempixel.com/400/200/', filename) -------------------------------------------------------------------------------- /application/post-event-driven-benchmark: -------------------------------------------------------------------------------- 1 | This is ApacheBench, Version 2.3 <$Revision: 1843412 $> 2 | Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 3 | Licensed to The Apache Software Foundation, http://www.apache.org/ 4 | 5 | Benchmarking localhost (be patient).....done 6 | 7 | 8 | Server Software: uvicorn 9 | Server Hostname: localhost 10 | Server Port: 8000 11 | 12 | Document Path: /thumbnail 13 | Document Length: 73 bytes 14 | 15 | Concurrency Level: 10 16 | Time taken for tests: 1.622 seconds 17 | Complete requests: 100 18 | Failed requests: 90 19 | (Connect: 0, Receive: 0, Length: 90, Exceptions: 0) 20 | Total transferred: 22168 bytes 21 | Total body sent: 19100 22 | HTML transferred: 7768 bytes 23 | Requests per second: 61.64 [#/sec] (mean) 24 | Time per request: 162.223 [ms] (mean) 25 | Time per request: 16.222 [ms] (mean, across all concurrent requests) 26 | Transfer rate: 13.34 [Kbytes/sec] received 27 | 11.50 kb/s sent 28 | 24.84 kb/s total 29 | 30 | Connection Times (ms) 31 | min mean[+/-sd] median max 32 | Connect: 0 1 1.6 0 6 33 | Processing: 8 157 102.8 133 543 34 | Waiting: 7 147 101.4 119 543 35 | Total: 8 158 102.7 133 544 36 | 37 | Percentage of the requests served within a certain time (ms) 38 | 50% 133 39 | 66% 158 40 | 75% 186 41 | 80% 187 42 | 90% 228 43 | 95% 414 44 | 98% 543 45 | 99% 544 46 | 100% 544 (longest request) -------------------------------------------------------------------------------- /application/pre-event-driven-benchmark: -------------------------------------------------------------------------------- 1 | This is ApacheBench, Version 2.3 <$Revision: 1843412 $> 2 | Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 3 | Licensed to The Apache Software Foundation, http://www.apache.org/ 4 | 5 | Benchmarking localhost (be patient).....done 6 | 7 | 8 | Server Software: uvicorn 9 | Server Hostname: localhost 10 | Server Port: 8000 11 | 12 | Document Path: /thumbnail 13 | Document Length: 76 bytes 14 | 15 | Concurrency Level: 10 16 | Time taken for tests: 10.745 seconds 17 | Complete requests: 100 18 | Failed requests: 92 19 | (Connect: 0, Receive: 0, Length: 92, Exceptions: 0) 20 | Total transferred: 22156 bytes 21 | Total body sent: 19100 22 | HTML transferred: 7756 bytes 23 | Requests per second: 9.31 [#/sec] (mean) 24 | Time per request: 1074.463 [ms] (mean) 25 | Time per request: 107.446 [ms] (mean, across all concurrent requests) 26 | Transfer rate: 2.01 [Kbytes/sec] received 27 | 1.74 kb/s sent 28 | 3.75 kb/s total 29 | 30 | Connection Times (ms) 31 | min mean[+/-sd] median max 32 | Connect: 0 0 0.2 0 2 33 | Processing: 646 840 191.6 732 1838 34 | Waiting: 646 840 191.5 728 1837 35 | Total: 646 840 191.5 732 1838 36 | 37 | Percentage of the requests served within a certain time (ms) 38 | 50% 732 39 | 66% 984 40 | 75% 1002 41 | 80% 1019 42 | 90% 1037 43 | 95% 1093 44 | 98% 1150 45 | 99% 1838 46 | 100% 1838 (longest request) -------------------------------------------------------------------------------- /application/run-snyk-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | snyk test --sarif-file-output=/snyk/output/snyk.sarif 4 | 5 | if [ $? -ne 0 ] 6 | then 7 | echo "Sny scan found vulnerabilities" 8 | fi -------------------------------------------------------------------------------- /application/snyk-docker-image-scan.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | image_name=$1 5 | [ -z $image_name ] && echo "Image name required" && exit 1 6 | 7 | image_tag=$image_name 8 | 9 | [ ! -z "$ECR_REGISTRY" ] && image_tag="$ECR_REGISTRY/$image_tag:$IMAGE_TAG" 10 | 11 | script_path=$(dirname "$0") 12 | cd $script_path 13 | 14 | docker run --rm -it --env SNYK_TOKEN \ 15 | -v /var/run/docker.sock:/var/run/docker.sock \ 16 | -v $PWD:/src \ 17 | snyk/snyk:docker \ 18 | snyk test --docker $image_tag --file=/src/$image_name.Dockerfile \ 19 | --sarif-file-output=/src/$image_name.scan.sarif -------------------------------------------------------------------------------- /application/templates/thumbnail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ id }} 4 | 5 | 6 |

Thumbnail Name: {{ id }}

7 | {{ id }} 8 | 9 | 10 | -------------------------------------------------------------------------------- /application/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyordsabuzo/infrastructure-for-event-driven-system/92adc9733ccb9f82bfeae5250a82fa5525810402/application/tests/__init__.py -------------------------------------------------------------------------------- /application/tests/backend/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyordsabuzo/infrastructure-for-event-driven-system/92adc9733ccb9f82bfeae5250a82fa5525810402/application/tests/backend/__init__.py -------------------------------------------------------------------------------- /application/tests/backend/test_endpoints.py: -------------------------------------------------------------------------------- 1 | import os 2 | from fastapi.exceptions import HTTPException 3 | from fastapi.testclient import TestClient 4 | from unittest import TestCase, mock 5 | from app.main import app, create_thumbnail, Thumbnail 6 | 7 | 8 | client = TestClient(app) 9 | 10 | 11 | class TestEndpoints(TestCase): 12 | @mock.patch('workers.thumbnail.create_s3_thumbnail.delay') 13 | def test_backend_main(self, mock_worker): 14 | tn = Thumbnail( 15 | url='http://lorempixel.com/400/200/', 16 | filename='filefromtestbackendmain' 17 | ) 18 | self.assertEqual(create_thumbnail(tn), tn) 19 | mock_worker.assert_called() 20 | 21 | @mock.patch('workers.thumbnail.create_s3_thumbnail.delay') 22 | def test_create_thumbnail(self, mock_worker): 23 | source_url = "https://jpeg.org/images/jpeg-home.jpg" 24 | response = client.post('/thumbnail', json={"url": source_url}) 25 | self.assertEqual(response.status_code, 200) 26 | self.assertIsNotNone(response.json()) 27 | 28 | output = response.json() 29 | self.assertEqual(output["url"], source_url) 30 | self.assertIsNotNone(output["filename"]) 31 | 32 | def test_create_thumbnail_exceptions(self): 33 | sourceurl = "some url" 34 | tn = Thumbnail( 35 | url="some url", 36 | filename="http://lorempixel.com/400/200/" 37 | ) 38 | self.assertRaises(HTTPException, 39 | create_thumbnail, 40 | tn 41 | ) 42 | 43 | sourceurl = "https://www.google.com" 44 | response = client.post('/thumbnail', json={"url": sourceurl}) 45 | self.assertEqual(response.status_code, 500) 46 | 47 | @mock.patch.dict(os.environ, { 48 | "THUMBNAIL_BASE_URL": "https://jpeg.org/images" 49 | }) 50 | def test_load_thumbnail(self): 51 | filename = "jpeg-home.jpg" 52 | response = client.get(f'/thumbnail/{filename}', json={}) 53 | self.assertEqual(response.status_code, 200) 54 | self.assertTrue( 55 | f'{os.environ.get("THUMBNAIL_BASE_URL")}/{filename}' in response.content.decode('utf-8') 56 | ) 57 | 58 | filename = "Rainbow_on_Mountain_HD_ImageTESTSSSSSSS.jpg" 59 | response = client.get(f'/thumbnail/{filename}', json={}) 60 | self.assertEqual(response.status_code, 404) 61 | -------------------------------------------------------------------------------- /application/tests/worker/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyordsabuzo/infrastructure-for-event-driven-system/92adc9733ccb9f82bfeae5250a82fa5525810402/application/tests/worker/__init__.py -------------------------------------------------------------------------------- /application/tests/worker/test_celery_config.py: -------------------------------------------------------------------------------- 1 | from unittest import TestCase, mock 2 | from workers.config import get_celery_app 3 | from moto import mock_sqs 4 | 5 | import os 6 | import boto3 7 | 8 | 9 | class TestCeleryConfig(TestCase): 10 | def test_config(self): 11 | default = get_celery_app() 12 | self.assertIsNotNone(default.conf.broker_url) 13 | self.assertIsNotNone(default.conf.result_backend) 14 | self.assertTrue('amqp' in default.conf.broker_url) 15 | 16 | with mock.patch.dict(os.environ, { 17 | "BROKER_TYPE": "sqs", 18 | "AWS_ACCESS_KEY_ID": "temp", 19 | "AWS_SECRET_ACCESS_KEY": "temp", 20 | "AWS_DEFAULT_REGION": "ap-southeast-2", 21 | "QUEUE_NAME": "test" 22 | }): 23 | with mock_sqs(): 24 | queue_name = "test" 25 | sqs_client = boto3.client('sqs') 26 | sqs_client.create_queue(QueueName=queue_name) 27 | 28 | sqs = get_celery_app() 29 | self.assertIsNotNone(sqs.conf.broker_url) 30 | self.assertTrue('sqs' in sqs.conf.broker_url) 31 | self.assertEqual( 32 | sqs_client.get_queue_url(QueueName=queue_name)['QueueUrl'], 33 | sqs.conf.broker_transport_options['predefined_queues']['celery']['url'] 34 | ) 35 | 36 | with mock.patch.dict(os.environ, { 37 | "BROKER_TYPE": "sqs", 38 | "AWS_ACCESS_KEY_ID": "temp", 39 | "AWS_SECRET_ACCESS_KEY": "temp", 40 | "AWS_DEFAULT_REGION": "ap-southeast-2", 41 | "QUEUE_NAME": "test", 42 | "SQS_CHECK_DURATION": "5" 43 | }): 44 | with mock_sqs(): 45 | with self.assertRaises(Exception): 46 | sqs = get_celery_app() 47 | -------------------------------------------------------------------------------- /application/tests/worker/test_entities.py: -------------------------------------------------------------------------------- 1 | from unittest import TestCase 2 | from pathlib import Path 3 | 4 | from PIL import UnidentifiedImageError 5 | from requests.models import MissingSchema 6 | from entities.thumbnail import Thumbnail, S3_Thumbnail 7 | 8 | from moto import mock_s3 9 | 10 | import pytest 11 | import boto3 12 | 13 | 14 | class TestEntities(TestCase): 15 | def test_s3_entities(self): 16 | with mock_s3(): 17 | bucket_name = "somebucket" 18 | s3 = boto3.client('s3') 19 | s3.create_bucket(Bucket=bucket_name) 20 | 21 | url = 'http://personal.psu.edu/xqz5228/jpg.jpg' 22 | filename = 'somefilename' 23 | thumbnail = S3_Thumbnail(url, filename) 24 | thumbnail.s3_bucket = bucket_name 25 | self.assertEqual(thumbnail.url, url) 26 | self.assertEqual(thumbnail.filename, filename) 27 | 28 | thumbnail.create() 29 | response = s3.list_objects_v2(Bucket=bucket_name) 30 | self.assertTrue( 31 | response['Contents'][0]['Key'], 32 | f'thumbnail/{filename}' 33 | ) 34 | 35 | def test_thumbnail_exceptions(self): 36 | with pytest.raises(UnidentifiedImageError): 37 | url = 'https://www.google.com' 38 | thumbnail = Thumbnail(url, 'somefile') 39 | thumbnail.create() 40 | 41 | with pytest.raises(MissingSchema): 42 | url = 'someurl' 43 | thumbnail = Thumbnail(url, 'somefile') 44 | thumbnail.create() 45 | -------------------------------------------------------------------------------- /application/tests/worker/test_workers.py: -------------------------------------------------------------------------------- 1 | from unittest import TestCase 2 | from pathlib import Path 3 | from workers import thumbnail 4 | 5 | from moto import mock_s3 6 | 7 | import boto3 8 | 9 | 10 | class TestWorkers(TestCase): 11 | 12 | def test_s3_thumbnail(self): 13 | with mock_s3(): 14 | bucket_name = "somebucket" 15 | s3 = boto3.client('s3') 16 | s3.create_bucket(Bucket=bucket_name) 17 | 18 | url = 'http://personal.psu.edu/xqz5228/jpg.jpg' 19 | filename = 'somefilename' 20 | thumbnail.create_s3_thumbnail(url, filename, bucket_name) 21 | response = s3.list_objects_v2(Bucket=bucket_name) 22 | self.assertTrue( 23 | response['Contents'][0]['Key'], 24 | f'thumbnail/{filename}' 25 | ) 26 | -------------------------------------------------------------------------------- /application/worker.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.9-alpine AS base 2 | 3 | WORKDIR /usr/src 4 | 5 | ENV PYTHONDONTWRITEBYTECODE 1 6 | ENV PYTHONBUFFERED 1 7 | ENV CRYPTOGRAPHY_DONT_BUILD_RUST 1 8 | ENV PYCURL_VERSION=7_44_1 9 | 10 | COPY ./workers.requirements.txt requirements.txt 11 | RUN set -eux \ 12 | && apk add --no-cache --virtual .build-deps build-base \ 13 | libressl-dev libffi-dev gcc musl-dev python3-dev \ 14 | tiff-dev jpeg-dev openjpeg-dev zlib-dev freetype-dev lcms2-dev \ 15 | libwebp-dev tcl-dev tk-dev harfbuzz-dev fribidi-dev libimagequant-dev \ 16 | libxcb-dev libpng-dev openssl-dev curl-dev wget 17 | 18 | RUN wget https://github.com/pycurl/pycurl/archive/refs/tags/REL_${PYCURL_VERSION}.tar.gz && \ 19 | tar -zxf REL_${PYCURL_VERSION}.tar.gz && \ 20 | cd pycurl-REL_${PYCURL_VERSION} && \ 21 | python setup.py install && \ 22 | cd .. && rm -rf *REL_${PYCURL_VERSION}* 23 | 24 | RUN pip install --upgrade pip setuptools wheel \ 25 | && pip install -r /usr/src/requirements.txt \ 26 | && rm -rf /root/.cache/pip 27 | 28 | COPY ./entities/ /usr/src/entities/ 29 | COPY ./workers/ /usr/src/workers/ 30 | 31 | FROM snyk/snyk:python AS scan 32 | ARG SNYK_TOKEN 33 | ENV SNYK_TOKEN=${SNYK_TOKEN} 34 | 35 | COPY workers.requirements.txt requirements.txt 36 | COPY run-snyk-test.sh . 37 | 38 | RUN pip install -r requirements.txt 39 | RUN ./run-snyk-test.sh 40 | 41 | FROM scratch AS scan-result 42 | COPY --from=scan /snyk/output . 43 | 44 | FROM base AS test 45 | 46 | COPY ./tests/worker/ /usr/src/tests/ 47 | RUN pytest 48 | RUN touch /usr/src/test.complete 49 | 50 | FROM base AS final 51 | COPY --from=test /usr/src/test.complete . 52 | COPY ./worker.entrypoint.sh /usr/src/entrypoint.sh 53 | 54 | # RUN addgroup -S appgroup && adduser -S appuser -G appgroup 55 | # USER appuser 56 | 57 | ENTRYPOINT [ "sh", "/usr/src/entrypoint.sh" ] -------------------------------------------------------------------------------- /application/worker.entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | celery -A workers.thumbnail worker --loglevel=info -------------------------------------------------------------------------------- /application/workers.requirements.txt: -------------------------------------------------------------------------------- 1 | pytest 2 | requests 3 | Pillow 4 | celery==v5.1.2 5 | boto3 6 | moto 7 | pycurl 8 | python-dotenv -------------------------------------------------------------------------------- /application/workers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyordsabuzo/infrastructure-for-event-driven-system/92adc9733ccb9f82bfeae5250a82fa5525810402/application/workers/__init__.py -------------------------------------------------------------------------------- /application/workers/config.py: -------------------------------------------------------------------------------- 1 | from abc import abstractmethod 2 | from celery import Celery 3 | from botocore.exceptions import ClientError 4 | 5 | import os 6 | import time 7 | import boto3 8 | from dotenv import load_dotenv 9 | 10 | load_dotenv() 11 | 12 | 13 | class CeleryDefaultConfig: 14 | 15 | @abstractmethod 16 | def get_config(self): 17 | return { 18 | 'broker_url': os.environ.get('BROKER', 'amqp://rabbitmq:5673//'), 19 | 'result_backend': os.environ.get('BACKEND', 'amqp://rabbitmq:5673//'), 20 | } 21 | 22 | 23 | class CelerySQSConfig: 24 | def get_config(self): 25 | return { 26 | 'broker_url': os.environ.get('BROKER', 'sqs://'), 27 | 'broker_transport_options': { 28 | 'region': os.environ.get('AWS_DEFAULT_REGION'), 29 | 'predefined_queues': { 30 | 'celery': { 31 | 'url': self.get_sqs_url() 32 | } 33 | } 34 | } 35 | } 36 | 37 | def get_sqs_url(self): 38 | start_time = time.time() 39 | while time.time() - start_time < float(os.environ.get('SQS_CHECK_DURATION', 60)): 40 | sqs = boto3.client( 41 | 'sqs', 42 | endpoint_url=os.environ.get('AWS_ENDPOINT', None) 43 | ) 44 | try: 45 | response = sqs.get_queue_url( 46 | QueueName=os.environ.get('QUEUE_NAME')) 47 | return response['QueueUrl'] 48 | except sqs.exceptions.QueueDoesNotExist: 49 | time.sleep(5) 50 | 51 | raise Exception("SQS Queue is not healthy") 52 | 53 | 54 | def get_celery_app(): 55 | broker_type = os.environ.get('BROKER_TYPE', 'default') 56 | 57 | config_class_list = { 58 | 'sqs': CelerySQSConfig 59 | } 60 | 61 | app = Celery(__name__) 62 | config_class = config_class_list.get(broker_type, CeleryDefaultConfig)() 63 | app.conf.update(config_class.get_config()) 64 | 65 | return app 66 | -------------------------------------------------------------------------------- /application/workers/thumbnail.py: -------------------------------------------------------------------------------- 1 | from .config import get_celery_app 2 | from entities.thumbnail import S3_Thumbnail, Thumbnail 3 | 4 | app = get_celery_app() 5 | 6 | 7 | @app.task(bind=True, name='create_thumbnail') 8 | def create(self, url, filename): 9 | thumbnail = Thumbnail(url, filename) 10 | thumbnail.create() 11 | 12 | 13 | @app.task(bind=True, name='create_s3_thumbnail') 14 | def create_s3_thumbnail(self, url, filename, bucket_name): 15 | thumbnail = S3_Thumbnail(url, filename) 16 | thumbnail.s3_bucket = bucket_name 17 | thumbnail.create() 18 | -------------------------------------------------------------------------------- /ebsource/.platform/hooks/prebuild/custom.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | systemctl enable amazon-ssm-agent 5 | systemctl start amazon-ssm-agent 6 | 7 | yum install -y amazon-cloudwatch-agent 8 | 9 | sudo cat < /opt/aws/amazon-cloudwatch-agent/bin/config.json 10 | { 11 | "agent": { 12 | "metrics_collection_interval": 60, 13 | "run_as_user": "root" 14 | }, 15 | "metrics": { 16 | "append_dimensions": { 17 | "AutoScalingGroupName": "\${aws:AutoScalingGroupName}" 18 | }, 19 | "metrics_collected": { 20 | "mem": { 21 | "measurement": ["mem_used_percent"] 22 | } 23 | } 24 | } 25 | } 26 | EOF 27 | 28 | /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \ 29 | -a fetch-config -m ec2 -s -c \ 30 | file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -------------------------------------------------------------------------------- /infrastructure/.terraform.lock.hcl: -------------------------------------------------------------------------------- 1 | # This file is maintained automatically by "terraform init". 2 | # Manual edits may be lost in future updates. 3 | 4 | provider "registry.terraform.io/hashicorp/archive" { 5 | version = "2.2.0" 6 | hashes = [ 7 | "h1:CIWi5G6ob7p2wWoThRQbOB8AbmFlCzp7Ka81hR3cVp0=", 8 | "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", 9 | "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", 10 | "zh:100fc5b3fc01ea463533d7bbfb01cb7113947a969a4ec12e27f5b2be49884d6c", 11 | "zh:55c0d7ddddbd0a46d57c51fcfa9b91f14eed081a45101dbfc7fd9d2278aa1403", 12 | "zh:73a5dd68379119167934c48afa1101b09abad2deb436cd5c446733e705869d6b", 13 | "zh:841fc4ac6dc3479981330974d44ad2341deada8a5ff9e3b1b4510702dfbdbed9", 14 | "zh:91be62c9b41edb137f7f835491183628d484e9d6efa82fcb75cfa538c92791c5", 15 | "zh:acd5f442bd88d67eb948b18dc2ed421c6c3faee62d3a12200e442bfff0aa7d8b", 16 | "zh:ad5720da5524641ad718a565694821be5f61f68f1c3c5d2cfa24426b8e774bef", 17 | "zh:e63f12ea938520b3f83634fc29da28d92eed5cfbc5cc8ca08281a6a9c36cca65", 18 | "zh:f6542918faa115df46474a36aabb4c3899650bea036b5f8a5e296be6f8f25767", 19 | ] 20 | } 21 | 22 | provider "registry.terraform.io/hashicorp/aws" { 23 | version = "4.23.0" 24 | hashes = [ 25 | "h1:JDJLmKK61GLw8gHQtCzmvlwPNZIu46/M5uBg/TDlBa0=", 26 | "zh:17adbedc9a80afc571a8de7b9bfccbe2359e2b3ce1fffd02b456d92248ec9294", 27 | "zh:23d8956b031d78466de82a3d2bbe8c76cc58482c931af311580b8eaef4e6a38f", 28 | "zh:343fe19e9a9f3021e26f4af68ff7f4828582070f986b6e5e5b23d89df5514643", 29 | "zh:6b8ff83d884b161939b90a18a4da43dd464c4b984f54b5f537b2870ce6bd94bc", 30 | "zh:7777d614d5e9d589ad5508eecf4c6d8f47d50fcbaf5d40fa7921064240a6b440", 31 | "zh:82f4578861a6fd0cde9a04a1926920bd72d993d524e5b34d7738d4eff3634c44", 32 | "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", 33 | "zh:a08fefc153bbe0586389e814979cf7185c50fcddbb2082725991ed02742e7d1e", 34 | "zh:ae789c0e7cb777d98934387f8888090ccb2d8973ef10e5ece541e8b624e1fb00", 35 | "zh:b4608aab78b4dbb32c629595797107fc5a84d1b8f0682f183793d13837f0ecf0", 36 | "zh:ed2c791c2354764b565f9ba4be7fc845c619c1a32cefadd3154a5665b312ab00", 37 | "zh:f94ac0072a8545eebabf417bc0acbdc77c31c006ad8760834ee8ee5cdb64e743", 38 | ] 39 | } 40 | 41 | provider "registry.terraform.io/hashicorp/local" { 42 | version = "2.2.3" 43 | hashes = [ 44 | "h1:aWp5iSUxBGgPv1UnV5yag9Pb0N+U1I0sZb38AXBFO8A=", 45 | "zh:04f0978bb3e052707b8e82e46780c371ac1c66b689b4a23bbc2f58865ab7d5c0", 46 | "zh:6484f1b3e9e3771eb7cc8e8bab8b35f939a55d550b3f4fb2ab141a24269ee6aa", 47 | "zh:78a56d59a013cb0f7eb1c92815d6eb5cf07f8b5f0ae20b96d049e73db915b238", 48 | "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", 49 | "zh:8aa9950f4c4db37239bcb62e19910c49e47043f6c8587e5b0396619923657797", 50 | "zh:996beea85f9084a725ff0e6473a4594deb5266727c5f56e9c1c7c62ded6addbb", 51 | "zh:9a7ef7a21f48fabfd145b2e2a4240ca57517ad155017e86a30860d7c0c109de3", 52 | "zh:a63e70ac052aa25120113bcddd50c1f3cfe61f681a93a50cea5595a4b2cc3e1c", 53 | "zh:a6e8d46f94108e049ad85dbed60354236dc0b9b5ec8eabe01c4580280a43d3b8", 54 | "zh:bb112ce7efbfcfa0e65ed97fa245ef348e0fd5bfa5a7e4ab2091a9bd469f0a9e", 55 | "zh:d7bec0da5c094c6955efed100f3fe22fca8866859f87c025be1760feb174d6d9", 56 | "zh:fb9f271b72094d07cef8154cd3d50e9aa818a0ea39130bc193132ad7b23076fd", 57 | ] 58 | } 59 | 60 | provider "registry.terraform.io/kreuzwerker/docker" { 61 | version = "2.15.0" 62 | constraints = "2.15.0" 63 | hashes = [ 64 | "h1:NEBNtKNukqr6qk5vWu8Xx/nHBVNNdlty0hrFG76K7AE=", 65 | "zh:0241e5c7b66c14aa54e367dfe380fbde8388d3254cbe8a70717c12f71897e82b", 66 | "zh:0f162f0a01ffe9eec32e78dfc2a5b05a373230c41f041439efa3f4b68903fdcb", 67 | "zh:1c222c1425fbb0367154bcb8e4d87b19d6eae133fbb341f73102fa3b300f34bf", 68 | "zh:679206433e31d8fa69d95167af6d2cd762218e89811b735ee20bd8da19f97854", 69 | "zh:a16baab045bc7a709a9767816304cc5548aa2ee0b72c0eee49e3826e6a46a3fd", 70 | "zh:a29c4e304a6a7faf5b651a61a91a1aa2e837591cff049fbe1c747b6319e43956", 71 | "zh:bed7a69dbb9a024aecfac840ca2ac2f1527062f3d9c8c718e4e81d464b5ad329", 72 | "zh:c22aa10806de216b6aa0b36a2c1114a9fdaa5b47925aaad3333de3ce24cc52c9", 73 | "zh:d034295663d8a39035fd6fdf0488b72544b13f48acaee797af967343248676f8", 74 | "zh:d9001dfeac0db1799d8ab9d04be090522529baae0dba7f7e82b71f2168f05582", 75 | "zh:d9f3eb7ef8f256eb9148d72bd4a00e34f3be5570484598e26b603cbdc5eed923", 76 | "zh:ef573f1e0f000127fa9f569c8ee320f03ba1d302a6fbf9aac8300efa6fc6f4b2", 77 | "zh:ef7e246b4205202161b4119c10a1282f74243e029508184132731f9f6f6d9f4c", 78 | ] 79 | } 80 | -------------------------------------------------------------------------------- /infrastructure/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "remote" { 3 | hostname = "app.terraform.io" 4 | organization = "pablosspot" 5 | 6 | workspaces { 7 | prefix = "event-driven-system-infrastructure-" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /infrastructure/data.tf: -------------------------------------------------------------------------------- 1 | data "aws_caller_identity" "current" {} 2 | 3 | data "aws_elastic_beanstalk_hosted_zone" "current" {} 4 | 5 | data "aws_elastic_beanstalk_hosted_zone" "current" {} 6 | 7 | data "archive_file" "docker_run" { 8 | type = "zip" 9 | source_dir = "${path.module}/ebsource" 10 | output_path = "${path.module}/Dockerrun.aws.zip" 11 | 12 | depends_on = [ 13 | local_file.docker_run_config 14 | ] 15 | } 16 | 17 | data "aws_iam_policy_document" "assume_policy" { 18 | statement { 19 | actions = ["sts:AssumeRole"] 20 | principals { 21 | type = "Service" 22 | identifiers = ["ec2.amazonaws.com"] 23 | } 24 | } 25 | } 26 | 27 | data "aws_iam_policy_document" "permissions" { 28 | statement { 29 | actions = [ 30 | "cloudwatch:PutMetricData", 31 | "ec2:DescribeInstanceStatus", 32 | "ssm:*", 33 | "ec2messages:*", 34 | "s3:*", 35 | "sqs:*" 36 | ] 37 | resources = ["*"] 38 | } 39 | } 40 | 41 | data "aws_route53_zone" "zone" { 42 | name = var.hosted_zone_name 43 | } 44 | -------------------------------------------------------------------------------- /infrastructure/locals.tf: -------------------------------------------------------------------------------- 1 | locals { 2 | tags = { 3 | created_by = "terraform" 4 | } 5 | 6 | aws_ecr_url = "${data.aws_caller_identity.current.account_id}.dkr.ecr.${var.region}.amazonaws.com" 7 | docker_run_config_sha = sha256(local_file.docker_run_config.content) 8 | backend_image_tag = try([ 9 | for t in data.aws_ecr_image.image["backend"].image_tags : t if t != "latest" 10 | ][0], "latest") 11 | worker_image_tag = try([ 12 | for t in data.aws_ecr_image.image["worker"].image_tags : t if t != "latest" 13 | ][0], "latest") 14 | } 15 | -------------------------------------------------------------------------------- /infrastructure/main.tf: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Setup proper credentials to push to ECR 4 | 5 | # Create docker run configuration file 6 | resource "local_file" "docker_run_config" { 7 | content = yamlencode({ 8 | version = "3.8" 9 | services = { 10 | backend = { 11 | image = "${aws_ecr_repository.repository["backend"].repository_url}:latest" 12 | ports = ["80:${var.backend_container_port}"] 13 | env_file = [".env"] 14 | } 15 | worker = { 16 | image = "${aws_ecr_repository.repository["worker"].repository_url}:latest" 17 | env_file = [".env"] 18 | } 19 | } 20 | }) 21 | filename = "${path.module}/ebsource/docker-compose.yml" 22 | } 23 | 24 | # Compress the docker run config file 25 | # Refer to data reference setup 26 | 27 | # Create s3 bucket to store my docker run config 28 | resource "aws_s3_bucket" "docker_run_bucket" { 29 | bucket = "docker-run-bucket-${terraform.workspace}" 30 | acl = "private" 31 | 32 | server_side_encryption_configuration { 33 | rule { 34 | apply_server_side_encryption_by_default { 35 | sse_algorithm = "AES256" 36 | } 37 | } 38 | } 39 | 40 | tags = local.tags 41 | } 42 | 43 | # Create s3 object from the compressed docker run config 44 | resource "aws_s3_bucket_object" "docker_run_object" { 45 | key = "${local.docker_run_config_sha}.zip" 46 | bucket = aws_s3_bucket.docker_run_bucket.id 47 | source = data.archive_file.docker_run.output_path 48 | server_side_encryption = "AES256" 49 | tags = local.tags 50 | } 51 | 52 | # Create instance profile 53 | resource "aws_iam_instance_profile" "ec2_eb_profile" { 54 | name = "event-driven-ec2-profile" 55 | role = aws_iam_role.ec2_role.name 56 | tags = local.tags 57 | } 58 | 59 | resource "aws_iam_role" "ec2_role" { 60 | name = "event-driven-ec2-role" 61 | assume_role_policy = data.aws_iam_policy_document.assume_policy.json 62 | managed_policy_arns = [ 63 | "arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier", 64 | "arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker", 65 | "arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier", 66 | "arn:aws:iam::aws:policy/EC2InstanceProfileForImageBuilderECRContainerBuilds", 67 | "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy", 68 | "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore" 69 | ] 70 | 71 | inline_policy { 72 | name = "eb-application-permissions" 73 | policy = data.aws_iam_policy_document.permissions.json 74 | } 75 | tags = local.tags 76 | } 77 | 78 | # Create eb app 79 | resource "aws_elastic_beanstalk_application" "eb_app" { 80 | name = "event-driven-app" 81 | description = "event-driven-app beanstalk deployment" 82 | tags = local.tags 83 | } 84 | 85 | # Create eb version 86 | resource "aws_elastic_beanstalk_application_version" "eb_version" { 87 | name = local.docker_run_config_sha 88 | application = aws_elastic_beanstalk_application.eb_app.name 89 | description = "application version created by terraform" 90 | bucket = aws_s3_bucket.docker_run_bucket.id 91 | key = aws_s3_bucket_object.docker_run_object.id 92 | tags = local.tags 93 | } 94 | 95 | # Create eb environment 96 | resource "aws_elastic_beanstalk_environment" "eb_env" { 97 | name = "event-driven-env" 98 | application = aws_elastic_beanstalk_application.eb_app.name 99 | solution_stack_name = "64bit Amazon Linux 2 v3.4.17 running Docker" 100 | version_label = aws_elastic_beanstalk_application_version.eb_version.name 101 | cname_prefix = "event-driven-app" 102 | tags = local.tags 103 | 104 | dynamic "setting" { 105 | for_each = var.vpc_id != null ? [1] : [] 106 | content { 107 | namespace = "aws:ec2:vpc" 108 | name = "VPCId" 109 | value = var.vpc_id 110 | } 111 | } 112 | 113 | dynamic "setting" { 114 | for_each = length(var.private_subnets) > 0 ? [1] : [] 115 | content { 116 | namespace = "aws:ec2:vpc" 117 | name = "Subnets" 118 | value = join(",", var.private_subnets) 119 | } 120 | } 121 | 122 | dynamic "setting" { 123 | for_each = length(var.public_subnets) > 0 ? [1] : [] 124 | content { 125 | namespace = "aws:ec2:vpc" 126 | name = "ELBSubnets" 127 | value = join(",", var.public_subnets) 128 | } 129 | } 130 | 131 | dynamic "setting" { 132 | for_each = length(var.instance_security_groups) > 0 ? [1] : [] 133 | content { 134 | namespace = "aws:autoscaling:launchconfiguration" 135 | name = "SecurityGroups" 136 | value = join(",", var.instance_security_groups) 137 | } 138 | } 139 | 140 | setting { 141 | namespace = "aws:autoscaling:launchconfiguration" 142 | name = "IamInstanceProfile" 143 | value = aws_iam_instance_profile.ec2_eb_profile.name 144 | } 145 | 146 | setting { 147 | namespace = "aws:autoscaling:launchconfiguration" 148 | name = "InstanceType" 149 | value = var.instance_type 150 | } 151 | 152 | setting { 153 | namespace = "aws:autoscaling:asg" 154 | name = "MaxSize" 155 | value = var.max_instance_count 156 | } 157 | 158 | setting { 159 | namespace = "aws:elasticbeanstalk:environment" 160 | name = "LoadBalancerType" 161 | value = "application" 162 | } 163 | 164 | setting { 165 | namespace = "aws:ec2:vpc" 166 | name = "ELBScheme" 167 | value = "internet facing" 168 | } 169 | 170 | setting { 171 | namespace = "aws:elasticbeanstalk:environment:process:default" 172 | name = "MatcherHTTPCode" 173 | value = 200 174 | } 175 | 176 | setting { 177 | namespace = "aws:elasticbeanstalk:environment:process:default" 178 | name = "HealthCheckPath" 179 | value = "/docs" 180 | } 181 | 182 | dynamic "setting" { 183 | for_each = merge(var.environment_variables_map, { 184 | THUMBNAIL_BASE_URL = "https://${aws_s3_bucket.thumbnail_bucket.bucket_regional_domain_name}/thumbnail" 185 | S3_BUCKET_NAME = aws_s3_bucket.thumbnail_bucket.bucket 186 | QUEUE_NAME = aws_sqs_queue.queue.name 187 | BROKER_TYPE = "sqs" 188 | AWS_DEFAULT_REGION = var.region 189 | }) 190 | content { 191 | namespace = "aws:elasticbeanstalk:application:environment" 192 | name = setting.key 193 | value = setting.value 194 | } 195 | } 196 | 197 | dynamic "setting" { 198 | for_each = { 199 | Protocol = "HTTPS" 200 | SSLCertificateArns = aws_acm_certificate.cert.arn 201 | SSLPolicy = "ELBSecurityPolicy-TLS-1-2-Ext-2018-06" 202 | } 203 | content { 204 | namespace = "aws:elbv2:listener:443" 205 | name = setting.key 206 | value = setting.value 207 | } 208 | } 209 | 210 | setting { 211 | namespace = "aws:elbv2:listener:default" 212 | name = "ListenerEnabled" 213 | value = false 214 | } 215 | 216 | dynamic "setting" { 217 | for_each = length(var.lb_security_groups) > 0 ? [1] : [] 218 | content { 219 | namespace = "aws:elbv2:loadbalancer" 220 | name = "SecurityGroups" 221 | value = join(",", var.lb_security_groups) 222 | } 223 | } 224 | 225 | setting { 226 | namespace = "aws:elasticbeanstalk:cloudwatch:logs" 227 | name = "StreamLogs" 228 | value = true 229 | } 230 | 231 | setting { 232 | namespace = "aws:autoscaling:updatepolicy:rollingupdate" 233 | name = "MinInstancesInService" 234 | value = 1 235 | } 236 | } 237 | 238 | # Setup output variable to show endpoint url to eb app 239 | # Refer to variable in output.tf 240 | resource "aws_route53_record" "endpoint" { 241 | zone_id = data.aws_route53_zone.zone.zone_id 242 | name = var.endpoint_name 243 | type = "A" 244 | 245 | alias { 246 | name = aws_elastic_beanstalk_environment.eb_env.cname 247 | zone_id = data.aws_elastic_beanstalk_hosted_zone.current.id 248 | evaluate_target_health = true 249 | } 250 | 251 | } 252 | 253 | resource "aws_acm_certificate" "cert" { 254 | domain_name = var.hosted_zone_name 255 | subject_alternative_names = ["*.${var.hosted_zone_name}"] 256 | validation_method = "DNS" 257 | tags = local.tags 258 | 259 | lifecycle { 260 | create_before_destroy = true 261 | } 262 | } 263 | 264 | resource "aws_route53_record" "validation_record" { 265 | for_each = { 266 | for d in aws_acm_certificate.cert.domain_validation_options : d.domain_name => { 267 | name = d.resource_record_name 268 | record = d.resource_record_value 269 | type = d.resource_record_type 270 | } 271 | } 272 | 273 | allow_overwrite = true 274 | name = each.value.name 275 | records = [each.value.record] 276 | ttl = 60 277 | type = each.value.type 278 | zone_id = data.aws_route53_zone.zone.zone_id 279 | } 280 | 281 | resource "aws_acm_certificate_validation" "validation" { 282 | certificate_arn = aws_acm_certificate.cert.arn 283 | validation_record_fqdns = [for record in aws_route53_record.validation_record : record.fqdn] 284 | } 285 | 286 | resource "aws_s3_bucket" "thumbnail_bucket" { 287 | bucket = "event-driven-thumbnail-bucket" 288 | acl = "private" 289 | tags = local.tags 290 | 291 | server_side_encryption_configuration { 292 | rule { 293 | apply_server_side_encryption_by_default { 294 | sse_algorithm = "AES256" 295 | } 296 | } 297 | } 298 | } 299 | 300 | resource "aws_s3_bucket_policy" "public_read" { 301 | bucket = aws_s3_bucket.thumbnail_bucket.id 302 | policy = jsonencode({ 303 | Version = "2012-10-17" 304 | Statement = [ 305 | { 306 | Effect = "Allow" 307 | Principal = "*" 308 | Action = ["s3:GetObject"] 309 | Resource = ["${aws_s3_bucket.thumbnail_bucket.arn}/thumbnail/*"] 310 | } 311 | ] 312 | }) 313 | } 314 | 315 | resource "aws_sqs_queue" "queue" { 316 | name = "event-driven-queue" 317 | kms_master_key_id = "alias/aws/sqs" 318 | kms_data_key_reuse_period_seconds = 300 319 | } 320 | -------------------------------------------------------------------------------- /infrastructure/outputs.tf: -------------------------------------------------------------------------------- 1 | output "endpoint_url" { 2 | description = "Application endpoint" 3 | value = "https://${var.endpoint_name}.${var.hosted_zone_name}/docs" 4 | } 5 | -------------------------------------------------------------------------------- /infrastructure/providers.tf: -------------------------------------------------------------------------------- 1 | provider "aws" { 2 | region = var.region 3 | } 4 | -------------------------------------------------------------------------------- /infrastructure/tfvars/main.tfvars: -------------------------------------------------------------------------------- 1 | region = "ap-southeast-2" 2 | hosted_zone_name = "pablosspot.ml" 3 | endpoint_name = "app" 4 | -------------------------------------------------------------------------------- /infrastructure/tfvars/poc.tfvars: -------------------------------------------------------------------------------- 1 | region = "ap-southeast-2" 2 | hosted_zone_name = "pablosspot.ml" 3 | endpoint_name = "app" 4 | vpc_id = "vpc-392e765d" 5 | private_subnets = ["subnet-ba2f3dcc", "subnet-4de6a814"] 6 | public_subnets = ["subnet-588b663f", "subnet-4de6a814"] 7 | instance_security_groups = ["sg-06be7460"] 8 | lb_security_groups = ["sg-728b390b"] 9 | -------------------------------------------------------------------------------- /infrastructure/variables.tf: -------------------------------------------------------------------------------- 1 | variable "region" { 2 | description = "AWS region to create resources in" 3 | type = string 4 | default = "ap-southeast-2" 5 | } 6 | 7 | variable "repository_list" { 8 | description = "List of repository names" 9 | type = list(any) 10 | default = ["backend", "worker"] 11 | } 12 | 13 | variable "backend_container_port" { 14 | type = number 15 | description = "Backend container port" 16 | default = 8000 17 | } 18 | 19 | variable "instance_type" { 20 | type = string 21 | description = "EC2 instance type" 22 | default = "t2.micro" 23 | } 24 | 25 | variable "max_instance_count" { 26 | type = number 27 | description = "Max instance count in auto scaling group" 28 | default = 2 29 | } 30 | 31 | variable "environment_variables_map" { 32 | type = map(any) 33 | description = "Map of environment variables" 34 | default = {} 35 | } 36 | 37 | variable "hosted_zone_name" { 38 | type = string 39 | description = "Route 53 hosted zone" 40 | } 41 | 42 | variable "endpoint_name" { 43 | type = string 44 | description = "Route 53 record name" 45 | } 46 | 47 | variable "vpc_id" { 48 | type = string 49 | description = "VPC id" 50 | default = null 51 | } 52 | 53 | variable "private_subnets" { 54 | type = list(string) 55 | description = "List of private subnets" 56 | default = [] 57 | } 58 | 59 | variable "public_subnets" { 60 | type = list(string) 61 | description = "List of public subnets" 62 | default = [] 63 | } 64 | 65 | variable "instance_security_groups" { 66 | type = list(string) 67 | description = "List of instance security groups" 68 | default = [] 69 | } 70 | 71 | variable "lb_security_groups" { 72 | type = list(string) 73 | description = "List of load balancer security groups" 74 | default = [] 75 | } 76 | -------------------------------------------------------------------------------- /task: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyordsabuzo/infrastructure-for-event-driven-system/92adc9733ccb9f82bfeae5250a82fa5525810402/task --------------------------------------------------------------------------------