【发布时间】:2017-10-20 20:28:15
【问题描述】:
我有一个 gradle 构建文件,它需要某个 jar 文件作为依赖项。
jar 文件位于 AWS 上的 S3 存储桶中。
gradle 构建文件在 Jenkins 上执行,并且 Jenkins 盒子已经有一个 IAM 策略允许它从 S3 上传和下载(我不控制该策略,所以我无法提供更多信息) .
在我的 gradle 构建文件中,我将 S3 存储桶指定为存储库,如下所示:
maven {
url "s3://myBucket/myPath"
credentials(AwsCredentials) {
accessKey = awsCredentials.AWSAccessKeyId
secretKey = awsCredentials.AWSSecretKey
}
}
目前我提供的 AWS 凭证是这样获取的:
def fetchAwsCredentials = {
try {
return new InstanceProfileCredentialsProvider(false)
} catch (Exception e) {
println("unable to get credentials: " + e.getMessage())
}
}
AWSCredentials awsCredentials = fetchAwsCredentials().getCredentials()
最后我尝试在依赖项部分获取所需的 JAR 文件,如下所示:
testCompile files('myJarFile.jar')
在运行执行 gradle 构建的 Jenkins 作业时,它可以从 Jenkins 实例中检索 AWS 凭证(因为没有捕获到异常),但它根本不会获取 JAR 文件。 我已经尝试添加一个不存在的 JAR 文件作为依赖项,但我没有从构建中得到找不到它的错误。
我的主要问题是,如何指定 IAM 策略而不是访问密钥和秘密密钥?我检查了 gradle 文档,看不到任何关于支持 IAM 身份验证的信息,如果我根本没有指定任何凭据,则会出现以下错误:
S3 资源应指定 AwsIamAutentication 或提供一些 AwsCredentials
[原文]
我也很感兴趣为什么使用实例凭据不起作用,以及为什么我在构建过程中没有收到错误说明它找不到依赖项 - 我得到的错误是我的测试由于缺少而失败JAR 文件依赖。
感谢任何信息,谢谢。
【问题讨论】:
标签: gradle amazon-s3 amazon-iam