我有一个Datomic云/离子项目,我无法在另一台计算机上工作。只是键入clj
希望进入 REPL 失败,出现以下异常(由包含链引起;省略堆栈跟踪;为清楚起见,格式化(:
Error building classpath. Failed to read artifact descriptor for com.datomic:ion:jar:0.9.34
org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for com.datomic:ion:jar:0.9.34
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact com.datomic:ion:pom:0.9.34 from/to datomic-cloud (s3://datomic-releases-1fc2183a/maven/releases): Unable to load AWS credentials from any provider in the chain
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.datomic:ion:pom:0.9.34 from/to datomic-cloud (s3://datomic-releases-1fc2183a/maven/releases): Unable to load AWS credentials from any provider in the chain
Caused by: com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain
如果我注释掉deps.edn
文件中的com.datomic/ion
依赖项,依赖项将下载,我可以成功访问 REPL。
为什么在包含 Ion 依赖项时获取依赖项失败?
问题是 Ions 代码中的某个地方使用 AWS 开发工具包从 S3 Maven 存储库获取 Maven 依赖项。这要求用户具有"读取公开可用的 S3 存储桶"权限。因此,请确保:
- 您在 AWS 上有一个账户,
- 您的凭据在本地可用(请参阅
aws configure
命令(,并且 - 您的 AWS 用户没有因为某种奇怪的原因错过该权限(默认情况下应包含该权限(。