Jenkins AWS Steps 身份验证错误访问 s3

Jenkins AWS Steps authentication error accessing s3

背景

我正在尝试将文件上传到 Jenkins 中的 AWS S3 存储桶。我正在使用 AWS Steps 插件提供的 steps/closures。我正在使用 Access Key IDAccess Key Secret 并将其分别作为用户名和密码存储在 Credential 中经理.

代码

下面是我在声明性管道脚本中使用的代码

sh('echo "test" > someFile')
            
withAWS(credentials:'AwsS3', region:'us-east-1') {
    s3Upload(file:'someFile', bucket:'ec-sis-integration-test',  acl:'BucketOwnerFullControl')
}
            
sh('rm -f someFile')

这是凭据的屏幕截图,因为它们全局存储在凭据管理器中。

问题

每当我 运行 管道时,我都会收到以下错误

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 5N9VEJBY5MDZ2K0W; S3 Extended Request ID: AJmuP635cME8m035nA6rQVltCCJqHDPXsjVk+sLziTyuAiSN23Q1j5RtoQwfHCDXAOexPVVecA4=; Proxy: null), S3 Extended Request ID: AJmuP635cME8m035nA6rQVltCCJqHDPXsjVk+sLziTyuAiSN23Q1j5RtoQwfHCDXAOexPVVecA4=

有谁知道为什么这不起作用?

故障排除

我已经通过我编写的一个小型 Java 应用程序对其进行测试,从而验证了访问密钥 ID 和访问密钥秘密组合是否有效。此外,我通过 Java 系统属性(通过脚本控制台)设置了 id/secret,但仍然出现相同的错误。

System.setProperty("aws.accessKeyId", "<KEY_ID>")
System.setProperty("aws.secretKey", "<KEY_SECRET>")

我还尝试将凭证管理器类型从 username/password 更改为 aws 凭证,如下所示。没有区别

这可能是存储桶和对象所有权问题。检查您使用的凭据是否允许您上传到存储桶 ec-sis-integration-test。