【问题标题】:Gradle Single JAR Dependency from AWS S3 with IAM Policy使用 IAM 策略从 AWS S3 Gradle 单个 JAR 依赖项
【发布时间】: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


    【解决方案1】:

    所以在发布后不久,我在 Gradle 文档中找到了答案(比我愿意承认的更清晰......)

    我认为将 S3 存储桶指定为存储库,但随后尝试将 JAR 文件依赖项作为文件(testCompile 文件)是不可能的。

    由于 S3 存储桶被定义为存储库,因此它需要完整的 GAV 描述。

    因此,我将我的依赖项修改为 testCompile "someGroup:someArtifact:someVersion@jar",它现在获取了依赖项。

    我的测试仍然无法正常工作,但我认为这是另一个问题。当我将它们全部打印到控制台时,我现在可以看到 JAR 文件列为依赖项。

    如果有人认为我不正确并且可以从 S3 存储桶中指定单个 JAR 文件而不是工件,我仍然会感兴趣,否则我需要将 JAR 文件转换为我的工件尽量避免。

    【讨论】:

    • 你能分享 Gradle 文档链接吗?
    • 抱歉,这是很久以前的事了,我不记得我在哪里看到了相关评论,而且很可能是 gradle 4 或更早版本,所以现在可能与 gradle 5 无关。
    • 没问题...我实际上在这里找到了相关文档:docs.gradle.org/current/userguide/…。我相信该部分中的示例 18 解决了您的问题。
    猜你喜欢
    • 2012-11-23
    • 2014-12-11
    • 2021-02-25
    • 2020-05-24
    • 2016-06-05
    • 2020-08-19
    • 2019-11-16
    • 1970-01-01
    • 2017-06-09
    相关资源
    最近更新 更多