eoapi-cdk 10.2.5 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.jsii +231 -32
  2. package/lib/bastion-host/index.js +1 -1
  3. package/lib/database/index.js +1 -1
  4. package/lib/ingestor-api/index.js +1 -1
  5. package/lib/lambda-api-gateway/index.d.ts +1 -1
  6. package/lib/lambda-api-gateway/index.js +2 -2
  7. package/lib/lambda-api-gateway-private/index.js +1 -1
  8. package/lib/stac-api/index.d.ts +19 -0
  9. package/lib/stac-api/index.js +11 -5
  10. package/lib/stac-api/runtime/Dockerfile +25 -6
  11. package/lib/stac-api/runtime/pyproject.toml +14 -0
  12. package/lib/stac-api/runtime/src/stac_api/handler.py +135 -0
  13. package/lib/stac-api/runtime/uv.lock +855 -0
  14. package/lib/stac-auth-proxy/index.js +4 -4
  15. package/lib/stac-auth-proxy/runtime/Dockerfile +13 -6
  16. package/lib/stac-auth-proxy/runtime/pyproject.toml +13 -0
  17. package/lib/stac-auth-proxy/runtime/uv.lock +820 -0
  18. package/lib/stac-browser/index.js +1 -1
  19. package/lib/stac-loader/index.js +2 -2
  20. package/lib/stac-loader/runtime/Dockerfile +15 -7
  21. package/lib/stac-loader/runtime/pyproject.toml +6 -2
  22. package/lib/stac-loader/runtime/uv.lock +593 -0
  23. package/lib/stactools-item-generator/index.js +1 -1
  24. package/lib/stactools-item-generator/runtime/Dockerfile +10 -8
  25. package/lib/stactools-item-generator/runtime/pyproject.toml +1 -1
  26. package/lib/stactools-item-generator/runtime/uv.lock +177 -0
  27. package/lib/tipg-api/index.d.ts +19 -0
  28. package/lib/tipg-api/index.js +11 -5
  29. package/lib/tipg-api/runtime/Dockerfile +24 -13
  30. package/lib/tipg-api/runtime/pyproject.toml +13 -0
  31. package/lib/tipg-api/runtime/src/tipg_api/handler.py +123 -0
  32. package/lib/tipg-api/runtime/uv.lock +810 -0
  33. package/lib/titiler-pgstac-api/index.d.ts +19 -0
  34. package/lib/titiler-pgstac-api/index.js +11 -5
  35. package/lib/titiler-pgstac-api/runtime/Dockerfile +27 -19
  36. package/lib/titiler-pgstac-api/runtime/pyproject.toml +19 -0
  37. package/lib/titiler-pgstac-api/runtime/src/titiler_pgstac_api/handler.py +92 -0
  38. package/lib/titiler-pgstac-api/runtime/uv.lock +1073 -0
  39. package/package.json +9 -9
  40. package/pyproject.toml +13 -6
  41. package/uv.lock +1373 -185
  42. package/lib/stac-api/runtime/requirements.txt +0 -2
  43. package/lib/stac-api/runtime/src/handler.py +0 -54
  44. package/lib/tipg-api/runtime/requirements.txt +0 -1
  45. package/lib/tipg-api/runtime/src/handler.py +0 -51
  46. package/lib/titiler-pgstac-api/runtime/dev_requirements.txt +0 -2
  47. package/lib/titiler-pgstac-api/runtime/requirements.txt +0 -4
  48. package/lib/titiler-pgstac-api/runtime/src/handler.py +0 -35
  49. /package/lib/stac-api/runtime/src/{__init__.py → stac_api/__init__.py} +0 -0
  50. /package/lib/stac-auth-proxy/runtime/src/{__init__.py → stac_auth_proxy_api/__init__.py} +0 -0
  51. /package/lib/stac-auth-proxy/runtime/src/{handler.py → stac_auth_proxy_api/handler.py} +0 -0
  52. /package/lib/tipg-api/runtime/src/{__init__.py → tipg_api/__init__.py} +0 -0
  53. /package/lib/titiler-pgstac-api/runtime/src/{__init__.py → titiler_pgstac_api/__init__.py} +0 -0
@@ -181,5 +181,5 @@ class StacIngestor extends constructs_1.Construct {
181
181
  }
182
182
  exports.StacIngestor = StacIngestor;
183
183
  _a = JSII_RTTI_SYMBOL_1;
