eoapi-cdk 11.4.1 → 11.6.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.
- package/.jsii +38 -23
- package/README.md +2 -0
- package/lib/bastion-host/index.js +1 -1
- package/lib/database/index.js +1 -1
- package/lib/ingestor-api/index.d.ts +4 -0
- package/lib/ingestor-api/index.js +8 -3
- package/lib/ingestor-api/runtime/Dockerfile +13 -9
- package/lib/ingestor-api/runtime/pyproject.toml +37 -0
- package/lib/ingestor-api/runtime/src/config.py +9 -0
- package/lib/ingestor-api/runtime/src/handler.py +27 -4
- package/lib/ingestor-api/runtime/src/ingestor.py +1 -1
- package/lib/ingestor-api/runtime/src/schemas.py +11 -19
- package/lib/ingestor-api/runtime/src/services.py +4 -2
- package/lib/ingestor-api/runtime/uv.lock +1313 -0
- package/lib/lambda-api-gateway/index.js +1 -1
- package/lib/lambda-api-gateway-private/index.js +1 -1
- package/lib/stac-api/index.js +2 -2
- package/lib/stac-api/runtime/README.md +36 -0
- package/lib/stac-api/runtime/pyproject.toml +2 -2
- package/lib/stac-api/runtime/src/stac_api/handler.py +82 -86
- package/lib/stac-api/runtime/uv.lock +206 -182
- package/lib/stac-auth-proxy/index.js +2 -2
- package/lib/stac-auth-proxy/runtime/pyproject.toml +2 -2
- package/lib/stac-auth-proxy/runtime/src/stac_auth_proxy_api/handler.py +25 -2
- package/lib/stac-auth-proxy/runtime/uv.lock +174 -248
- package/lib/stac-browser/index.js +1 -1
- package/lib/stac-loader/index.js +2 -2
- package/lib/stac-loader/runtime/Dockerfile +1 -0
- package/lib/stac-loader/runtime/src/stac_loader/handler.py +2 -25
- package/lib/stac-loader/runtime/uv.lock +251 -252
- package/lib/stactools-item-generator/index.js +1 -1
- package/lib/stactools-item-generator/runtime/uv.lock +79 -75
- package/lib/tipg-api/index.js +2 -2
- package/lib/tipg-api/runtime/pyproject.toml +1 -1
- package/lib/tipg-api/runtime/src/tipg_api/handler.py +85 -75
- package/lib/tipg-api/runtime/uv.lock +248 -243
- package/lib/titiler-pgstac-api/index.js +2 -2
- package/lib/titiler-pgstac-api/runtime/pyproject.toml +2 -2
- package/lib/titiler-pgstac-api/runtime/src/titiler_pgstac_api/handler.py +79 -50
- package/lib/titiler-pgstac-api/runtime/uv.lock +319 -280
- package/lib/utils/utils.py +49 -15
- package/package.json +4 -4
- package/pyproject.toml +4 -0
- package/uv.lock +475 -73
- package/lib/ingestor-api/runtime/dev_requirements.txt +0 -4
- package/lib/ingestor-api/runtime/requirements.txt +0 -10
|
@@ -47,7 +47,7 @@ class StacAuthProxyLambdaRuntime extends constructs_1.Construct {
|
|
|
47
47
|
}
|
|
48
48
|
exports.StacAuthProxyLambdaRuntime = StacAuthProxyLambdaRuntime;
|
|
49
49
|
_a = JSII_RTTI_SYMBOL_1;
|
|
50
|
-
StacAuthProxyLambdaRuntime[_a] = { fqn: "eoapi-cdk.StacAuthProxyLambdaRuntime", version: "11.
|
|
50
|
+
StacAuthProxyLambdaRuntime[_a] = { fqn: "eoapi-cdk.StacAuthProxyLambdaRuntime", version: "11.6.0" };
|
|
51
51
|
class StacAuthProxyLambda extends constructs_1.Construct {
|
|
52
52
|
constructor(scope, id, props) {
|
|
53
53
|
super(scope, id);
|
|
@@ -67,5 +67,5 @@ class StacAuthProxyLambda extends constructs_1.Construct {
|
|
|
67
67
|
}
|
|
68
68
|
exports.StacAuthProxyLambda = StacAuthProxyLambda;
|
|
69
69
|
_b = JSII_RTTI_SYMBOL_1;
|
|
70
|
-
StacAuthProxyLambda[_b] = { fqn: "eoapi-cdk.StacAuthProxyLambda", version: "11.
|
|
70
|
+
StacAuthProxyLambda[_b] = { fqn: "eoapi-cdk.StacAuthProxyLambda", version: "11.6.0" };
|
|
71
71
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFtQztBQUVuQyxpREFBaUQ7QUFFakQsMkNBQXVDO0FBQ3ZDLDhEQUF5RDtBQUN6RCxvQ0FBd0U7QUFDeEUsNkJBQTZCO0FBRTdCLE1BQWEsMEJBQTJCLFNBQVEsc0JBQVM7SUFHdkQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBc0M7UUFFdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLGtCQUFrQixFQUFFLEdBQzdDLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN4RCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxxQ0FBcUM7WUFDOUMsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVE7WUFDakQsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLEVBQUUsSUFBQSx5QkFBaUIsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQzVELElBQUksRUFBRSxvQ0FBb0M7Z0JBQzFDLFNBQVMsRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUU7YUFDdEMsQ0FBQztZQUNGLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLFVBQVUsRUFBRSxLQUFLLENBQUMsZUFBZTtZQUNqQyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLFdBQVcsRUFBRTtnQkFDWCx5QkFBeUI7Z0JBQ3pCLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDL0Isa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtnQkFFMUMsb0JBQW9CO2dCQUNwQixxQkFBcUIsRUFBRSxNQUFNO2dCQUM3QixtQkFBbUIsRUFBRSxXQUFXO2dCQUNoQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7b0JBQ3JELFFBQVEsRUFBRSxLQUFLLENBQUMsZUFBZTtvQkFDL0IsaUNBQWlDLEVBQUUsSUFBSTtpQkFDeEMsQ0FBQztnQkFFRixzQkFBc0I7Z0JBQ3RCLEdBQUcsS0FBSyxDQUFDLE1BQU07YUFDaEI7WUFDRCxpRUFBaUU7WUFDakUsR0FBRyxrQkFBa0I7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE3Q0gsZ0VBOENDOzs7QUEwQ0QsTUFBYSxtQkFBb0IsU0FBUSxzQkFBUztJQVdoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUU5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLDBCQUEwQixDQUM1QyxJQUFJLEVBQ0osU0FBUyxFQUNULFlBQVksQ0FDYixDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBRTdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLHFDQUFnQixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUM1RCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsVUFBVTtTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUksQ0FBQztRQUVwQixJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFO1lBQ2hELFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsc0JBQXNCO1lBQ2pFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWxDSCxrREFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0ICogYXMgYXBpZ2F0ZXdheXYyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTGFtYmRhQXBpR2F0ZXdheSB9IGZyb20gXCIuLi9sYW1iZGEtYXBpLWdhdGV3YXlcIjtcbmltcG9ydCB7IEN1c3RvbUxhbWJkYUZ1bmN0aW9uUHJvcHMsIHJlc29sdmVMYW1iZGFDb2RlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmV4cG9ydCBjbGFzcyBTdGFjQXV0aFByb3h5TGFtYmRhUnVudGltZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBsYW1iZGFGdW5jdGlvbjogbGFtYmRhLkZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogU3RhY0F1dGhQcm94eUxhbWJkYVJ1bnRpbWVQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgY29kZTogdXNlckNvZGUsIC4uLm90aGVyTGFtYmRhT3B0aW9ucyB9ID1cbiAgICAgIHByb3BzLmxhbWJkYUZ1bmN0aW9uT3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMubGFtYmRhRnVuY3Rpb24gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwibGFtYmRhXCIsIHtcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzEzLFxuICAgICAgaGFuZGxlcjogXCJzdGFjX2F1dGhfcHJveHlfYXBpLmhhbmRsZXIuaGFuZGxlclwiLFxuICAgICAgbWVtb3J5U2l6ZTogODE5MixcbiAgICAgIGxvZ1JldGVudGlvbjogY2RrLmF3c19sb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICBjb2RlOiByZXNvbHZlTGFtYmRhQ29kZSh1c2VyQ29kZSwgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiKSwge1xuICAgICAgICBmaWxlOiBcInN0YWMtYXV0aC1wcm94eS9ydW50aW1lL0RvY2tlcmZpbGVcIixcbiAgICAgICAgYnVpbGRBcmdzOiB7IFBZVEhPTl9WRVJTSU9OOiBcIjMuMTNcIiB9LFxuICAgICAgfSksXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnN1Ym5ldFNlbGVjdGlvbixcbiAgICAgIGFsbG93UHVibGljU3VibmV0OiB0cnVlLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgLy8gc3RhYy1hdXRoLXByb3h5IGNvbmZpZ1xuICAgICAgICBVUFNUUkVBTV9VUkw6IHByb3BzLnVwc3RyZWFtVXJsLFxuICAgICAgICBPSURDX0RJU0NPVkVSWV9VUkw6IHByb3BzLm9pZGNEaXNjb3ZlcnlVcmwsXG5cbiAgICAgICAgLy8gc3dhZ2dlci11aSBjb25maWdcbiAgICAgICAgT1BFTkFQSV9TUEVDX0VORFBPSU5UOiBcIi9hcGlcIixcbiAgICAgICAgU1dBR0dFUl9VSV9FTkRQT0lOVDogXCIvYXBpLmh0bWxcIixcbiAgICAgICAgU1dBR0dFUl9VSV9JTklUX09BVVRIOiBjZGsuU3RhY2sub2YodGhpcykudG9Kc29uU3RyaW5nKHtcbiAgICAgICAgICBjbGllbnRJZDogcHJvcHMuc3RhY0FwaUNsaWVudElkLFxuICAgICAgICAgIHVzZVBrY2VXaXRoQXV0aG9yaXphdGlvbkNvZGVHcmFudDogdHJ1ZSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgLy8gY3VzdG9taXplZCBzZXR0aW5nc1xuICAgICAgICAuLi5wcm9wcy5hcGlFbnYsXG4gICAgICB9LFxuICAgICAgLy8gb3ZlcndyaXRlcyBkZWZhdWx0cyB3aXRoIHVzZXItcHJvdmlkZWQgY29uZmlndXJhYmxlIHByb3BlcnRpZXNcbiAgICAgIC4uLm90aGVyTGFtYmRhT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNBdXRoUHJveHlMYW1iZGFSdW50aW1lUHJvcHMge1xuICAvKipcbiAgICogVVJMIHRvIHVwc3RyZWFtIFNUQUMgQVBJLlxuICAgKi9cbiAgcmVhZG9ubHkgdXBzdHJlYW1Vcmw6IHN0cmluZztcblxuICAvKipcbiAgICogVVJMIHRvIE9JREMgRGlzY292ZXJ5IEVuZHBvaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2lkY0Rpc2NvdmVyeVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPQXV0aCBDbGllbnQgSUQgZm9yIFN3YWdnZXIgVUkuXG4gICAqL1xuICByZWFkb25seSBzdGFjQXBpQ2xpZW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZQQyBpbnRvIHdoaWNoIHRoZSBsYW1iZGEgc2hvdWxkIGJlIGRlcGxveWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBpbnRvIHdoaWNoIHRoZSBsYW1iZGEgc2hvdWxkIGJlIGRlcGxveWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0U2VsZWN0aW9uPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogQ3VzdG9taXplZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2VuZCB0byBzdGFjLWF1dGgtcHJveHkgcnVudGltZS5cbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2RldmVsb3BtZW50c2VlZC9zdGFjLWF1dGgtcHJveHkvP3RhYj1yZWFkbWUtb3YtZmlsZSNjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBhcGlFbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBsYW1iZGEgZnVuY3Rpb24gcHJvcGVydGllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZpbmVkIGluIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFGdW5jdGlvbk9wdGlvbnM/OiBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzO1xufVxuXG5leHBvcnQgY2xhc3MgU3RhY0F1dGhQcm94eUxhbWJkYSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBVUkwgZm9yIHRoZSBTVEFDIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYW1iZGEgZnVuY3Rpb24gZm9yIHRoZSBTVEFDIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YWNBdXRoUHJveHlMYW1iZGFQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7IGRvbWFpbk5hbWUsIC4uLnJ1bnRpbWVQcm9wcyB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBydW50aW1lID0gbmV3IFN0YWNBdXRoUHJveHlMYW1iZGFSdW50aW1lKFxuICAgICAgdGhpcyxcbiAgICAgIFwicnVudGltZVwiLFxuICAgICAgcnVudGltZVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5sYW1iZGFGdW5jdGlvbiA9IHJ1bnRpbWUubGFtYmRhRnVuY3Rpb247XG5cbiAgICBjb25zdCB7IGFwaSB9ID0gbmV3IExhbWJkYUFwaUdhdGV3YXkodGhpcywgXCJzdGFjLWF1dGgtcHJveHlcIiwge1xuICAgICAgbGFtYmRhRnVuY3Rpb246IHJ1bnRpbWUubGFtYmRhRnVuY3Rpb24sXG4gICAgICBkb21haW5OYW1lLFxuICAgIH0pO1xuXG4gICAgdGhpcy51cmwgPSBhcGkudXJsITtcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwic3RhYy1hdXRoLXByb3h5LW91dHB1dFwiLCB7XG4gICAgICBleHBvcnROYW1lOiBgJHtjZGsuU3RhY2sub2YodGhpcykuc3RhY2tOYW1lfS1zdGFjLWF1dGgtcHJveHktdXJsYCxcbiAgICAgIHZhbHVlOiB0aGlzLnVybCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNBdXRoUHJveHlMYW1iZGFQcm9wc1xuICBleHRlbmRzIFN0YWNBdXRoUHJveHlMYW1iZGFSdW50aW1lUHJvcHMge1xuICAvKipcbiAgICogRG9tYWluIE5hbWUgZm9yIHRoZSBTVEFDIEFQSS4gSWYgZGVmaW5lZCwgd2lsbCBjcmVhdGUgdGhlIGRvbWFpbiBuYW1lIGFuZCBpbnRlZ3JhdGUgaXQgd2l0aCB0aGUgU1RBQyBBUEkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lPzogYXBpZ2F0ZXdheXYyLklEb21haW5OYW1lO1xufVxuIl19
|
|
@@ -4,14 +4,37 @@ Handler for AWS Lambda.
|
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
6
|
import os
|
|
7
|
+
from typing import Any
|
|
7
8
|
|
|
8
9
|
from mangum import Mangum
|
|
9
10
|
from stac_auth_proxy import create_app
|
|
10
11
|
|
|
12
|
+
|
|
13
|
+
def _ensure_event_loop() -> asyncio.AbstractEventLoop:
|
|
14
|
+
"""Return the current event loop, creating and installing one if needed."""
|
|
15
|
+
try:
|
|
16
|
+
return asyncio.get_running_loop()
|
|
17
|
+
except RuntimeError:
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
try:
|
|
21
|
+
return asyncio.get_event_loop()
|
|
22
|
+
except RuntimeError:
|
|
23
|
+
loop = asyncio.new_event_loop()
|
|
24
|
+
asyncio.set_event_loop(loop)
|
|
25
|
+
return loop
|
|
26
|
+
|
|
27
|
+
|
|
11
28
|
app = create_app()
|
|
12
|
-
|
|
29
|
+
_asgi_handler = Mangum(app, lifespan="off")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def handler(event: Any, context: Any) -> dict[str, Any]:
|
|
33
|
+
"""Handle AWS Lambda events with a guaranteed current event loop."""
|
|
34
|
+
_ensure_event_loop()
|
|
35
|
+
return _asgi_handler(event, context)
|
|
13
36
|
|
|
14
37
|
|
|
15
38
|
if "AWS_EXECUTION_ENV" in os.environ:
|
|
16
|
-
loop =
|
|
39
|
+
loop = _ensure_event_loop()
|
|
17
40
|
loop.run_until_complete(app.router.startup())
|