我有一个gradle构建文件,它需要某个jar文件作为依赖项。带有IAM策略的AWS S3的Gradle单JAR依赖关系
该jar文件位于AWS存储区中的S3存储桶中。
在Jenkins上执行gradle构建文件,并且Jenkins盒已经有一个IAM策略,允许它从S3上传和下载(我不控制策略,因此我无法提供关于该策略的更多信息)。
在我gradle这个build文件我指定的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')
运行Jenkins执行gradle构建的工作,它从Jenkins实例中检索AWS凭证(因为没有捕获异常),但它不会提取JAR文件。 我已经尝试添加一个不存在的JAR文件作为依赖项,并且我从构建中得到了无法找到的错误。
我的主要问题是,我如何指定IAM策略而不是访问密钥和密钥?我已经检查gradle这个文件并不能看到任何关于支持IAM认证,比下面的错误之外,如果我不指定任何凭据都:
S3资源要么指定AwsIamAutentication或者提供一些AwsCredentials
[原文]
我也很感兴趣,为什么使用实例凭据不起作用,为什么我没有在生成过程中得到一个错误,说明它无法找到的依赖 - 我得到的错误是我的由于缺少JAR文件相关性,测试失败。
任何信息赞赏,谢谢。