Gradle AWS S3中带有IAM策略的渐变单JAR依赖项
我有一个gradle构建文件,它需要一个特定的jar文件作为依赖项 jar文件驻留在AWS的S3存储桶中 gradle构建文件是在Jenkins上执行的,Jenkins box已经有一个IAM策略,允许它从S3上传和下载(我不控制该策略,所以我不能提供更多关于该策略的信息) 在我的gradle构建文件中,我将S3存储桶指定为存储库,如下所示:Gradle AWS S3中带有IAM策略的渐变单JAR依赖项,gradle,amazon-s3,amazon-iam,Gradle,Amazon S3,Amazon Iam,我有一个gradle构建文件,它需要一个特定的jar文件作为依赖项 jar文件驻留在AWS的S3存储桶中 gradle构建文件是在Jenkins上执行的,Jenkins box已经有一个IAM策略,允许它从S3上传和下载(我不控制该策略,所以我不能提供更多关于该策略的信息) 在我的gradle构建文件中,我将S3存储桶指定为存储库,如下所示: maven { url "s3://myBucket/myPath" credentials(AwsCredentials) {
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()
最后,我尝试在dependencies部分获取所需的JAR文件,如下所示:
testCompile files('myJarFile.jar')
当运行执行gradle构建的Jenkins作业时,它会从Jenkins实例中检索AWS凭据(因为没有捕捉到异常),但它不会获取JAR文件。
我已经尝试添加一个不存在的JAR文件作为依赖项,但是我没有从构建中得到任何找不到的错误
我的主要问题是,如何指定IAM策略而不是访问密钥和密钥?我检查了gradle文档,除了以下错误(如果我根本没有指定任何凭据),我看不到任何关于支持IAM身份验证的信息:
S3资源应该指定AWSIAMOUNTITION或提供一些AwsCredentials
[原文如此]
我还感兴趣的是,为什么使用实例凭据不起作用,以及为什么我在构建过程中没有收到一个错误,说明它找不到依赖项——我收到的错误是,由于缺少JAR文件依赖项,我的测试失败了
非常感谢您提供的任何信息。发布后不久,我在Gradle文档中找到了答案(以比我愿意承认的更清晰的视角) 我认为,将S3 bucket指定为存储库,然后尝试将JAR文件依赖项作为文件(testCompile文件)获取是不可能的 因为S3 bucket被定义为存储库,所以它需要完整的GAV描述 因此,我修改了依赖项,以测试编译“someGroup:someArtifact:someVersion@jar“现在,它将获得依赖性 我的测试仍然不起作用,但我认为这是另一个问题。现在,当我将JAR文件全部打印到控制台时,我可以将其作为依赖项列出
如果有人认为我是错误的,并且可以从S3存储桶中指定一个JAR文件而不是工件,我仍然会感兴趣,因为否则我需要将JAR文件转换为我试图避免的工件。发布后不久,我在Gradle文档中找到了答案(以比我愿意承认的更直白的观点) 我认为,将S3 bucket指定为存储库,然后尝试将JAR文件依赖项作为文件(testCompile文件)获取是不可能的 因为S3 bucket被定义为存储库,所以它需要完整的GAV描述 因此,我修改了依赖项,以测试编译“someGroup:someArtifact:someVersion@jar“现在,它将获得依赖性 我的测试仍然不起作用,但我认为这是另一个问题。现在,当我将所有测试打印到控制台时,我可以看到JAR文件作为依赖项列出
如果有人认为我是错误的,并且可以从S3存储桶中指定一个JAR文件而不是工件,我仍然会感兴趣,因为否则我需要将JAR文件转换为我试图避免的工件。你能分享Gradle文档链接吗?对不起,这是很久以前的事了,我记不起我在哪里看到过它他给出了相关的评论,加上它很可能是gradle 4或更早版本,所以现在可能与gradle 5不相关。没问题……我实际上在这里找到了相关文档:。我相信该部分的示例18解决了您的问题。您能分享gradle文档链接吗?对不起,这是很久以前的事了,我不记得在哪里看到相关的comment,加上它很可能是gradle 4或更早版本,因此现在可能与gradle 5无关。没问题……我实际上在这里找到了相关文档:。我相信该部分的示例18解决了您的问题。