AWS S3初始化Datomic Cloud Client API报Unable to read keyfile错误求助
该报错可能由凭证配置问题引发,也存在多个非凭证类的常见诱因,具体如下:
凭证类诱因
- 本地默认AWS凭证对应的IAM实体缺少目标S3路径的
s3:GetObject权限:Datomic Cloud部署时生成的密钥存储桶默认仅对部署时使用的IAM实体开放权限,你当前使用的默认凭证对应的IAM用户/角色未被授予对应路径的访问权限,就会触发403报错。 - 凭证所属AWS账号不匹配:如果本地默认凭证所属的AWS账号,和Datomic Cloud部署所在的AWS账号不是同一个,哪怕凭证本身有效也会无权限,可先核对两边的账号ID是否一致。
非凭证类诱因
:server-type配置错误:你的代码里填写的是:server-type :cloud,目前Datomic Cloud的客户端统一使用:ion作为该参数值,使用旧值:cloud会触发错误的鉴权逻辑,哪怕凭证正确也会报S3访问失败。- Endpoint配置缺失后缀:你从CloudFormation取出的ClientApiGatewayEndpoint通常会带有
/prod这类部署阶段后缀,若你粘贴时遗漏了该后缀,会导致请求路由错误,进而触发鉴权失败报错。 - System名称不匹配:配置中的
:system "roam"需要和你部署Datomic Cloud时填写的系统名称完全一致,大小写、拼写都不能有偏差,名称错误会导致客户端去错误的S3路径拉取密钥文件,触发无权限报错。
快速排查方法
你可以直接用本地默认AWS凭证执行CLI命令验证权限:
aws s3 cp s3://<报错中提示的.keys文件完整路径> ./test.key
如果该命令同样返回403,则可确定是凭证权限问题;如果可以正常下载文件,则排查上文提到的配置类错误即可。
内容的提问来源于stack exchange,提问作者terraforme
相关产品推荐
相关产品推荐

