问题标签 [chalice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 测试一个将圣杯与 moto 一起使用的 lambda?
我想使用 boto3、moto、pytest 在本地测试我的 lambda。这个 lambda 正在使用圣杯。当我调用该函数时,我尝试插入一个假事件以使其运行,但它仍然缺少上下文对象。
如果有人知道如何以最干净的方式对其进行测试,那就太好了。
- 我试图在我的 s3 中添加对象并从中检索事件
- 我试图模拟假事件
这是我要测试的 lambda。感谢您的回复。
amazon-web-services - Chalice 生成哪种类型的 API 网关?区域优化还是边缘优化?
我在我的项目中多次使用AWS Chalice 。最近,我的一位客户想要为 API 网关创建一个自定义域。我检查了文档,发现 AWS API 网关端点可以是边缘优化的,也可以是区域性的。我们需要针对这两种类型的端点执行不同的步骤。
我浏览了 AWS Chalice文档,但找不到 Chalice 生成的 API 端点类型。它是边缘优化的还是区域性的?
python - 圣杯框架:请求未指定带有图像/jpeg 的 Accept 标头
我想从 Chalice/python 应用程序返回一个图像。我的整个应用程序代码粘贴在下面:
结果...
{"Code":"BadRequest","Message":"请求未指定带有 image/jpeg 的 Accept 标头,响应的 Content-Type 为 image/jpeg。如果响应具有二进制 Content-Type,则请求必须指定匹配的 Accept 标头。"}
为什么会这样?
我已经翻阅了大量文档,其中大部分已经过时,因为最近向 Chalice 添加了二进制支持:
- https://github.com/aws/chalice/pull/352
- https://github.com/aws/chalice/issues/592
- https://github.com/aws/chalice/issues/348
- AWS Chalice 从 S3 返回一个图像文件(警告:这个问题的唯一答案是完全错误的)
- https://chalice.readthedocs.io/en/latest/api.html
- https://github.com/aws/chalice/issues/391(问题在 2017 年错误关闭,没有解决方案)
- https://github.com/aws/chalice/issues/1095是上面391的重开
仅出于故障排除的目的,我可以通过使用来获得响应curl -H "accept: image/jpeg"
,但这没用,因为浏览器不能以这种方式工作,我需要在浏览器中使用响应(HTML IMG TAG)。
更新
我也试过@app.route('/makeImage', methods=['GET'], content_types=['image/jpeg'])
结果变成了{"Code":"UnsupportedMediaType","Message":"Unsupported media type: application/json"}
python - 如何从 github 上的 master 分支安装 pip 模块?
我已经开始使用 Python Chalice 框架,我发现我需要一个在不到 24 小时前通过这个 PR 合并到框架主分支中的错误修复:
https://github.com/aws/chalice/pull/1116
我对 Python 模块的体验仅限于打字pip install
和观看魔术的发生。我怎样才能直接从 GitHub 的主分支安装 Chalice?
python - 如何在同一个 Chalice 应用程序中从不同的路由返回图像和 json?
我有这个最低限度完整的、可验证的示例 Chalice 应用程序:
就目前而言,/get-photo
路由工作正常,但/echo
端点在调用时失败curl -H "Content-Type: application/json" -X POST -d '{"test":1}' https://...
如果我删除app.api.binary_types =['*/*']
,那么/echo
工作正常,但我遇到了Chalice Framework 中描述的问题:请求没有指定带有 image/jpeg 的 Accept 标头
我怎样才能让这两条路线在同一个应用程序中工作?
amazon-web-services - AWS - 从 VPC 内的 Lambda 函数向 SQS 发送消息
我在 VPC 中使用 AWS Chalice 托管了一个 Lambda 函数,因为我希望它访问无服务器 Aurora 数据库实例。现在我还希望这个函数将send_message() 发送到SQS。
我遵循教程:从 Amazon Virtual Private Cloud 向 Amazon SQS 队列发送消息,并且能够从我的 EC2 内部调用 SQS。但即便如此,我也无法使用我的 Lambda 函数来调用 SQS。
如果有人能真正告诉我如何手动完成整个工作而不是使用 CloudFormation 堆栈,或者至少告诉我如何让 SQS 端点正常工作,那将非常有帮助。
amazon-web-services - AWS Chalice - 发送文件作为响应
我目前通过以下方式设置 API。
现在,当使用运行此代码时,我可以毫无问题地下载此处创建的文件。但是,在将其部署到我的 AWS 账户后,API 端点允许我下载一个文件,但它包含我想要的文件的二进制字符串。我阅读了一些其他帖子,这些帖子表明将 contentHandling 路径更新为 CONVERT_TO_BINARY (请参阅此处的答案),我这样做了,然后从 API Gateway 内部重新部署了 API(而不是通过 chalice deploy)。它仍然显示相同的行为。
有没有办法解决这个问题?
python - 与 AWS Chalice 一起使用时,自定义授权器不起作用
我正在使用 AWS Custom Authorizer 来保护 lambda 函数。由于一些配置问题,我无法使用自定义授权方。
当我尝试从 API Gateway 控制台附加授权方时,它工作正常。当授权人从代码中附加时,它不会给出任何错误。我尝试检查 cloudwatch 日志,没有为 lambda 函数生成日志(对于授权者和 helloworld 函数)。
以下是我编写的示例代码:
我已配置以下策略:
我无法将授权方添加到 lambda 函数。当我触发端点时,它给了我以下错误:
端点:https://{rest-api-id}.execute-api.{region}.amazonaws.com/dev/test/test_authorizer
Http方法:GET
错误代码:500。
错误正文:
{ "message": null }
我怎样才能做到这一点。请给我正确的情报。
python - "chalice deploy" 调用以 "Unknown parameter in input: "Layers" 结尾
我创建了最基本的圣杯应用程序
带有空的 requirements.txt 和如下所示的配置:
首次部署后立即触发错误
这是我收到的错误:
创建部署包。IAM 角色的更新策略:testApp-dev 更新 lambda 函数:testApp-dev Traceback(最后一次调用):文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages \chalice\cli__init__.py",第 466 行,在主返回 cli(obj={}) 文件中“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\click\ core.py”,第 722 行,调用中 返回 self.main(*args, **kwargs) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\click\core.py”,第 697 行,在main rv = self.invoke(ctx) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\click\core.py”,第 1066 行,在调用中返回 _process_result (sub_ctx.command.invoke(sub_ctx)) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\click\core.py”,第 895 行,调用返回ctx.invoke(self.callback, **ctx.params) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\click\core.py”,第 535 行,在调用返回回调(*args,**kwargs)文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\click\decorators.py”,第17行,在 new_func 返回 f(get_current_context(), *args, **kwargs) 文件 "c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\chalice\cli__init__.py",第 202 行,在 deploy deploy_values = d.deploy(config, chalice_stage_name=stage) File "c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\chalice\deploy\deployer. py”,第 342 行,在部署中返回 self._deploy(config, chalice_stage_name) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\chalice\deploy\deployer. py”,第 355 行,在 _deploy self._executor.execute(plan) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\chalice\deploy\executor.py ", 第 31 行, 在执行 self._default_handler)(instruction) 文件 "c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\chalice\deploy\executor.py”,第 43 行,在 _do_apicall 结果 = 方法(**final_kwargs)文件“c:\ users\vic\appdata\local\programs\python\python37-32\lib\site-packages\chalice\awsclient.py”,第 283 行,在 update_function layers=layers 文件“c:\users\vic\appdata\local\程序\python\python37-32\lib\site-packages\chalice\awsclient.py”,第 352 行,在 _update_function_config max_attempts=self.LAMBDA_CREATE_ATTEMPTS 文件“c:\users\vic\appdata\local\programs\python\python37- 32\lib\site-packages\chalice\awsclient.py”,第 1009 行,在 _call_client_method_with_retries 响应 = 方法(**kwargs)文件“c:\users\vic\appdata\local\programs\python\python37-32\lib \site-packages\botocore\client.py",第 314 行,在 _api_call 返回 self._make_api_call(operation_name, kwargs) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\client.py”,第 586 行,在 _make_api_call api_params, operation_model, context=request_context) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\client.py”,第 621 行,在 _convert_to_request_dict api_params, operation_model ) 文件“c:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\validate.py”,第 291 行,在 serialize_to_request 中引发 ParamValidationError(report=report.generate_report() ) botocore.exceptions.ParamValidationError:参数验证失败:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\client.py”,第 586 行,在 _make_api_call api_params, operation_model, context=request_context) 文件“c:\users\ vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\client.py”,第 621 行,在 _convert_to_request_dict api_params, operation_model) 文件“c:\users\vic\appdata\local\programs \python\python37-32\lib\site-packages\botocore\validate.py",第 291 行,在 serialize_to_request 中引发 ParamValidationError(report=report.generate_report()) botocore.exceptions.ParamValidationError:参数验证失败:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\client.py”,第 586 行,在 _make_api_call api_params, operation_model, context=request_context) 文件“c:\users\ vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\client.py”,第 621 行,在 _convert_to_request_dict api_params, operation_model) 文件“c:\users\vic\appdata\local\programs \python\python37-32\lib\site-packages\botocore\validate.py",第 291 行,在 serialize_to_request 中引发 ParamValidationError(report=report.generate_report()) botocore.exceptions.ParamValidationError:参数验证失败:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\client.py”,第 621 行,在 _convert_to_request_dict api_params, operation_model) 文件“c:\users\vic\appdata\ local\programs\python\python37-32\lib\site-packages\botocore\validate.py",第 291 行,在 serialize_to_request 中引发 ParamValidationError(report=report.generate_report()) botocore.exceptions.ParamValidationError:参数验证失败:\users\vic\appdata\local\programs\python\python37-32\lib\site-packages\botocore\client.py”,第 621 行,在 _convert_to_request_dict api_params, operation_model) 文件“c:\users\vic\appdata\ local\programs\python\python37-32\lib\site-packages\botocore\validate.py",第 291 行,在 serialize_to_request 中引发 ParamValidationError(report=report.generate_report()) botocore.exceptions.ParamValidationError:参数验证失败:
输入中的未知参数:“Layers”,必须是以下之一:FunctionName、Role、Handler、Description、Timeout、MemorySize、VpcConfig、Environment、Runtime、DeadLetterConfig、KMSKeyArn、TracingConfig、RevisionId
http - 未设置 Set-Cookie(本地 DEV 环境)
这是关于 localhost 上的 set-cookie 的另一个问题。在 localhost 上使用 cookie 时,我面临着与这里的许多其他人相同的问题。这是我的设置:
- 我在“ https://app.web.product ”之类的 url 上本地运行 reactjs 应用程序。我的主机文件将所有请求从 app.web.product 指向 127.0.0.1。
- 我的 REST 服务托管在http://127.0.0.1:8000上(使用 AWS chalice)。每个响应都返回标头“Access-Control-Allow-Origin: https://app.web.product ”,以确保请求从我的 Web 应用程序通过。
- REST 服务也返回标头“Set-Cookie: name=value; domain=app.web.product”,但是,cookie 永远不会被持久化。我在所有浏览器中都试过了。在 Edge/IE 中,我至少可以在响应标头中看到 cookie 已被识别。在 Chrome 中,甚至不显示 set-cookie 响应标头。
我尝试在 https 和与 Web 应用程序相同的域名上运行我的 REST 服务,只是使用不同的端口。但是,出于某种原因,AWS chalice 不允许我正确运行 https。但是,我认为这不会解决问题,因此我停止了进一步调查。
有任何想法吗?