chalice
chalice copied to clipboard
Why doesn't {proxy+} work as catchall ?
app = Chalice(app_name='chalice-proxy-example')
@app.route('/')
def index():
return {"message": "Welcome to the root endpoint!"}
@app.route('/resource/{proxy+}', methods=['GET', 'POST'])
def resource_proxy(proxy):
# proxy contains the path information.
# For instance, if you access /resource/a/b/c, proxy will be "a/b/c"
return {
"message": "You've accessed the proxy endpoint.",
"path": proxy
}
I have tried all combinations and I can't figure out why a generic catch all work. I probably miss something super basic, but at a point where I may have to move to something else. This is such a super great framework, if I could get a reverse proxy type setup working! Can anyone help please ?
$ curl http://127.0.0.1:8000/
{"message":"Welcome to the root endpoint!"}
$ curl http://127.0.0.1:8000/1
{"message": "Missing Authentication Token"}
On chalice, I see 127.0.0.1 - - [09/Sep/2023 15:02:09] "GET /1 HTTP/1.1" 403 -
It happens because here
https://github.com/aws/chalice/blob/79838b02dc330cfe549823899d2662ded0538015/chalice/app.py#L1832-L1839
resource_path is ..../{proxy*} and not .../{proxy+} which fails to get the key from dict...