Closed luanromeu closed 2 years ago
In KrakenD, the lua VM runs into the vacuum and has no access to the system itself, so the libraries os
and io
are unavailable.
But you can achieve your goal if you use flexible configuration and then pass the value of the envar as an argument to your function:
{
"endpoint": "/lua",
"backend":[
{
"url_pattern": "/__debug/lua",
"host": ["http://127.0.0.1:8080"]
}
],
"extra_config": {
"modifier/lua-proxy": {
"pre": "your_function('{{ env "YOUR_ENVAR" }}')"
}
}
},
Cheers!
My endpoint inside endpoints on krakend.json { "endpoint": "/v1/api-biotech/extraction/{biometricMethod}", "method": "POST", "output_encoding": "no-op", "extra_config": { "documentation/openapi": { "version": "1.0" } }, "backend": [{ "url_pattern": "/api-biotech/extraction/{biometricMethod}", "extra_config": { "modifier/lua-backend": { "sources": ["rbac.lua"], "pre": "access_check()", "allow_open_libs": true } }, "encoding": "no-op", "sd": "static", "method": "POST", "host": ["http://host.docker.internal:3000"], "disable_host_sanitize": false }], "input_headers": ["*"] }
Inside my docker-compose.yml i'am set the enviroment rbac_global_server
krakend_ce: image: krakend container_name: krakend_ce ports:
"8080:8080" environment: rbac_global_server: http://host.docker.internal:12180
command: ['run', '-c', '/etc/krakend/krakend.json']
Inside my rbac.lua script i'am trying get enviroment variable like this
function access_check() rbac_global_server = os.getenv("rbac_global_server") print(rbac_global_server ) end
But when execute i'am received this error
2022/09/21 13:31:03 [Recovery] 2022/09/21 - 13:31:03 panic recovered: krakend_ce | runtime error: slice bounds out of range [-1:] krakend_ce | /usr/local/go/src/runtime/panic.go:118 (0xeb2f74) krakend_ce | /go/pkg/mod/github.com/alexeyco/binder@v0.0.0-20180729220023-2a21303f588a/error.go:140 (0x1813e16) krakend_ce | /go/pkg/mod/github.com/alexeyco/binder@v0.0.0-20180729220023-2a21303f588a/binder.go:27 (0x1812886) krakend_ce | /go/pkg/mod/github.com/alexeyco/binder@v0.0.0-20180729220023-2a21303f588a/error.go:201 (0x181430f) krakend_ce | /go/pkg/mod/github.com/alexeyco/binder@v0.0.0-20180729220023-2a21303f588a/binder.go:43 (0x1812828) krakend_ce | /go/pkg/mod/github.com/alexeyco/binder@v0.0.0-20180729220023-2a21303f588a/binder.go:26 (0x18127b8) krakend_ce | /go/pkg/mod/github.com/krakendio/krakend-lua/v2@v2.0.1/proxy/proxy.go:74 (0x181a5d3) krakend_ce | /go/pkg/mod/github.com/luraproject/lura/v2@v2.0.5/proxy/balancing.go:77 (0x120d210) krakend_ce | /go/pkg/mod/github.com/luraproject/lura/v2@v2.0.5/proxy/http.go:113 (0x12124c1) krakend_ce | /go/pkg/mod/github.com/luraproject/lura/v2@v2.0.5/router/gin/endpoint.go:42 (0x19b0b93) krakend_ce | /go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/context.go:168 (0x19a64c1) krakend_ce | /go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/recovery.go:99 (0x19a64ac) krakend_ce | /go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/context.go:168 (0x19a5726) krakend_ce | /go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/logger.go:241 (0x19a5709) krakend_ce | /go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/context.go:168 (0x19a4a90) krakend_ce | /go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/gin.go:555 (0x19a46f8) krakend_ce | /go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/gin.go:511 (0x19a4231) krakend_ce | /go/pkg/mod/github.com/rs/cors@v1.6.0/cors.go:207 (0x210a437) krakend_ce | /usr/local/go/src/net/http/server.go:2047 (0x11ad90e) krakend_ce | /go/pkg/mod/github.com/rs/cors@v1.6.0/cors.go:207 (0x210a437) krakend_ce | /usr/local/go/src/net/http/server.go:2047 (0x11ad90e) krakend_ce | /usr/local/go/src/net/http/server.go:2879 (0x11b13ba) krakend_ce | /usr/local/go/src/net/http/server.go:1930 (0x11ac9e7) krakend_ce | /usr/local/go/src/runtime/asm_amd64.s:1581 (0xee91e0