如何使用Maven将构建成果部署到Amazon S3?

7

我正在尝试按照这些教程(12)来实现所述目标。但是我仍然从Maven得到以下错误:

INFO] Installing /home/valter/temp-workspace/document-engine/target/application-1.0.0.CI-SNAPSHOT.jar to /home/valter/.m2/repository/com/company-solutions/application/1.0.0.CI-SNAPSHOT/application-1.0.0.CI-SNAPSHOT.jar
[INFO] Installing /home/valter/temp-workspace/document-engine/pom.xml to /home/valter/.m2/repository/com/company-solutions/application/1.0.0.CI-SNAPSHOT/application-1.0.0.CI-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ application ---
Downloading: s3://myrepo.company.solutions/snapshot/com/company-solutions/application/1.0.0.CI-SNAPSHOT/maven-metadata.xml
[WARNING] s3://myrepo.company.solutions/snapshot - Connection refused
[WARNING] Could not transfer metadata com.company-solutions:application:1.0.0.CI-SNAPSHOT/maven-metadata.xml from/to s3.snapshot (s3://myrepo.company.solutions/snapshot): Could not connect to repository
[INFO] Logged off - myrepo.company.solutions
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:31 min
[INFO] Finished at: 2015-11-16T18:36:26+01:00
[INFO] Final Memory: 181M/1289M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project application: Failed to retrieve remote metadata com.company-solutions:application:1.0.0.CI-SNAPSHOT/maven-metadata.xml: Could not transfer metadata com.company-solutions:application:1.0.0.CI-SNAPSHOT/maven-metadata.xml from/to s3.snapshot (s3://myrepo.company.solutions/snapshot): Could not connect to repository: Status Code: 400, AWS Service: Amazon S3, AWS Request ID: 709B60A05E8E7062, AWS Error Code: InvalidRequest, AWS Error Message: The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

这些是我的本地文件,~.m2/settings.xml(当然是虚构的值):

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
      http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>s3.site</id>
            <username>access_key</username>
            <password>private_key</password>
        </server>
        <server>
            <id>s3.release</id>
            <username>access_key</username>
            <password>private_key</password>
        </server>
        <server>
            <id>s3.snapshot</id>
            <username>access_key</username>
            <password>private_key</password>
        </server>
    </servers>
</settings>

这是我的pom.xml文件:

<project>
    <build>
        <extensions>
            <extension>
                <groupId>org.kuali.maven.wagons</groupId>
                <artifactId>maven-s3-wagon</artifactId>
                <version>1.2.1</version>
            </extension>
        </extensions>
        ...
    </build>
    <distributionManagement>
        <site>
            <id>s3.site</id>
            <url>s3://myrepo.company.solutions/site</url>
        </site>
        <repository>
            <id>s3.release</id>
            <url>s3://myrepo.company.solutions/release</url>
        </repository>
        <snapshotRepository>
            <id>s3.snapshot</id>
            <url>s3://myrepo.company.solutions/snapshot</url>
        </snapshotRepository>
    </distributionManagement>
...
</project>

我正在使用Maven 3.3.3。 编辑 这是我的策略模拟器结果: enter image description here

s3://myrepo.company.solutions/snapshot - 连接被拒绝 - 您确定使用的IAM用户具有相关的S3权限吗?或者您确定所涉及的存储桶没有覆盖IAM策略中允许的权限的存储桶策略吗? - mickzer
@mickzer 是的,我确定我的IAM用户有权限在那个存储桶中执行所有操作,并且我的存储桶到目前为止没有任何策略。 - Valter Silva
1个回答

6

提醒大家一下发生了什么。问题出在我的存储桶所在的区域是法兰克福,它需要来自Amazon AWS的最新认证版本4. 据我所知,插件aws-maven目前不支持这个新版本。因此,解决方案是将我的存储桶移到另一个支持旧版方案的区域,例如US Standard。现在一切看起来都工作正常!


确切地说,我也遇到了同样的问题。顺便问一下,你有建立任何使用这个私有Maven仓库的Maven项目吗?如果是的话,在pom.xml文件的"repository"标签下你使用了什么URL呢?谢谢! - lost in binary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接