184
- StacIngestor[_a] = { fqn: "eoapi-cdk.StacIngestor", version: "10.2.5" };
184
+ StacIngestor[_a] = { fqn: "eoapi-cdk.StacIngestor", version: "10.4.0" };
185
185
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQWFxQjtBQUNyQiwyQ0FBdUM7QUFDdkMsb0NBSWtCO0FBRWxCLE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBSXpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUvQixNQUFNLEdBQUcsR0FBMkI7WUFDbEMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztZQUNwQyxTQUFTLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQzVCLHdCQUF3QixFQUFFLEdBQUc7WUFDN0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3ZCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTztZQUM5QyxHQUFHLEtBQUssQ0FBQyxNQUFNO1NBQ2hCLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkscUJBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3RELFdBQVcsRUFDVCxtSUFBbUk7WUFDckksU0FBUyxFQUFFLElBQUkscUJBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUMzRCxlQUFlLEVBQUU7Z0JBQ2YscUJBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQ3hDLDBDQUEwQyxDQUMzQztnQkFDRCxxQkFBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FDeEMsOENBQThDLENBQy9DO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNq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O2dCQUN6QyxDQUFDLENBQUM7b0JBQ0UsVUFBVSxFQUFFLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVO29CQUN0RCxXQUFXLEVBQUUsS0FBSyxDQUFDLHlCQUF5QixDQUFDLFdBQVc7aUJBQ3pEO2dCQUNILENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQixDQUFDLEtBSTVCO1FBQ0MsTUFBTSxrQkFBa0IsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEQsT0FBTyxJQUFJLHFCQUFHLENBQUMsZUFBZSxDQUM1QixJQUFJLEVBQ0osR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLFlBQVksRUFDM0M7WUFDRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsYUFBYSxFQUFFLElBQUksa0JBQWtCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNyRCxXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUs7U0FDekIsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7QUFqUUgsb0NBa1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXdzX2FwaWdhdGV3YXkgYXMgYXBpZ2F0ZXdheSxcbiAgYXdzX2xvZ3MsXG4gIER1cmF0aW9uLFxuICBhd3NfZHluYW1vZGIgYXMgZHluYW1vZGIsXG4gIGF3c19lYzIgYXMgZWMyLFxuICBhd3NfbGFtYmRhX2V2ZW50X3NvdXJjZXMgYXMgZXZlbnRzLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIFJlbW92YWxQb2xpY3ksXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzZWNyZXRzbWFuYWdlcixcbiAgYXdzX3NzbSBhcyBzc20sXG4gIFN0YWNrLFxufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzLFxuICBERUZBVUxUX1BHU1RBQ19WRVJTSU9OLFxuICByZXNvbHZlTGFtYmRhQ29kZSxcbn0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBTdGFjSW5nZXN0b3IgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICB0YWJsZTogZHluYW1vZGIuVGFibGU7XG4gIHB1YmxpYyBoYW5kbGVyUm9sZTogaWFtLlJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YWNJbmdlc3RvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudGFibGUgPSB0aGlzLmJ1aWxkVGFibGUoKTtcblxuICAgIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIERZTkFNT0RCX1RBQkxFOiB0aGlzLnRhYmxlLnRhYmxlTmFtZSxcbiAgICAgIFJPT1RfUEFUSDogYC8ke3Byb3BzLnN0YWdlfWAsXG4gICAgICBOT19QWURBTlRJQ19TU01fU0VUVElOR1M6IFwiMVwiLFxuICAgICAgU1RBQ19VUkw6IHByb3BzLnN0YWNVcmwsXG4gICAgICBEQVRBX0FDQ0VTU19ST0xFOiBwcm9wcy5kYXRhQWNjZXNzUm9sZS5yb2xlQXJuLFxuICAgICAgLi4ucHJvcHMuYXBpRW52LFxuICAgIH07XG5cbiAgICB0aGlzLmhhbmRsZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiZXhlY3V0aW9uLXJvbGVcIiwge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUm9sZSB1c2VkIGJ5IFNUQUMgSW5nZXN0b3IuIE1hbnVhbGx5IGRlZmluZWQgc28gdGhhdCB3ZSBjYW4gY2hvb3NlIGEgbmFtZSB0aGF0IGlzIHN1cHBvcnRlZCBieSB0aGUgZGF0YSBhY2Nlc3Mgcm9sZXMgdHJ1c3QgcG9saWN5XCIsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImxhbWJkYS5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICBcInNlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGVcIlxuICAgICAgICApLFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgXCJzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhVlBDQWNjZXNzRXhlY3V0aW9uUm9sZVwiXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuYnVpbGRBcGlMYW1iZGEoe1xuICAgICAgdGFibGU6IHRoaXMudGFibGUsXG4gICAgICBlbnYsXG4gICAgICBkYXRhQWNjZXNzUm9sZTogcHJvcHMuZGF0YUFjY2Vzc1JvbGUsXG4gICAgICBzdGFnZTogcHJvcHMuc3RhZ2UsXG4gICAgICBkYlNlY3JldDogcHJvcHMuc3RhY0RiU2VjcmV0LFxuICAgICAgZGJWcGM6IHByb3BzLnZwYyxcbiAgICAgIGRiU2VjdXJpdHlHcm91cDogcHJvcHMuc3RhY0RiU2VjdXJpdHlHcm91cCxcbiAgICAgIHN1Ym5ldFNlbGVjdGlvbjogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgbGFtYmRhRnVuY3Rpb25PcHRpb25zOiBwcm9wcy5hcGlMYW1iZGFGdW5jdGlvbk9wdGlvbnMsXG4gICAgICBwZ3N0YWNWZXJzaW9uOiBwcm9wcy5wZ3N0YWNWZXJzaW9uLFxuICAgIH0pO1xuXG4gICAgdGhpcy5idWlsZEFwaUVuZHBvaW50KHtcbiAgICAgIGhhbmRsZXIsXG4gICAgICBzdGFnZTogcHJvcHMuc3RhZ2UsXG4gICAgICBlbmRwb2ludENvbmZpZ3VyYXRpb246IHByb3BzLmFwaUVuZHBvaW50Q29uZmlndXJhdGlvbixcbiAgICAgIHBvbGljeTogcHJvcHMuYXBpUG9saWN5LFxuICAgICAgaW5nZXN0b3JEb21haW5OYW1lT3B0aW9uczogcHJvcHMuaW5nZXN0b3JEb21haW5OYW1lT3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuYnVpbGRJbmdlc3Rvcih7XG4gICAgICB0YWJsZTogdGhpcy50YWJsZSxcbiAgICAgIGVudjogZW52LFxuICAgICAgZGJTZWNyZXQ6IHByb3BzLnN0YWNEYlNlY3JldCxcbiAgICAgIGRiVnBjOiBwcm9wcy52cGMsXG4gICAgICBkYlNlY3VyaXR5R3JvdXA6IHByb3BzLnN0YWNEYlNlY3VyaXR5R3JvdXAsXG4gICAgICBzdWJuZXRTZWxlY3Rpb246IHByb3BzLnN1Ym5ldFNlbGVjdGlvbixcbiAgICAgIGxhbWJkYUZ1bmN0aW9uT3B0aW9uczogcHJvcHMuaW5nZXN0b3JMYW1iZGFGdW5jdGlvbk9wdGlvbnMsXG4gICAgICBwZ3N0YWNWZXJzaW9uOiBwcm9wcy5wZ3N0YWNWZXJzaW9uLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlclNzbVBhcmFtZXRlcih7XG4gICAgICBuYW1lOiBcImR5bmFtb2RiX3RhYmxlXCIsXG4gICAgICB2YWx1ZTogdGhpcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogXCJOYW1lIG9mIHRhYmxlIHVzZWQgdG8gc3RvcmUgaW5nZXN0aW9uc1wiLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRhYmxlKCk6IGR5bmFtb2RiLlRhYmxlIHtcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBkeW5hbW9kYi5UYWJsZSh0aGlzLCBcImluZ2VzdGlvbnMtdGFibGVcIiwge1xuICAgICAgcGFydGl0aW9uS2V5OiB7IG5hbWU6IFwiY3JlYXRlZF9ieVwiLCB0eXBlOiBkeW5hbW9kYi5BdHRyaWJ1dGVUeXBlLlNUUklORyB9LFxuICAgICAgc29ydEtleTogeyBuYW1lOiBcImlkXCIsIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HIH0sXG4gICAgICBiaWxsaW5nTW9kZTogZHluYW1vZGIuQmlsbGluZ01vZGUuUEFZX1BFUl9SRVFVRVNULFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgc3RyZWFtOiBkeW5hbW9kYi5TdHJlYW1WaWV3VHlwZS5ORVdfSU1BR0UsXG4gICAgfSk7XG5cbiAgICB0YWJsZS5hZGRHbG9iYWxTZWNvbmRhcnlJbmRleCh7XG4gICAgICBpbmRleE5hbWU6IFwic3RhdHVzXCIsXG4gICAgICBwYXJ0aXRpb25LZXk6IHsgbmFtZTogXCJzdGF0dXNcIiwgdHlwZTogZHluYW1vZGIuQXR0cmlidXRlVHlwZS5TVFJJTkcgfSxcbiAgICAgIHNvcnRLZXk6IHsgbmFtZTogXCJjcmVhdGVkX2F0XCIsIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGFibGU7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQXBpTGFtYmRhKHByb3BzOiB7XG4gICAgdGFibGU6IGR5bmFtb2RiLklUYWJsZTtcbiAgICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgZGF0YUFjY2Vzc1JvbGU6IGlhbS5JUm9sZTtcbiAgICBzdGFnZTogc3RyaW5nO1xuICAgIGRiU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuICAgIGRiVnBjOiB1bmRlZmluZWQgfCBlYzIuSVZwYztcbiAgICBkYlNlY3VyaXR5R3JvdXA6IGVjMi5JU2VjdXJpdHlHcm91cDtcbiAgICBzdWJuZXRTZWxlY3Rpb246IHVuZGVmaW5lZCB8IGVjMi5TdWJuZXRTZWxlY3Rpb247XG4gICAgbGFtYmRhRnVuY3Rpb25PcHRpb25zPzogQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcztcbiAgICBwZ3N0YWNWZXJzaW9uPzogc3RyaW5nO1xuICB9KTogbGFtYmRhLkZ1bmN0aW9uIHtcbiAgICBjb25zdCB7IGNvZGU6IHVzZXJDb2RlLCAuLi5vdGhlckxhbWJkYU9wdGlvbnMgfSA9XG4gICAgICBwcm9wcy5sYW1iZGFGdW5jdGlvbk9wdGlvbnMgfHwge307XG5cbiAgICBjb25zdCBoYW5kbGVyID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcImFwaS1oYW5kbGVyXCIsIHtcbiAgICAgIC8vIGRlZmF1bHRzXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMixcbiAgICAgIGhhbmRsZXI6IFwic3JjLmhhbmRsZXIuaGFuZGxlclwiLFxuICAgICAgbWVtb3J5U2l6ZTogMjA0OCxcbiAgICAgIGxvZ1JldGVudGlvbjogYXdzX2xvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgY29kZTogcmVzb2x2ZUxhbWJkYUNvZGUodXNlckNvZGUsIF9fZGlybmFtZSwge1xuICAgICAgICBmaWxlOiBcInJ1bnRpbWUvRG9ja2VyZmlsZVwiLFxuICAgICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgICBQWVRIT05fVkVSU0lPTjogXCIzLjEyXCIsXG4gICAgICAgICAgUEdTVEFDX1ZFUlNJT046IHByb3BzLnBnc3RhY1ZlcnNpb24gfHwgREVGQVVMVF9QR1NUQUNfVkVSU0lPTixcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgYWxsb3dQdWJsaWNTdWJuZXQ6IHRydWUsXG4gICAgICB2cGM6IHByb3BzLmRiVnBjLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHsgREJfU0VDUkVUX0FSTjogcHJvcHMuZGJTZWNyZXQuc2VjcmV0QXJuLCAuLi5wcm9wcy5lbnYgfSxcbiAgICAgIHJvbGU6IHRoaXMuaGFuZGxlclJvbGUsXG4gICAgICAvLyBvdmVyd3JpdGVzIGRlZmF1bHRzIHdpdGggdXNlci1wcm92aWRlZCBjb25maWd1cmFibGUgcHJvcGVydGllc1xuICAgICAgLi4ub3RoZXJMYW1iZGFPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgaGFuZGxlciB0byByZWFkIERCIHNlY3JldFxuICAgIHByb3BzLmRiU2VjcmV0LmdyYW50UmVhZChoYW5kbGVyKTtcblxuICAgIC8vIEFsbG93IGhhbmRsZXIgdG8gY29ubmVjdCB0byBEQlxuXG4gICAgaWYgKHByb3BzLmRiVnBjKSB7XG4gICAgICBwcm9wcy5kYlNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICAgIGhhbmRsZXIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0sXG4gICAgICAgIGVjMi5Qb3J0LnRjcCg1NDMyKSxcbiAgICAgICAgXCJBbGxvdyBjb25uZWN0aW9ucyBmcm9tIFNUQUMgSW5nZXN0b3JcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm9wcy50YWJsZS5ncmFudFJlYWRXcml0ZURhdGEoaGFuZGxlcik7XG5cbiAgICByZXR1cm4gaGFuZGxlcjtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbmdlc3Rvcihwcm9wczoge1xuICAgIHRhYmxlOiBkeW5hbW9kYi5JVGFibGU7XG4gICAgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGRiU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuICAgIGRiVnBjOiB1bmRlZmluZWQgfCBlYzIuSVZwYztcbiAgICBkYlNlY3VyaXR5R3JvdXA6IGVjMi5JU2VjdXJpdHlHcm91cDtcbiAgICBzdWJuZXRTZWxlY3Rpb246IHVuZGVmaW5lZCB8IGVjMi5TdWJuZXRTZWxlY3Rpb247XG4gICAgbGFtYmRhRnVuY3Rpb25PcHRpb25zPzogQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcztcbiAgICBwZ3N0YWNWZXJzaW9uPzogc3RyaW5nO1xuICB9KTogbGFtYmRhLkZ1bmN0aW9uIHtcbiAgICBjb25zdCB7IGNvZGU6IHVzZXJDb2RlLCAuLi5vdGhlckxhbWJkYU9wdGlvbnMgfSA9XG4gICAgICBwcm9wcy5sYW1iZGFGdW5jdGlvbk9wdGlvbnMgfHwge307XG4gICAgY29uc3QgaGFuZGxlciA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJzdGFjLWluZ2VzdG9yXCIsIHtcbiAgICAgIC8vIGRlZmF1bHRzXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMixcbiAgICAgIGhhbmRsZXI6IFwic3JjLmluZ2VzdG9yLmhhbmRsZXJcIixcbiAgICAgIG1lbW9yeVNpemU6IDIwNDgsXG4gICAgICBsb2dSZXRlbnRpb246IGF3c19sb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDE4MCksXG4gICAgICBjb2RlOiByZXNvbHZlTGFtYmRhQ29kZSh1c2VyQ29kZSwgX19kaXJuYW1lLCB7XG4gICAgICAgIGZpbGU6IFwicnVudGltZS9Eb2NrZXJmaWxlXCIsXG4gICAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICAgIFBZVEhPTl9WRVJTSU9OOiBcIjMuMTJcIixcbiAgICAgICAgICBQR1NUQUNfVkVSU0lPTjogcHJvcHMucGdzdGFjVmVyc2lvbiB8fCBERUZBVUxUX1BHU1RBQ19WRVJTSU9OLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICB2cGM6IHByb3BzLmRiVnBjLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgYWxsb3dQdWJsaWNTdWJuZXQ6IHRydWUsXG4gICAgICBlbnZpcm9ubWVudDogeyBEQl9TRUNSRVRfQVJOOiBwcm9wcy5kYlNlY3JldC5zZWNyZXRBcm4sIC4uLnByb3BzLmVudiB9LFxuICAgICAgcm9sZTogdGhpcy5oYW5kbGVyUm9sZSxcbiAgICAgIC8vIG92ZXJ3cml0ZXMgZGVmYXVsdHMgd2l0aCB1c2VyLXByb3ZpZGVkIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzXG4gICAgICAuLi5vdGhlckxhbWJkYU9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBBbGxvdyBoYW5kbGVyIHRvIHJlYWQgREIgc2VjcmV0XG4gICAgcHJvcHMuZGJTZWNyZXQuZ3JhbnRSZWFkKGhhbmRsZXIpO1xuXG4gICAgLy8gQWxsb3cgaGFuZGxlciB0byBjb25uZWN0IHRvIERCXG4gICAgaWYgKHByb3BzLmRiVnBjKSB7XG4gICAgICBwcm9wcy5kYlNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICAgIGhhbmRsZXIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0sXG4gICAgICAgIGVjMi5Qb3J0LnRjcCg1NDMyKSxcbiAgICAgICAgXCJBbGxvdyBjb25uZWN0aW9ucyBmcm9tIFNUQUMgSW5nZXN0b3JcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBoYW5kbGVyIHRvIHdyaXRlIHJlc3VsdHMgYmFjayB0byBEQlxuICAgIHByb3BzLnRhYmxlLmdyYW50V3JpdGVEYXRhKGhhbmRsZXIpO1xuXG4gICAgLy8gVHJpZ2dlciBoYW5kbGVyIGZyb20gd3JpdGVzIHRvIER5bmFtb0RCIHRhYmxlXG4gICAgaGFuZGxlci5hZGRFdmVudFNvdXJjZShcbiAgICAgIG5ldyBldmVudHMuRHluYW1vRXZlbnRTb3VyY2UocHJvcHMudGFibGUsIHtcbiAgICAgICAgLy8gUmVhZCB3aGVuIGJhdGNoZXMgcmVhY2ggc2l6ZS4uLlxuICAgICAgICBiYXRjaFNpemU6IDEwMDAsXG4gICAgICAgIC8vIC4uLiBvciB3aGVuIHdpbmRvdyBpcyByZWFjaGVkLlxuICAgICAgICBtYXhCYXRjaGluZ1dpbmRvdzogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgICAgIC8vIFJlYWQgb2xkZXN0IGRhdGEgZmlyc3QuXG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb246IGxhbWJkYS5TdGFydGluZ1Bvc2l0aW9uLlRSSU1fSE9SSVpPTixcbiAgICAgICAgcmV0cnlBdHRlbXB0czogMSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBoYW5kbGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEFwaUVuZHBvaW50KHByb3BzOiB7XG4gICAgaGFuZGxlcjogbGFtYmRhLklGdW5jdGlvbjtcbiAgICBzdGFnZTogc3RyaW5nO1xuICAgIHBvbGljeT86IGlhbS5Qb2xpY3lEb2N1bWVudDtcbiAgICBlbmRwb2ludENvbmZpZ3VyYXRpb24/OiBhcGlnYXRld2F5LkVuZHBvaW50Q29uZmlndXJhdGlvbjtcbiAgICBpbmdlc3RvckRvbWFpbk5hbWVPcHRpb25zPzogYXBpZ2F0ZXdheS5Eb21haW5OYW1lT3B0aW9ucztcbiAgfSk6IGFwaWdhdGV3YXkuTGFtYmRhUmVzdEFwaSB7XG4gICAgcmV0dXJuIG5ldyBhcGlnYXRld2F5LkxhbWJkYVJlc3RBcGkoXG4gICAgICB0aGlzLFxuICAgICAgYCR7U3RhY2sub2YodGhpcykuc3RhY2tOYW1lfS1pbmdlc3Rvci1hcGlgLFxuICAgICAge1xuICAgICAgICBoYW5kbGVyOiBwcm9wcy5oYW5kbGVyLFxuICAgICAgICBwcm94eTogdHJ1ZSxcblxuICAgICAgICBjbG91ZFdhdGNoUm9sZTogdHJ1ZSxcbiAgICAgICAgZGVwbG95T3B0aW9uczogeyBzdGFnZU5hbWU6IHByb3BzLnN0YWdlIH0sXG4gICAgICAgIGVuZHBvaW50RXhwb3J0TmFtZTogYCR7U3RhY2sub2YodGhpcyl9LWluZ2VzdG9yLWFwaWAsXG5cbiAgICAgICAgZW5kcG9pbnRDb25maWd1cmF0aW9uOiBwcm9wcy5lbmRwb2ludENvbmZpZ3VyYXRpb24sXG4gICAgICAgIHBvbGljeTogcHJvcHMucG9saWN5LFxuXG4gICAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmluZ2VzdG9yRG9tYWluTmFtZU9wdGlvbnNcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgZG9tYWluTmFtZTogcHJvcHMuaW5nZXN0b3JEb21haW5OYW1lT3B0aW9ucy5kb21haW5OYW1lLFxuICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZTogcHJvcHMuaW5nZXN0b3JEb21haW5OYW1lT3B0aW9ucy5jZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNzbVBhcmFtZXRlcihwcm9wczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIH0pOiBzc20uSVN0cmluZ1BhcmFtZXRlciB7XG4gICAgY29uc3QgcGFyYW1ldGVyTmFtZXNwYWNlID0gU3RhY2sub2YodGhpcykuc3RhY2tOYW1lO1xuICAgIHJldHVybiBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5uYW1lLnJlcGxhY2UoXCJfXCIsIFwiLVwiKX0tcGFyYW1ldGVyYCxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgICBwYXJhbWV0ZXJOYW1lOiBgLyR7cGFyYW1ldGVyTmFtZXNwYWNlfS8ke3Byb3BzLm5hbWV9YCxcbiAgICAgICAgc3RyaW5nVmFsdWU6IHByb3BzLnZhbHVlLFxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFjSW5nZXN0b3JQcm9wcyB7XG4gIC8qKlxuICAgKiBBUk4gb2YgQVdTIFJvbGUgdXNlZCB0byB2YWxpZGF0ZSBhY2Nlc3MgdG8gUzMgZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YUFjY2Vzc1JvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVVJMIG9mIFNUQUMgQVBJXG4gICAqL1xuICByZWFkb25seSBzdGFjVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN0YWdlIG9mIGRlcGxveW1lbnQgKGUuZy4gYGRldmAsIGBwcm9kYClcbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY3JldCBjb250YWluaW5nIHBnU1RBQyBEQiBjb25uZWN0aW9uIGluZm9ybWF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFjRGJTZWNyZXQ6IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFZQQyBydW5uaW5nIHBnU1RBQyBEQlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IEdyb3VwIHVzZWQgYnkgcGdTVEFDIERCXG4gICAqL1xuICByZWFkb25seSBzdGFjRGJTZWN1cml0eUdyb3VwOiBlYzIuSVNlY3VyaXR5R3JvdXA7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBpbnRvIHdoaWNoIHRoZSBsYW1iZGEgc2hvdWxkIGJlIGRlcGxveWVkIGlmIHVzaW5nIGEgVlBDXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRTZWxlY3Rpb24/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gYmUgc2VudCB0byBMYW1iZGEuXG4gICAqL1xuICByZWFkb25seSBhcGlFbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBUEkgRW5kcG9pbnQgQ29uZmlndXJhdGlvbiwgdXNlZnVsIGZvciBjcmVhdGluZyBwcml2YXRlIEFQSXMuXG4gICAqL1xuICByZWFkb25seSBhcGlFbmRwb2ludENvbmZpZ3VyYXRpb24/OiBhcGlnYXRld2F5LkVuZHBvaW50Q29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQVBJIFBvbGljeSBEb2N1bWVudCwgdXNlZnVsIGZvciBjcmVhdGluZyBwcml2YXRlIEFQSXMuXG4gICAqL1xuICByZWFkb25seSBhcGlQb2xpY3k/OiBpYW0uUG9saWN5RG9jdW1lbnQ7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBEb21haW4gTmFtZSBPcHRpb25zIGZvciBJbmdlc3RvciBBUElcbiAgICovXG4gIHJlYWRvbmx5IGluZ2VzdG9yRG9tYWluTmFtZU9wdGlvbnM/OiBhcGlnYXRld2F5LkRvbWFpbk5hbWVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBsYW1iZGEgZnVuY3Rpb24gcHJvcGVydGllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IHNldHRpbmdzIGFyZSBkZWZpbmVkIGluIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBhcGlMYW1iZGFGdW5jdGlvbk9wdGlvbnM/OiBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBsYW1iZGEgZnVuY3Rpb24gcHJvcGVydGllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IHNldHRpbmdzIGFyZSBkZWZpbmVkIGluIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBpbmdlc3RvckxhbWJkYUZ1bmN0aW9uT3B0aW9ucz86IEN1c3RvbUxhbWJkYUZ1bmN0aW9uUHJvcHM7XG5cbiAgLyoqXG4gICAqIHBnc3RhYyB2ZXJzaW9uIC0gbXVzdCBtYXRjaCB0aGUgdmVyc2lvbiBpbnN0YWxsZWQgb24gdGhlIHBnc3RhYyBkYXRhYmFzZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGRlZmluZWQgaW4gdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgcGdzdGFjVmVyc2lvbj86IHN0cmluZztcbn1cbiJdfQ==
@@ -4,7 +4,7 @@ export interface LambdaApiGatewayProps {
4
4
  /**
5
5
  * Lambda function to integrate with the API Gateway.
6
6
  */
7
- readonly lambdaFunction: lambda.Function;
7
+ readonly lambdaFunction: lambda.Function | lambda.Version;
8
8
  /**
9
9
  * Custom Domain Name for the API. If defined, will create the
10
10
  * domain name and integrate it with the API.
@@ -24,5 +24,5 @@ class LambdaApiGateway extends constructs_1.Construct {
24
24
  }
25
25
  exports.LambdaApiGateway = LambdaApiGateway;
26
26
  _a = JSII_RTTI_SYMBOL_1;
27
- LambdaApiGateway[_a] = { fqn: "eoapi-cdk.LambdaApiGateway", version: "10.2.5" };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUtxQjtBQUNyQiwyQ0FBdUM7QUFzQnZDLE1BQWEsZ0JBQWlCLFNBQVEsc0JBQVM7SUFHN0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFDSixPQUFPLEdBQUcsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxFQUFFLEVBQzdDLFVBQVUsRUFDVixjQUFjLEdBQ2YsR0FBRyxLQUFLLENBQUM7UUFFVixNQUFNLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXJFLE1BQU0sa0JBQWtCLEdBQ3RCLElBQUksMkNBQXlCLENBQUMscUJBQXFCLENBQ2pELGFBQWEsRUFDYixjQUFjLEVBQ2QsVUFBVTtZQUNSLENBQUMsQ0FBQztnQkFDRSxnQkFBZ0IsRUFDZCxJQUFJLDhCQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQ2pELE1BQU0sRUFDTiw4QkFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUNsRDthQUNKO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FDZCxDQUFDO1FBRUosSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLDhCQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDL0MsT0FBTztZQUNQLG9CQUFvQjtZQUNwQixrQkFBa0IsRUFBRSxrQkFBa0I7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFsQ0gsNENBbUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19hcGlnYXRld2F5djIgYXMgYXBpZ2F0ZXdheXYyLFxuICBhd3NfYXBpZ2F0ZXdheXYyX2ludGVncmF0aW9ucyBhcyBhcGlnYXRld2F5djJfaW50ZWdyYXRpb25zLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUFwaUdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBMYW1iZGEgZnVuY3Rpb24gdG8gaW50ZWdyYXRlIHdpdGggdGhlIEFQSSBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IGxhbWJkYS5GdW5jdGlvbjtcblxuICAvKipcbiAgICogQ3VzdG9tIERvbWFpbiBOYW1lIGZvciB0aGUgQVBJLiBJZiBkZWZpbmVkLCB3aWxsIGNyZWF0ZSB0aGVcbiAgICogZG9tYWluIG5hbWUgYW5kIGludGVncmF0ZSBpdCB3aXRoIHRoZSBBUEkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lPzogYXBpZ2F0ZXdheXYyLklEb21haW5OYW1lO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBBUEkgR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IGFwaU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBMYW1iZGFBcGlHYXRld2F5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgYXBpOiBhcGlnYXRld2F5djIuSHR0cEFwaTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGFtYmRhQXBpR2F0ZXdheVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGFwaU5hbWUgPSBgJHtTdGFjay5vZih0aGlzKS5zdGFja05hbWV9LSR7aWR9YCxcbiAgICAgIGRvbWFpbk5hbWUsXG4gICAgICBsYW1iZGFGdW5jdGlvbixcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBkZWZhdWx0RG9tYWluTWFwcGluZyA9IGRvbWFpbk5hbWUgPyB7IGRvbWFpbk5hbWUgfSA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRlZmF1bHRJbnRlZ3JhdGlvbiA9XG4gICAgICBuZXcgYXBpZ2F0ZXdheXYyX2ludGVncmF0aW9ucy5IdHRwTGFtYmRhSW50ZWdyYXRpb24oXG4gICAgICAgIFwiaW50ZWdyYXRpb25cIixcbiAgICAgICAgbGFtYmRhRnVuY3Rpb24sXG4gICAgICAgIGRvbWFpbk5hbWVcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgcGFyYW1ldGVyTWFwcGluZzpcbiAgICAgICAgICAgICAgICBuZXcgYXBpZ2F0ZXdheXYyLlBhcmFtZXRlck1hcHBpbmcoKS5vdmVyd3JpdGVIZWFkZXIoXG4gICAgICAgICAgICAgICAgICBcImhvc3RcIixcbiAgICAgICAgICAgICAgICAgIGFwaWdhdGV3YXl2Mi5NYXBwaW5nVmFsdWUuY3VzdG9tKGRvbWFpbk5hbWUubmFtZSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICApO1xuXG4gICAgdGhpcy5hcGkgPSBuZXcgYXBpZ2F0ZXdheXYyLkh0dHBBcGkodGhpcywgXCJhcGlcIiwge1xuICAgICAgYXBpTmFtZSxcbiAgICAgIGRlZmF1bHREb21haW5NYXBwaW5nLFxuICAgICAgZGVmYXVsdEludGVncmF0aW9uOiBkZWZhdWx0SW50ZWdyYXRpb24sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
27
+ LambdaApiGateway[_a] = { fqn: "eoapi-cdk.LambdaApiGateway", version: "10.4.0" };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUtxQjtBQUNyQiwyQ0FBdUM7QUFzQnZDLE1BQWEsZ0JBQWlCLFNBQVEsc0JBQVM7SUFHN0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFDSixPQUFPLEdBQUcsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxFQUFFLEVBQzdDLFVBQVUsRUFDVixjQUFjLEdBQ2YsR0FBRyxLQUFLLENBQUM7UUFFVixNQUFNLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXJFLE1BQU0sa0JBQWtCLEdBQ3RCLElBQUksMkNBQXlCLENBQUMscUJBQXFCLENBQ2pELGFBQWEsRUFDYixjQUFjLEVBQ2QsVUFBVTtZQUNSLENBQUMsQ0FBQztnQkFDRSxnQkFBZ0IsRUFDZCxJQUFJLDhCQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQ2pELE1BQU0sRUFDTiw4QkFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUNsRDthQUNKO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FDZCxDQUFDO1FBRUosSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLDhCQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDL0MsT0FBTztZQUNQLG9CQUFvQjtZQUNwQixrQkFBa0IsRUFBRSxrQkFBa0I7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFsQ0gsNENBbUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19hcGlnYXRld2F5djIgYXMgYXBpZ2F0ZXdheXYyLFxuICBhd3NfYXBpZ2F0ZXdheXYyX2ludGVncmF0aW9ucyBhcyBhcGlnYXRld2F5djJfaW50ZWdyYXRpb25zLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUFwaUdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBMYW1iZGEgZnVuY3Rpb24gdG8gaW50ZWdyYXRlIHdpdGggdGhlIEFQSSBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IGxhbWJkYS5GdW5jdGlvbiB8IGxhbWJkYS5WZXJzaW9uO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gRG9tYWluIE5hbWUgZm9yIHRoZSBBUEkuIElmIGRlZmluZWQsIHdpbGwgY3JlYXRlIHRoZVxuICAgKiBkb21haW4gbmFtZSBhbmQgaW50ZWdyYXRlIGl0IHdpdGggdGhlIEFQSS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU/OiBhcGlnYXRld2F5djIuSURvbWFpbk5hbWU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEFQSSBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIExhbWJkYUFwaUdhdGV3YXkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICByZWFkb25seSBhcGk6IGFwaWdhdGV3YXl2Mi5IdHRwQXBpO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMYW1iZGFBcGlHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3Qge1xuICAgICAgYXBpTmFtZSA9IGAke1N0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0tJHtpZH1gLFxuICAgICAgZG9tYWluTmFtZSxcbiAgICAgIGxhbWJkYUZ1bmN0aW9uLFxuICAgIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IGRlZmF1bHREb21haW5NYXBwaW5nID0gZG9tYWluTmFtZSA/IHsgZG9tYWluTmFtZSB9IDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZGVmYXVsdEludGVncmF0aW9uID1cbiAgICAgIG5ldyBhcGlnYXRld2F5djJfaW50ZWdyYXRpb25zLkh0dHBMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgICAgXCJpbnRlZ3JhdGlvblwiLFxuICAgICAgICBsYW1iZGFGdW5jdGlvbixcbiAgICAgICAgZG9tYWluTmFtZVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBwYXJhbWV0ZXJNYXBwaW5nOlxuICAgICAgICAgICAgICAgIG5ldyBhcGlnYXRld2F5djIuUGFyYW1ldGVyTWFwcGluZygpLm92ZXJ3cml0ZUhlYWRlcihcbiAgICAgICAgICAgICAgICAgIFwiaG9zdFwiLFxuICAgICAgICAgICAgICAgICAgYXBpZ2F0ZXdheXYyLk1hcHBpbmdWYWx1ZS5jdXN0b20oZG9tYWluTmFtZS5uYW1lKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICk7XG5cbiAgICB0aGlzLmFwaSA9IG5ldyBhcGlnYXRld2F5djIuSHR0cEFwaSh0aGlzLCBcImFwaVwiLCB7XG4gICAgICBhcGlOYW1lLFxuICAgICAgZGVmYXVsdERvbWFpbk1hcHBpbmcsXG4gICAgICBkZWZhdWx0SW50ZWdyYXRpb246IGRlZmF1bHRJbnRlZ3JhdGlvbixcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -52,5 +52,5 @@ class PrivateLambdaApiGateway extends constructs_1.Construct {
52
52
  }
53
53
  exports.PrivateLambdaApiGateway = PrivateLambdaApiGateway;
54
54
  _a = JSII_RTTI_SYMBOL_1;
55
- PrivateLambdaApiGateway[_a] = { fqn: "eoapi-cdk.PrivateLambdaApiGateway", version: "10.2.5" };
55
+ PrivateLambdaApiGateway[_a] = { fqn: "eoapi-cdk.PrivateLambdaApiGateway", version: "10.4.0" };
56
56
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUtxQjtBQUNyQiwyQ0FBdUM7QUEwRHZDLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFJcEQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQ0osV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEVBQ2QsR0FBRyxFQUNILDBCQUEwQixFQUMxQixpQkFBaUIsR0FBRyxJQUFJLEVBQ3hCLGFBQWEsRUFDYixNQUFNLEVBQ04sd0JBQXdCLEdBQ3pCLEdBQUcsS0FBSyxDQUFDO1FBRVYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLHNDQUFzQztZQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkscUJBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO2dCQUNwRSxHQUFHO2dCQUNILE9BQU8sRUFBRSxxQkFBRyxDQUFDLDhCQUE4QixDQUFDLFVBQVU7Z0JBQ3RELE9BQU8sRUFBRSwwQkFBMEI7YUFDcEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSw0QkFBVSxDQUFDLGlCQUFpQixDQUN6RCxjQUFjLEVBQ2Qsd0JBQXdCLENBQ3pCLENBQUM7UUFFRixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLDRCQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDbEQsV0FBVyxFQUFFLFdBQVcsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxjQUFjO1lBQzFELFdBQVcsRUFBRSxXQUFXLElBQUksMEJBQTBCO1lBQ3RELGFBQWEsRUFBRSxDQUFDLDRCQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNoRCxNQUFNLEVBQ0osTUFBTTtnQkFDTixJQUFJLHFCQUFHLENBQUMsY0FBYyxDQUFDO29CQUNyQixVQUFVLEVBQUU7d0JBQ1YsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQzs0QkFDdEIsTUFBTSxFQUFFLHFCQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7NEJBQ3hCLFVBQVUsRUFBRSxDQUFDLElBQUkscUJBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7NEJBQy9CLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDOzRCQUM3QixVQUFVLEVBQUU7Z0NBQ1YsWUFBWSxFQUFFLEVBQUUsZUFBZSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUU7NkJBQzdDO3lCQUNGLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQztZQUNKLGFBQWEsRUFBRSxhQUFhLElBQUk7Z0JBQzlCLFlBQVksRUFBRSw0QkFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUk7Z0JBQ2hELGdCQUFnQixFQUFFLElBQUk7YUFDdkI7WUFDRCxrQkFBa0I7WUFDbEIsb0JBQW9CLEVBQUU7Z0JBQ3BCLGlCQUFpQixFQUFFLDRCQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSTthQUNyRDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7O0FBckVILDBEQXNFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19hcGlnYXRld2F5IGFzIGFwaWdhdGV3YXksXG4gIGF3c19lYzIgYXMgZWMyLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG59IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlTGFtYmRhQXBpR2F0ZXdheVByb3BzIHtcbiAgLyoqXG4gICAqIExhbWJkYSBmdW5jdGlvbiB0byBpbnRlZ3JhdGUgd2l0aCB0aGUgQVBJIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFGdW5jdGlvbjogbGFtYmRhLklGdW5jdGlvbjtcblxuICAvKipcbiAgICogTGFtYmRhIGludGVncmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBBUEkgR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUludGVncmF0aW9uT3B0aW9ucz86IGFwaWdhdGV3YXkuTGFtYmRhSW50ZWdyYXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBWUEMgdG8gY3JlYXRlIHRoZSBBUEkgR2F0ZXdheSBpbi5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY3JlYXRlIGEgVlBDIGVuZHBvaW50IGZvciB0aGUgQVBJIEdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlVnBjRW5kcG9pbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0cyBpbiB3aGljaCB0byBjcmVhdGUgYSBWUEMgZW5kcG9pbnQgbmV0d29yayBpbnRlcmZhY2UuIEF0IG1vc3Qgb25lIHBlciBhdmFpbGFiaWxpdHkgem9uZS5cblxuICAgKi9cbiAgcmVhZG9ubHkgdnBjRW5kcG9pbnRTdWJuZXRTZWxlY3Rpb24/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBOYW1lIGZvciB0aGUgQVBJIEdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYCR7c2NvcGUubm9kZS5pZH0tcHJpdmF0ZS1hcGlgXG4gICAqL1xuICByZWFkb25seSByZXN0QXBpTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBBUEkgR2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBcIlByaXZhdGUgUkVTVCBBUEkgR2F0ZXdheVwiXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVwbG95IG9wdGlvbnMgZm9yIHRoZSBBUEkgR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveU9wdGlvbnM/OiBhcGlnYXRld2F5LlN0YWdlT3B0aW9ucztcblxuICAvKipcbiAgICogUG9saWN5IGZvciB0aGUgQVBJIEdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUG9saWN5IHRoYXQgYWxsb3dzIGFueSBwcmluY2lwYWwgd2l0aCB0aGUgc2FtZSBWUEMgdG8gaW52b2tlIHRoZSBBUEkuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3k/OiBpYW0uUG9saWN5RG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBQcml2YXRlTGFtYmRhQXBpR2F0ZXdheSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBhcGk6IGFwaWdhdGV3YXkuUmVzdEFwaTtcbiAgcHVibGljIHJlYWRvbmx5IHZwY0VuZHBvaW50PzogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogUHJpdmF0ZUxhbWJkYUFwaUdhdGV3YXlQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdEFwaU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGxhbWJkYUZ1bmN0aW9uLFxuICAgICAgdnBjLFxuICAgICAgdnBjRW5kcG9pbnRTdWJuZXRTZWxlY3Rpb24sXG4gICAgICBjcmVhdGVWcGNFbmRwb2ludCA9IHRydWUsXG4gICAgICBkZXBsb3lPcHRpb25zLFxuICAgICAgcG9saWN5LFxuICAgICAgbGFtYmRhSW50ZWdyYXRpb25PcHRpb25zLFxuICAgIH0gPSBwcm9wcztcblxuICAgIGlmIChjcmVhdGVWcGNFbmRwb2ludCkge1xuICAgICAgLy8gQ3JlYXRlIFZQQyBFbmRwb2ludCBmb3IgQVBJIEdhdGV3YXlcbiAgICAgIHRoaXMudnBjRW5kcG9pbnQgPSBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIFwidnBjLWVuZHBvaW50XCIsIHtcbiAgICAgICAgdnBjLFxuICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkFQSUdBVEVXQVksXG4gICAgICAgIHN1Ym5ldHM6IHZwY0VuZHBvaW50U3VibmV0U2VsZWN0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdEludGVncmF0aW9uID0gbmV3IGFwaWdhdGV3YXkuTGFtYmRhSW50ZWdyYXRpb24oXG4gICAgICBsYW1iZGFGdW5jdGlvbixcbiAgICAgIGxhbWJkYUludGVncmF0aW9uT3B0aW9uc1xuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgUHJpdmF0ZSBSRVNUIEFQSSBHYXRld2F5XG4gICAgdGhpcy5hcGkgPSBuZXcgYXBpZ2F0ZXdheS5SZXN0QXBpKHRoaXMsIFwicmVzdC1hcGlcIiwge1xuICAgICAgcmVzdEFwaU5hbWU6IHJlc3RBcGlOYW1lID8/IGAke3Njb3BlLm5vZGUuaWR9LXByaXZhdGUtYXBpYCxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBcIlByaXZhdGUgUkVTVCBBUEkgR2F0ZXdheVwiLFxuICAgICAgZW5kcG9pbnRUeXBlczogW2FwaWdhdGV3YXkuRW5kcG9pbnRUeXBlLlBSSVZBVEVdLFxuICAgICAgcG9saWN5OlxuICAgICAgICBwb2xpY3kgPz9cbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFueVByaW5jaXBhbCgpXSxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wiZXhlY3V0ZS1hcGk6SW52b2tlXCJdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcImV4ZWN1dGUtYXBpOi8qXCJdLFxuICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlNvdXJjZVZwY1wiOiB2cGMudnBjSWQgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgZGVwbG95T3B0aW9uczogZGVwbG95T3B0aW9ucyA/PyB7XG4gICAgICAgIGxvZ2dpbmdMZXZlbDogYXBpZ2F0ZXdheS5NZXRob2RMb2dnaW5nTGV2ZWwuSU5GTyxcbiAgICAgICAgZGF0YVRyYWNlRW5hYmxlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0SW50ZWdyYXRpb24sXG4gICAgICBkZWZhdWx0TWV0aG9kT3B0aW9uczoge1xuICAgICAgICBhdXRob3JpemF0aW9uVHlwZTogYXBpZ2F0ZXdheS5BdXRob3JpemF0aW9uVHlwZS5OT05FLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXBpLnJvb3QuYWRkTWV0aG9kKFwiQU5ZXCIpO1xuICAgIHRoaXMuYXBpLnJvb3QuYWRkUmVzb3VyY2UoXCJ7cHJveHkrfVwiKS5hZGRNZXRob2QoXCJBTllcIik7XG4gIH1cbn1cbiJdfQ==
@@ -44,6 +44,25 @@ export interface PgStacApiLambdaRuntimeProps {
44
44
  * @default - query, sort, fields, filter, free_text, pagination, collection_search
45
45
  */
46
46
  readonly enabledExtensions?: ExtensionType[];
47
+ /**
48
+ * Enable SnapStart to reduce cold start latency.
49
+ *
50
+ * SnapStart creates a snapshot of the initialized Lambda function, allowing new instances
51
+ * to start from this pre-initialized state instead of starting from scratch.
52
+ *
53
+ * Benefits:
54
+ * - Significantly reduces cold start times (typically 10x faster)
55
+ * - Improves API response time for infrequent requests
56
+ *
57
+ * Considerations:
58
+ * - Additional cost: charges for snapshot storage and restore operations
59
+ * - Requires Lambda versioning (automatically configured by this construct)
60
+ * - Database connections are recreated on restore using snapshot lifecycle hooks
61
+ *
62
+ * @see https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html
63
+ * @default false
64
+ */
65
+ readonly enableSnapStart?: boolean;
47
66
  /**
48
67
  * Can be used to override the default lambda function properties.
49
68
  *
@@ -49,7 +49,7 @@ class PgStacApiLambdaRuntime extends constructs_1.Construct {
49
49
  this.lambdaFunction = new aws_cdk_lib_1.aws_lambda.Function(this, "lambda", {
50
50
  // defaults
51
51
  runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_12,
52
- handler: "handler.handler",
52
+ handler: "stac_api.handler.handler",
53
53
  memorySize: 8192,
54
54
  logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_WEEK,
55
55
  timeout: aws_cdk_lib_1.Duration.seconds(30),
@@ -67,6 +67,9 @@ class PgStacApiLambdaRuntime extends constructs_1.Construct {
67
67
  ENABLED_EXTENSIONS: enabledExtensions.join(","),
68
68
  ...props.apiEnv,
69
69
  },
70
+ snapStart: props.enableSnapStart
71
+ ? aws_cdk_lib_1.aws_lambda.SnapStartConf.ON_PUBLISHED_VERSIONS
72
+ : undefined,
70
73
  // overwrites defaults with user-provided configurable properties (excluding code)
71
74
  ...otherLambdaOptions,
72
75
  });
@@ -78,7 +81,7 @@ class PgStacApiLambdaRuntime extends constructs_1.Construct {
78
81
  }
79
82
  exports.PgStacApiLambdaRuntime = PgStacApiLambdaRuntime;
80
83
  _a = JSII_RTTI_SYMBOL_1;
81
- PgStacApiLambdaRuntime[_a] = { fqn: "eoapi-cdk.PgStacApiLambdaRuntime", version: "10.2.5" };
84
+ PgStacApiLambdaRuntime[_a] = { fqn: "eoapi-cdk.PgStacApiLambdaRuntime", version: "10.4.0" };
82
85
  class PgStacApiLambda extends constructs_1.Construct {
83
86
  constructor(scope, id, props) {
84
87
  super(scope, id);
@@ -89,11 +92,14 @@ class PgStacApiLambda extends constructs_1.Construct {
89
92
  dbSecret: props.dbSecret,
90
93
  enabledExtensions: props.enabledExtensions,
91
94
  apiEnv: props.apiEnv,
95
+ enableSnapStart: props.enableSnapStart,
92
96
  lambdaFunctionOptions: props.lambdaFunctionOptions,
93
97
  });
94
98
  this.stacApiLambdaFunction = this.lambdaFunction = runtime.lambdaFunction;
95
99
  const { api } = new lambda_api_gateway_1.LambdaApiGateway(this, "stac-api", {
96
- lambdaFunction: runtime.lambdaFunction,
100
+ lambdaFunction: props.enableSnapStart
101
+ ? runtime.lambdaFunction.currentVersion
102
+ : runtime.lambdaFunction,
97
103
  domainName: props.domainName ?? props.stacApiDomainName,
98
104
  });
99
105
  this.url = api.url;
@@ -105,5 +111,5 @@ class PgStacApiLambda extends constructs_1.Construct {
105
111
  }
106
112
  exports.PgStacApiLambda = PgStacApiLambda;
107
113
  _b = JSII_RTTI_SYMBOL_1;
108
- PgStacApiLambda[_b] = { fqn: "eoapi-cdk.PgStacApiLambda", version: "10.2.5" };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQVVxQjtBQUNyQiwyQ0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDhEQUF5RDtBQUN6RCxvQ0FBd0U7QUFFM0QsUUFBQSxVQUFVLEdBQUc7SUFDeEIsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0QyxXQUFXLEVBQUUsYUFBYTtJQUMxQixnQkFBZ0IsRUFBRSxtQkFBbUI7Q0FDN0IsQ0FBQztBQUlYOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFhO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQVksQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxNQUFhLHNCQUF1QixTQUFRLHNCQUFTO0lBR25ELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxpQkFBaUIsR0FBb0I7WUFDekMsa0JBQVUsQ0FBQyxLQUFLO1lBQ2hCLGtCQUFVLENBQUMsSUFBSTtZQUNmLGtCQUFVLENBQUMsTUFBTTtZQUNqQixrQkFBVSxDQUFDLE1BQU07WUFDakIsa0JBQVUsQ0FBQyxTQUFTO1lBQ3BCLGtCQUFVLENBQUMsVUFBVTtZQUNyQixrQkFBVSxDQUFDLGlCQUFpQjtTQUM3QixDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxJQUFJLEtBQUssQ0FDYix1QkFBdUIsR0FBRyxzQkFBc0IsTUFBTSxDQUFDLE1BQU0sQ0FDM0Qsa0JBQVUsQ0FDWCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNmLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLElBQUksaUJBQWlCLENBQUM7UUFFdkUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7UUFFcEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHdCQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDeEQsV0FBVztZQUNYLE9BQU8sRUFBRSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLHNCQUFRLENBQUMsYUFBYSxDQUFDLFFBQVE7WUFDN0MsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLEVBQUUsSUFBQSx5QkFBaUIsRUFDckIsUUFBUSxFQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUMxQjtnQkFDRSxJQUFJLEVBQUUsNkJBQTZCO2dCQUNuQyxTQUFTLEVBQUUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFO2FBQ3RDLENBQ0Y7WUFDRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxVQUFVLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDakMsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixXQUFXLEVBQUU7Z0JBQ1gsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTO2dCQUMzQyxnQkFBZ0IsRUFBRSxHQUFHO2dCQUNyQixnQkFBZ0IsRUFBRSxHQUFHO2dCQUNyQixrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUMvQyxHQUFHLEtBQUssQ0FBQyxNQUFNO2FBQ2hCO1lBQ0Qsa0ZBQWtGO1lBQ2xGLEdBQUcsa0JBQWtCO1NBQ3RCLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU5QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDckMsS0FBSyxDQUFDLEVBQUUsRUFDUixxQkFBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQ2xCLDRDQUE0QyxDQUM3QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBMUVILHdEQTJFQzs7O0FBMkNELE1BQWEsZUFBZ0IsU0FBUSxzQkFBUztJQWdCNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUMxRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ1osUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDMUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUI7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUUxRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxxQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3JELGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztZQUN0QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsaUJBQWlCO1NBQ3hELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUksQ0FBQztRQUVwQixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3JDLFVBQVUsRUFBRSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsTUFBTTtZQUM3QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF6Q0gsMENBMENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXdzX2FwaWdhdGV3YXl2MiBhcyBhcGlnYXRld2F5djIsXG4gIGF3c19sb2dzLFxuICBDZm5PdXRwdXQsXG4gIER1cmF0aW9uLFxuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIGF3c19yZHMgYXMgcmRzLFxuICBhd3Nfc2VjcmV0c21hbmFnZXIgYXMgc2VjcmV0c21hbmFnZXIsXG4gIFN0YWNrLFxufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBMYW1iZGFBcGlHYXRld2F5IH0gZnJvbSBcIi4uL2xhbWJkYS1hcGktZ2F0ZXdheVwiO1xuaW1wb3J0IHsgQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcywgcmVzb2x2ZUxhbWJkYUNvZGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IEVYVEVOU0lPTlMgPSB7XG4gIFFVRVJZOiBcInF1ZXJ5XCIsXG4gIFNPUlQ6IFwic29ydFwiLFxuICBGSUVMRFM6IFwiZmllbGRzXCIsXG4gIEZJTFRFUjogXCJmaWx0ZXJcIixcbiAgRlJFRV9URVhUOiBcImZyZWVfdGV4dFwiLFxuICBQQUdJTkFUSU9OOiBcInBhZ2luYXRpb25cIixcbiAgQ09MTEVDVElPTl9TRUFSQ0g6IFwiY29sbGVjdGlvbl9zZWFyY2hcIixcbiAgVFJBTlNBQ1RJT046IFwidHJhbnNhY3Rpb25cIixcbiAgQlVMS19UUkFOU0FDVElPTjogXCJidWxrX3RyYW5zYWN0aW9uc1wiLFxufSBhcyBjb25zdDtcblxudHlwZSBFeHRlbnNpb25UeXBlID0gKHR5cGVvZiBFWFRFTlNJT05TKVtrZXlvZiB0eXBlb2YgRVhURU5TSU9OU107XG5cbi8qKlxuICogVmFsaWRhdGVzIGlmIGEgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQgU1RBQyBleHRlbnNpb25cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEV4dGVuc2lvbih2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRXh0ZW5zaW9uVHlwZSB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKEVYVEVOU0lPTlMpLmluY2x1ZGVzKHZhbHVlIGFzIGFueSk7XG59XG5cbmV4cG9ydCBjbGFzcyBQZ1N0YWNBcGlMYW1iZGFSdW50aW1lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBQZ1N0YWNBcGlMYW1iZGFSdW50aW1lUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRlZmF1bHRFeHRlbnNpb25zOiBFeHRlbnNpb25UeXBlW10gPSBbXG4gICAgICBFWFRFTlNJT05TLlFVRVJZLFxuICAgICAgRVhURU5TSU9OUy5TT1JULFxuICAgICAgRVhURU5TSU9OUy5GSUVMRFMsXG4gICAgICBFWFRFTlNJT05TLkZJTFRFUixcbiAgICAgIEVYVEVOU0lPTlMuRlJFRV9URVhULFxuICAgICAgRVhURU5TSU9OUy5QQUdJTkFUSU9OLFxuICAgICAgRVhURU5TSU9OUy5DT0xMRUNUSU9OX1NFQVJDSCxcbiAgICBdO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZWRFeHRlbnNpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGV4dCBvZiBwcm9wcy5lbmFibGVkRXh0ZW5zaW9ucykge1xuICAgICAgICBpZiAoIWlzVmFsaWRFeHRlbnNpb24oZXh0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGV4dGVuc2lvbjogXCIke2V4dH1cIi4gTXVzdCBiZSBvbmUgb2Y6ICR7T2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgICAgRVhURU5TSU9OU1xuICAgICAgICAgICAgKS5qb2luKFwiLCBcIil9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlbmFibGVkRXh0ZW5zaW9ucyA9IHByb3BzLmVuYWJsZWRFeHRlbnNpb25zIHx8IGRlZmF1bHRFeHRlbnNpb25zO1xuXG4gICAgY29uc3QgeyBjb2RlOiB1c2VyQ29kZSwgLi4ub3RoZXJMYW1iZGFPcHRpb25zIH0gPSBwcm9wcy5sYW1iZGFGdW5jdGlvbk9wdGlvbnMgfHwge307XG5cbiAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcImxhbWJkYVwiLCB7XG4gICAgICAvLyBkZWZhdWx0c1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTIsXG4gICAgICBoYW5kbGVyOiBcImhhbmRsZXIuaGFuZGxlclwiLFxuICAgICAgbWVtb3J5U2l6ZTogODE5MixcbiAgICAgIGxvZ1JldGVudGlvbjogYXdzX2xvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgY29kZTogcmVzb2x2ZUxhbWJkYUNvZGUoXG4gICAgICAgIHVzZXJDb2RlLFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uXCIpLFxuICAgICAgICB7XG4gICAgICAgICAgZmlsZTogXCJzdGFjLWFwaS9ydW50aW1lL0RvY2tlcmZpbGVcIixcbiAgICAgICAgICBidWlsZEFyZ3M6IHsgUFlUSE9OX1ZFUlNJT046IFwiMy4xMlwiIH0sXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnN1Ym5ldFNlbGVjdGlvbixcbiAgICAgIGFsbG93UHVibGljU3VibmV0OiB0cnVlLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgUEdTVEFDX1NFQ1JFVF9BUk46IHByb3BzLmRiU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgREJfTUlOX0NPTk5fU0laRTogXCIwXCIsXG4gICAgICAgIERCX01BWF9DT05OX1NJWkU6IFwiMVwiLFxuICAgICAgICBFTkFCTEVEX0VYVEVOU0lPTlM6IGVuYWJsZWRFeHRlbnNpb25zLmpvaW4oXCIsXCIpLFxuICAgICAgICAuLi5wcm9wcy5hcGlFbnYsXG4gICAgICB9LFxuICAgICAgLy8gb3ZlcndyaXRlcyBkZWZhdWx0cyB3aXRoIHVzZXItcHJvdmlkZWQgY29uZmlndXJhYmxlIHByb3BlcnRpZXMgKGV4Y2x1ZGluZyBjb2RlKVxuICAgICAgLi4ub3RoZXJMYW1iZGFPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgcHJvcHMuZGJTZWNyZXQuZ3JhbnRSZWFkKHRoaXMubGFtYmRhRnVuY3Rpb24pO1xuXG4gICAgaWYgKHByb3BzLnZwYykge1xuICAgICAgdGhpcy5sYW1iZGFGdW5jdGlvbi5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgICBwcm9wcy5kYixcbiAgICAgICAgZWMyLlBvcnQudGNwKDU0MzIpLFxuICAgICAgICBcImFsbG93IGNvbm5lY3Rpb25zIGZyb20gc3RhYy1mYXN0YXBpLXBnc3RhY1wiXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBnU3RhY0FwaUxhbWJkYVJ1bnRpbWVQcm9wcyB7XG4gIC8qKlxuICAgKiBWUEMgaW50byB3aGljaCB0aGUgbGFtYmRhIHNob3VsZCBiZSBkZXBsb3llZC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBSRFMgSW5zdGFuY2Ugd2l0aCBpbnN0YWxsZWQgcGdTVEFDIG9yIHBnYm91bmNlciBzZXJ2ZXIuXG4gICAqL1xuICByZWFkb25seSBkYjogcmRzLklEYXRhYmFzZUluc3RhbmNlIHwgZWMyLklJbnN0YW5jZTtcblxuICAvKipcbiAgICogU3VibmV0IGludG8gd2hpY2ggdGhlIGxhbWJkYSBzaG91bGQgYmUgZGVwbG95ZWQuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRTZWxlY3Rpb24/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBTZWNyZXQgY29udGFpbmluZyBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGZvciBwZ1NUQUMgZGF0YWJhc2UuXG4gICAqL1xuICByZWFkb25seSBkYlNlY3JldDogc2VjcmV0c21hbmFnZXIuSVNlY3JldDtcblxuICAvKipcbiAgICogQ3VzdG9taXplZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2VuZCB0byBmYXN0YXBpLXBnc3RhYyBydW50aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpRW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogTGlzdCBvZiBTVEFDIEFQSSBleHRlbnNpb25zIHRvIGVuYWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBxdWVyeSwgc29ydCwgZmllbGRzLCBmaWx0ZXIsIGZyZWVfdGV4dCwgcGFnaW5hdGlvbiwgY29sbGVjdGlvbl9zZWFyY2hcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWRFeHRlbnNpb25zPzogRXh0ZW5zaW9uVHlwZVtdO1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBsYW1iZGEgZnVuY3Rpb24gcHJvcGVydGllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZpbmVkIGluIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFGdW5jdGlvbk9wdGlvbnM/OiBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzO1xufVxuXG5leHBvcnQgY2xhc3MgUGdTdGFjQXBpTGFtYmRhIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFVSTCBmb3IgdGhlIFNUQUMgQVBJLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhbWJkYSBmdW5jdGlvbiBmb3IgdGhlIFNUQUMgQVBJLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IGxhbWJkYS5GdW5jdGlvbjtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgbGFtYmRhRnVuY3Rpb24gaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHN0YWNBcGlMYW1iZGFGdW5jdGlvbjogbGFtYmRhLkZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQZ1N0YWNBcGlMYW1iZGFQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBydW50aW1lID0gbmV3IFBnU3RhY0FwaUxhbWJkYVJ1bnRpbWUodGhpcywgXCJydW50aW1lXCIsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgc3VibmV0U2VsZWN0aW9uOiBwcm9wcy5zdWJuZXRTZWxlY3Rpb24sXG4gICAgICBkYjogcHJvcHMuZGIsXG4gICAgICBkYlNlY3JldDogcHJvcHMuZGJTZWNyZXQsXG4gICAgICBlbmFibGVkRXh0ZW5zaW9uczogcHJvcHMuZW5hYmxlZEV4dGVuc2lvbnMsXG4gICAgICBhcGlFbnY6IHByb3BzLmFwaUVudixcbiAgICAgIGxhbWJkYUZ1bmN0aW9uT3B0aW9uczogcHJvcHMubGFtYmRhRnVuY3Rpb25PcHRpb25zLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhY0FwaUxhbWJkYUZ1bmN0aW9uID0gdGhpcy5sYW1iZGFGdW5jdGlvbiA9IHJ1bnRpbWUubGFtYmRhRnVuY3Rpb247XG5cbiAgICBjb25zdCB7IGFwaSB9ID0gbmV3IExhbWJkYUFwaUdhdGV3YXkodGhpcywgXCJzdGFjLWFwaVwiLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogcnVudGltZS5sYW1iZGFGdW5jdGlvbixcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUgPz8gcHJvcHMuc3RhY0FwaURvbWFpbk5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnVybCA9IGFwaS51cmwhO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcInN0YWMtYXBpLW91dHB1dFwiLCB7XG4gICAgICBleHBvcnROYW1lOiBgJHtTdGFjay5vZih0aGlzKS5zdGFja05hbWV9LXVybGAsXG4gICAgICB2YWx1ZTogdGhpcy51cmwsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZ1N0YWNBcGlMYW1iZGFQcm9wcyBleHRlbmRzIFBnU3RhY0FwaUxhbWJkYVJ1bnRpbWVQcm9wcyB7XG4gIC8qKlxuICAgKiBEb21haW4gTmFtZSBmb3IgdGhlIFNUQUMgQVBJLiBJZiBkZWZpbmVkLCB3aWxsIGNyZWF0ZSB0aGUgZG9tYWluIG5hbWUgYW5kIGludGVncmF0ZSBpdCB3aXRoIHRoZSBTVEFDIEFQSS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU/OiBhcGlnYXRld2F5djIuSURvbWFpbk5hbWU7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBEb21haW4gTmFtZSBPcHRpb25zIGZvciBTVEFDIEFQSS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlICdkb21haW5OYW1lJyBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNBcGlEb21haW5OYW1lPzogYXBpZ2F0ZXdheXYyLklEb21haW5OYW1lO1xufVxuIl19
114
+ PgStacApiLambda[_b] = { fqn: "eoapi-cdk.PgStacApiLambda", version: "10.4.0" };
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQVVxQjtBQUNyQiwyQ0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDhEQUF5RDtBQUN6RCxvQ0FBd0U7QUFFM0QsUUFBQSxVQUFVLEdBQUc7SUFDeEIsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0QyxXQUFXLEVBQUUsYUFBYTtJQUMxQixnQkFBZ0IsRUFBRSxtQkFBbUI7Q0FDN0IsQ0FBQztBQUlYOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFhO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQVksQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxNQUFhLHNCQUF1QixTQUFRLHNCQUFTO0lBR25ELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxpQkFBaUIsR0FBb0I7WUFDekMsa0JBQVUsQ0FBQyxLQUFLO1lBQ2hCLGtCQUFVLENBQUMsSUFBSTtZQUNmLGtCQUFVLENBQUMsTUFBTTtZQUNqQixrQkFBVSxDQUFDLE1BQU07WUFDakIsa0JBQVUsQ0FBQyxTQUFTO1lBQ3BCLGtCQUFVLENBQUMsVUFBVTtZQUNyQixrQkFBVSxDQUFDLGlCQUFpQjtTQUM3QixDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dC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QUNwQixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQjtTQUNuRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBRTFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLHFDQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDckQsY0FBYyxFQUFFLEtBQUssQ0FBQyxlQUFnQjtnQkFDcEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYztnQkFDdkMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQzFCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxpQkFBaUI7U0FDeEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBSSxDQUFDO1FBRXBCLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDckMsVUFBVSxFQUFFLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxNQUFNO1lBQzdDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQTVDSCwwQ0E2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhd3NfYXBpZ2F0ZXdheXYyIGFzIGFwaWdhdGV3YXl2MixcbiAgYXdzX2xvZ3MsXG4gIENmbk91dHB1dCxcbiAgRHVyYXRpb24sXG4gIGF3c19lYzIgYXMgZWMyLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3JkcyBhcyByZHMsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzZWNyZXRzbWFuYWdlcixcbiAgU3RhY2ssXG59IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IExhbWJkYUFwaUdhdGV3YXkgfSBmcm9tIFwiLi4vbGFtYmRhLWFwaS1nYXRld2F5XCI7XG5pbXBvcnQgeyBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzLCByZXNvbHZlTGFtYmRhQ29kZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5leHBvcnQgY29uc3QgRVhURU5TSU9OUyA9IHtcbiAgUVVFUlk6IFwicXVlcnlcIixcbiAgU09SVDogXCJzb3J0XCIsXG4gIEZJRUxEUzogXCJmaWVsZHNcIixcbiAgRklMVEVSOiBcImZpbHRlclwiLFxuICBGUkVFX1RFWFQ6IFwiZnJlZV90ZXh0XCIsXG4gIFBBR0lOQVRJT046IFwicGFnaW5hdGlvblwiLFxuICBDT0xMRUNUSU9OX1NFQVJDSDogXCJjb2xsZWN0aW9uX3NlYXJjaFwiLFxuICBUUkFOU0FDVElPTjogXCJ0cmFuc2FjdGlvblwiLFxuICBCVUxLX1RSQU5TQUNUSU9OOiBcImJ1bGtfdHJhbnNhY3Rpb25zXCIsXG59IGFzIGNvbnN0O1xuXG50eXBlIEV4dGVuc2lvblR5cGUgPSAodHlwZW9mIEVYVEVOU0lPTlMpW2tleW9mIHR5cGVvZiBFWFRFTlNJT05TXTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgaWYgYSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBTVEFDIGV4dGVuc2lvblxuICovXG5mdW5jdGlvbiBpc1ZhbGlkRXh0ZW5zaW9uKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBFeHRlbnNpb25UeXBlIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoRVhURU5TSU9OUykuaW5jbHVkZXModmFsdWUgYXMgYW55KTtcbn1cblxuZXhwb3J0IGNsYXNzIFBnU3RhY0FwaUxhbWJkYVJ1bnRpbWUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IGxhbWJkYS5GdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFBnU3RhY0FwaUxhbWJkYVJ1bnRpbWVQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRlZmF1bHRFeHRlbnNpb25zOiBFeHRlbnNpb25UeXBlW10gPSBbXG4gICAgICBFWFRFTlNJT05TLlFVRVJZLFxuICAgICAgRVhURU5TSU9OUy5TT1JULFxuICAgICAgRVhURU5TSU9OUy5GSUVMRFMsXG4gICAgICBFWFRFTlNJT05TLkZJTFRFUixcbiAgICAgIEVYVEVOU0lPTlMuRlJFRV9URVhULFxuICAgICAgRVhURU5TSU9OUy5QQUdJTkFUSU9OLFxuICAgICAgRVhURU5TSU9OUy5DT0xMRUNUSU9OX1NFQVJDSCxcbiAgICBdO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZWRFeHRlbnNpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGV4dCBvZiBwcm9wcy5lbmFibGVkRXh0ZW5zaW9ucykge1xuICAgICAgICBpZiAoIWlzVmFsaWRFeHRlbnNpb24oZXh0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGV4dGVuc2lvbjogXCIke2V4dH1cIi4gTXVzdCBiZSBvbmUgb2Y6ICR7T2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgICAgRVhURU5TSU9OUyxcbiAgICAgICAgICAgICkuam9pbihcIiwgXCIpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuYWJsZWRFeHRlbnNpb25zID0gcHJvcHMuZW5hYmxlZEV4dGVuc2lvbnMgfHwgZGVmYXVsdEV4dGVuc2lvbnM7XG5cbiAgICBjb25zdCB7IGNvZGU6IHVzZXJDb2RlLCAuLi5vdGhlckxhbWJkYU9wdGlvbnMgfSA9XG4gICAgICBwcm9wcy5sYW1iZGFGdW5jdGlvbk9wdGlvbnMgfHwge307XG5cbiAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcImxhbWJkYVwiLCB7XG4gICAgICAvLyBkZWZhdWx0c1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTIsXG4gICAgICBoYW5kbGVyOiBcInN0YWNfYXBpLmhhbmRsZXIuaGFuZGxlclwiLFxuICAgICAgbWVtb3J5U2l6ZTogODE5MixcbiAgICAgIGxvZ1JldGVudGlvbjogYXdzX2xvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgY29kZTogcmVzb2x2ZUxhbWJkYUNvZGUodXNlckNvZGUsIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiksIHtcbiAgICAgICAgZmlsZTogXCJzdGFjLWFwaS9ydW50aW1lL0RvY2tlcmZpbGVcIixcbiAgICAgICAgYnVpbGRBcmdzOiB7IFBZVEhPTl9WRVJTSU9OOiBcIjMuMTJcIiB9LFxuICAgICAgfSksXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnN1Ym5ldFNlbGVjdGlvbixcbiAgICAgIGFsbG93UHVibGljU3VibmV0OiB0cnVlLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgUEdTVEFDX1NFQ1JFVF9BUk46IHByb3BzLmRiU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgREJfTUlOX0NPTk5fU0laRTogXCIwXCIsXG4gICAgICAgIERCX01BWF9DT05OX1NJWkU6IFwiMVwiLFxuICAgICAgICBFTkFCTEVEX0VYVEVOU0lPTlM6IGVuYWJsZWRFeHRlbnNpb25zLmpvaW4oXCIsXCIpLFxuICAgICAgICAuLi5wcm9wcy5hcGlFbnYsXG4gICAgICB9LFxuICAgICAgc25hcFN0YXJ0OiBwcm9wcy5lbmFibGVTbmFwU3RhcnRcbiAgICAgICAgPyBsYW1iZGEuU25hcFN0YXJ0Q29uZi5PTl9QVUJMSVNIRURfVkVSU0lPTlNcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAvLyBvdmVyd3JpdGVzIGRlZmF1bHRzIHdpdGggdXNlci1wcm92aWRlZCBjb25maWd1cmFibGUgcHJvcGVydGllcyAoZXhjbHVkaW5nIGNvZGUpXG4gICAgICAuLi5vdGhlckxhbWJkYU9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBwcm9wcy5kYlNlY3JldC5ncmFudFJlYWQodGhpcy5sYW1iZGFGdW5jdGlvbik7XG5cbiAgICBpZiAocHJvcHMudnBjKSB7XG4gICAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uLmNvbm5lY3Rpb25zLmFsbG93VG8oXG4gICAgICAgIHByb3BzLmRiLFxuICAgICAgICBlYzIuUG9ydC50Y3AoNTQzMiksXG4gICAgICAgIFwiYWxsb3cgY29ubmVjdGlvbnMgZnJvbSBzdGFjLWZhc3RhcGktcGdzdGFjXCIsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBnU3RhY0FwaUxhbWJkYVJ1bnRpbWVQcm9wcyB7XG4gIC8qKlxuICAgKiBWUEMgaW50byB3aGljaCB0aGUgbGFtYmRhIHNob3VsZCBiZSBkZXBsb3llZC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBSRFMgSW5zdGFuY2Ugd2l0aCBpbnN0YWxsZWQgcGdTVEFDIG9yIHBnYm91bmNlciBzZXJ2ZXIuXG4gICAqL1xuICByZWFkb25seSBkYjogcmRzLklEYXRhYmFzZUluc3RhbmNlIHwgZWMyLklJbnN0YW5jZTtcblxuICAvKipcbiAgICogU3VibmV0IGludG8gd2hpY2ggdGhlIGxhbWJkYSBzaG91bGQgYmUgZGVwbG95ZWQuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRTZWxlY3Rpb24/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBTZWNyZXQgY29udGFpbmluZyBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGZvciBwZ1NUQUMgZGF0YWJhc2UuXG4gICAqL1xuICByZWFkb25seSBkYlNlY3JldDogc2VjcmV0c21hbmFnZXIuSVNlY3JldDtcblxuICAvKipcbiAgICogQ3VzdG9taXplZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2VuZCB0byBmYXN0YXBpLXBnc3RhYyBydW50aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpRW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogTGlzdCBvZiBTVEFDIEFQSSBleHRlbnNpb25zIHRvIGVuYWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBxdWVyeSwgc29ydCwgZmllbGRzLCBmaWx0ZXIsIGZyZWVfdGV4dCwgcGFnaW5hdGlvbiwgY29sbGVjdGlvbl9zZWFyY2hcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWRFeHRlbnNpb25zPzogRXh0ZW5zaW9uVHlwZVtdO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgU25hcFN0YXJ0IHRvIHJlZHVjZSBjb2xkIHN0YXJ0IGxhdGVuY3kuXG4gICAqXG4gICAqIFNuYXBTdGFydCBjcmVhdGVzIGEgc25hcHNob3Qgb2YgdGhlIGluaXRpYWxpemVkIExhbWJkYSBmdW5jdGlvbiwgYWxsb3dpbmcgbmV3IGluc3RhbmNlc1xuICAgKiB0byBzdGFydCBmcm9tIHRoaXMgcHJlLWluaXRpYWxpemVkIHN0YXRlIGluc3RlYWQgb2Ygc3RhcnRpbmcgZnJvbSBzY3JhdGNoLlxuICAgKlxuICAgKiBCZW5lZml0czpcbiAgICogLSBTaWduaWZpY2FudGx5IHJlZHVjZXMgY29sZCBzdGFydCB0aW1lcyAodHlwaWNhbGx5IDEweCBmYXN0ZXIpXG4gICAqIC0gSW1wcm92ZXMgQVBJIHJlc3BvbnNlIHRpbWUgZm9yIGluZnJlcXVlbnQgcmVxdWVzdHNcbiAgICpcbiAgICogQ29uc2lkZXJhdGlvbnM6XG4gICAqIC0gQWRkaXRpb25hbCBjb3N0OiBjaGFyZ2VzIGZvciBzbmFwc2hvdCBzdG9yYWdlIGFuZCByZXN0b3JlIG9wZXJhdGlvbnNcbiAgICogLSBSZXF1aXJlcyBMYW1iZGEgdmVyc2lvbmluZyAoYXV0b21hdGljYWxseSBjb25maWd1cmVkIGJ5IHRoaXMgY29uc3RydWN0KVxuICAgKiAtIERhdGFiYXNlIGNvbm5lY3Rpb25zIGFyZSByZWNyZWF0ZWQgb24gcmVzdG9yZSB1c2luZyBzbmFwc2hvdCBsaWZlY3ljbGUgaG9va3NcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy9zbmFwc3RhcnQuaHRtbFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlU25hcFN0YXJ0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbGFtYmRhIGZ1bmN0aW9uIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmaW5lZCBpbiB0aGUgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb25PcHRpb25zPzogQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcztcbn1cblxuZXhwb3J0IGNsYXNzIFBnU3RhY0FwaUxhbWJkYSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBVUkwgZm9yIHRoZSBTVEFDIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYW1iZGEgZnVuY3Rpb24gZm9yIHRoZSBTVEFDIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGxhbWJkYUZ1bmN0aW9uIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBzdGFjQXBpTGFtYmRhRnVuY3Rpb246IGxhbWJkYS5GdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGdTdGFjQXBpTGFtYmRhUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcnVudGltZSA9IG5ldyBQZ1N0YWNBcGlMYW1iZGFSdW50aW1lKHRoaXMsIFwicnVudGltZVwiLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHN1Ym5ldFNlbGVjdGlvbjogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgZGI6IHByb3BzLmRiLFxuICAgICAgZGJTZWNyZXQ6IHByb3BzLmRiU2VjcmV0LFxuICAgICAgZW5hYmxlZEV4dGVuc2lvbnM6IHByb3BzLmVuYWJsZWRFeHRlbnNpb25zLFxuICAgICAgYXBpRW52OiBwcm9wcy5hcGlFbnYsXG4gICAgICBlbmFibGVTbmFwU3RhcnQ6IHByb3BzLmVuYWJsZVNuYXBTdGFydCxcbiAgICAgIGxhbWJkYUZ1bmN0aW9uT3B0aW9uczogcHJvcHMubGFtYmRhRnVuY3Rpb25PcHRpb25zLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhY0FwaUxhbWJkYUZ1bmN0aW9uID0gdGhpcy5sYW1iZGFGdW5jdGlvbiA9IHJ1bnRpbWUubGFtYmRhRnVuY3Rpb247XG5cbiAgICBjb25zdCB7IGFwaSB9ID0gbmV3IExhbWJkYUFwaUdhdGV3YXkodGhpcywgXCJzdGFjLWFwaVwiLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogcHJvcHMuZW5hYmxlU25hcFN0YXJ0IVxuICAgICAgICA/IHJ1bnRpbWUubGFtYmRhRnVuY3Rpb24uY3VycmVudFZlcnNpb25cbiAgICAgICAgOiBydW50aW1lLmxhbWJkYUZ1bmN0aW9uLFxuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSA/PyBwcm9wcy5zdGFjQXBpRG9tYWluTmFtZSxcbiAgICB9KTtcblxuICAgIHRoaXMudXJsID0gYXBpLnVybCE7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwic3RhYy1hcGktb3V0cHV0XCIsIHtcbiAgICAgIGV4cG9ydE5hbWU6IGAke1N0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0tdXJsYCxcbiAgICAgIHZhbHVlOiB0aGlzLnVybCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBnU3RhY0FwaUxhbWJkYVByb3BzIGV4dGVuZHMgUGdTdGFjQXBpTGFtYmRhUnVudGltZVByb3BzIHtcbiAgLyoqXG4gICAqIERvbWFpbiBOYW1lIGZvciB0aGUgU1RBQyBBUEkuIElmIGRlZmluZWQsIHdpbGwgY3JlYXRlIHRoZSBkb21haW4gbmFtZSBhbmQgaW50ZWdyYXRlIGl0IHdpdGggdGhlIFNUQUMgQVBJLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IGFwaWdhdGV3YXl2Mi5JRG9tYWluTmFtZTtcblxuICAvKipcbiAgICogQ3VzdG9tIERvbWFpbiBOYW1lIE9wdGlvbnMgZm9yIFNUQUMgQVBJLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgJ2RvbWFpbk5hbWUnIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY0FwaURvbWFpbk5hbWU/OiBhcGlnYXRld2F5djIuSURvbWFpbk5hbWU7XG59XG4iXX0=
@@ -1,14 +1,33 @@
1
1
  ARG PYTHON_VERSION
2
2
  FROM --platform=linux/amd64 public.ecr.aws/lambda/python:${PYTHON_VERSION}
3
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
3
4
 
4
5
  WORKDIR /tmp
5
- RUN python -m pip install pip -U
6
+ COPY stac-api/runtime/uv.lock stac-api/runtime/pyproject.toml ./
7
+ COPY stac-api/runtime/src/ ./src/
8
+ COPY utils/utils.py /asset/
6
9
 
7
- COPY stac-api/runtime/requirements.txt requirements.txt
8
- RUN python -m pip install -r requirements.txt -t /asset --no-binary pydantic
10
+ RUN <<EOF
11
+ uv export --locked --no-editable --no-dev --format requirements.txt -o requirements.txt
12
+ uv pip install \
13
+ --compile-bytecode \
14
+ --no-binary pydantic \
15
+ --target /asset \
16
+ --no-cache-dir \
17
+ --disable-pip-version-check \
18
+ -r requirements.txt
19
+ EOF
9
20
 
10
- RUN mkdir -p /asset/src
11
- COPY stac-api/runtime/src/*.py /asset/
12
- COPY utils/utils.py /asset/
21
+ # Reduce package size and remove useless files
22
+ WORKDIR /asset
23
+ RUN <<EOF
24
+ dnf install -y findutils && \
25
+ dnf clean all && \
26
+ rm -rf /var/cache/dnf
27
+ find . -type f -name '*.pyc' | while read f; do n=$(echo $f | sed 's/__pycache__\///' | sed 's/.cpython-[0-9]*//'); cp $f $n; done;
28
+ find . -type d -a -name '__pycache__' -print0 | xargs -0 rm -rf
29
+ find . -type f -a -name '*.py' -print0 | xargs -0 rm -f
30
+ find . -type d -a -name 'tests' -print0 | xargs -0 rm -rf
31
+ EOF
13
32
 
14
33
  CMD ["echo", "hello world"]
@@ -0,0 +1,14 @@
1
+ [project]
2
+ name = "stac-api"
3
+ version = "0.0.0"
4
+ description = "stac-api runtime"
5
+ authors = [{ name = "hrodmn", email = "henry@developmentseed.org" }]
6
+ requires-python = ">=3.12"
7
+ dependencies = [
8
+ "stac-fastapi-pgstac[awslambda]>=6.0,<6.1",
9
+ "starlette-cramjam>=0.4,<0.5",
10
+ ]
11
+
12
+ [build-system]
13
+ requires = ["hatchling"]
14
+ build-backend = "hatchling.build"
@@ -0,0 +1,135 @@
1
+ """
2
+ Handler for AWS Lambda.
3
+ """
4
+
5
+ import asyncio
6
+ import os
7
+
8
+ from mangum import Mangum
9
+ from snapshot_restore_py import register_after_restore, register_before_snapshot
10
+ from stac_fastapi.pgstac.app import app, with_transactions
11
+ from stac_fastapi.pgstac.config import PostgresSettings
12
+ from stac_fastapi.pgstac.db import close_db_connection, connect_to_db
13
+ from utils import get_secret_dict
14
+
15
+ secret = get_secret_dict(secret_arn_env_var="PGSTAC_SECRET_ARN")
16
+ postgres_settings = PostgresSettings(
17
+ postgres_host_reader=secret["host"],
18
+ postgres_host_writer=secret["host"],
19
+ postgres_dbname=secret["dbname"],
20
+ postgres_user=secret["username"],
21
+ postgres_pass=secret["password"],
22
+ postgres_port=int(secret["port"]),
23
+ )
24
+
25
+ _connection_initialized = False
26
+
27
+
28
+ @register_before_snapshot
29
+ def on_snapshot():
30
+ """
31
+ Runtime hook called by Lambda before taking a snapshot.
32
+ We close database connections that shouldn't be in the snapshot.
33
+ """
34
+
35
+ # Close any existing database connections before the snapshot is taken
36
+ if hasattr(app, "state") and hasattr(app.state, "readpool") and app.state.readpool:
37
+ try:
38
+ app.state.readpool.close()
39
+ app.state.readpool = None
40
+ except Exception as e:
41
+ print(f"SnapStart: Error closing database readpool: {e}")
42
+
43
+ if hasattr(app, "state") and hasattr(app.state, "writepool") and app.state.writepool:
44
+ try:
45
+ app.state.writepool.close()
46
+ app.state.writepool = None
47
+ except Exception as e:
48
+ print(f"SnapStart: Error closing database writepool: {e}")
49
+
50
+ return {"statusCode": 200}
51
+
52
+
53
+ @register_after_restore
54
+ def on_snap_restore():
55
+ """
56
+ Runtime hook called by Lambda after restoring from a snapshot.
57
+ We recreate database connections that were closed before the snapshot.
58
+ """
59
+ global _connection_initialized
60
+
61
+ try:
62
+ # Get the event loop or create a new one
63
+ try:
64
+ loop = asyncio.get_running_loop()
65
+ except RuntimeError:
66
+ loop = asyncio.new_event_loop()
67
+ asyncio.set_event_loop(loop)
68
+
69
+ # Close any existing pool (from snapshot)
70
+ if hasattr(app.state, "readpool") and app.state.readpool:
71
+ try:
72
+ app.state.readpool.close()
73
+ except Exception as e:
74
+ print(f"SnapStart: Error closing stale readpool: {e}")
75
+ app.state.readpool = None
76
+
77
+ if hasattr(app.state, "writepool") and app.state.writepool:
78
+ try:
79
+ app.state.writepool.close()
80
+ except Exception as e:
81
+ print(f"SnapStart: Error closing stale writepool: {e}")
82
+ app.state.writepool = None
83
+
84
+ # Create fresh connection pool
85
+ loop.run_until_complete(
86
+ connect_to_db(
87
+ app,
88
+ postgres_settings=postgres_settings,
89
+ add_write_connection_pool=with_transactions,
90
+ )
91
+ )
92
+
93
+ _connection_initialized = True
94
+
95
+ except Exception as e:
96
+ print(f"SnapStart: Failed to initialize database connection: {e}")
97
+ raise
98
+
99
+ return {"statusCode": 200}
100
+
101
+
102
+ @app.on_event("startup")
103
+ async def startup_event():
104
+ """Connect to database on startup."""
105
+ print("Setting up DB connection...")
106
+ await connect_to_db(
107
+ app,
108
+ postgres_settings=postgres_settings,
109
+ add_write_connection_pool=with_transactions,
110
+ )
111
+ print("DB connection setup.")
112
+
113
+
114
+ @app.on_event("shutdown")
115
+ async def shutdown_event():
116
+ """Close database connection."""
117
+ print("Closing up DB connection...")
118
+ await close_db_connection(app)
119
+ print("DB connection closed.")
120
+
121
+
122
+ handler = Mangum(
123
+ app,
124
+ lifespan="off",
125
+ text_mime_types=[
126
+ # Avoid base64 encoding any text/* or application/* mime-types
127
+ "text/",
128
+ "application/",
129
+ ],
130
+ )
131
+
132
+
133
+ if "AWS_EXECUTION_ENV" in os.environ:
134
+ loop = asyncio.get_event_loop()
135
+ loop.run_until_complete(app.router.startup())