Chalice部署S3事件触发项目时报InvalidArgument错误怎么解决?
错误根因
这个错误出现的核心原因是:S3存储桶所在的AWS区域,与Chalice自动创建部署的Lambda函数(S3事件通知的目标服务)所在的区域不一致,AWS要求S3事件通知的直接目标服务必须和S3桶处于同一区域。
解决步骤
- 第一步:查询目标S3桶的实际所在区域,可执行命令
aws s3api get-bucket-location --bucket <替换为你的S3桶名>,或者直接在AWS S3控制台的桶「属性」页面查看「AWS区域」字段值。 - 第二步:修改Chalice项目的区域配置,打开项目根目录下
.chalice/config.json文件,将配置中的region字段值修改为和S3桶完全相同的区域代码,示例配置如下:
{ "version": "2.0", "app_name": "s3-event-source", "region": "us-east-1", // 此处替换为你的S3桶实际区域代码 "stages": { "dev": { "autogen_policy": true } } }
- 第三步:如果之前已经在错误区域发起过部署,先执行
chalice delete清理旧区域的残留资源,避免后续部署出现资源冲突。 - 第四步:重新执行
chalice deploy即可完成正常部署。
跨区域部署方案(可选)
如果你确实需要将Lambda函数部署在和S3桶不同的区域,不能直接配置S3事件通知,可通过同区域EventBridge做中转:先将S3事件投递到同区域的EventBridge总线,再配置跨区域事件路由将事件转发到目标区域的Lambda函数,该场景需要手动修改Chalice的IAM策略配置,新增EventBridge相关调用权限。
内容的提问来源于stack exchange,提问作者Thirumal
相关产品推荐
相关产品推荐

