Car*_*fan 1 java linux amazon-s3 amazon-web-services
在 Stackoverlfow 中找到了一些涵盖相同错误的主题,但场景与我的不符。有一个 AWS s3 java 客户端程序,可以在 Windows 上正常运行,将文件上传到 s3 存储桶。现在尝试在 Linux (Ubuntu) 服务器上运行相同的程序,并收到此错误
com.amazonaws.services.s3.model.AmazonS3Exception:授权标头格式错误;区域“us-east-1”是错误的;期待“eu-west-2”(服务:Amazon S3;状态代码:400;错误代码:AuthorizationHeaderMalformed;请求 ID:
我将 .aws\credentials 文件从 Windows 笔记本电脑上传到服务器上的 ~/.aws/ 目录。没有做任何改变。在与 AWS 上的 IAM 进行交叉检查后,我确认我拥有正确的凭证密钥。
这是设置区域 AmazonS3 s3Client 的代码(是的,它是硬编码的);私有静态最终字节[] BUFFER =新字节[4096 * 1024];
public FileUpload() {
s3Client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build();
}
Run Code Online (Sandbox Code Playgroud)
我在 AWS 控制台中手动创建了存储桶,它位于 us-east-1 区域。
我需要 ~/.aws 下的配置文件吗?Windows 笔记本电脑上没有
我认为这是 AWS 的愚蠢的事情之一,它给出了一些误导性的错误。当我在AWS控制台中创建存储桶名称时,没有出现该存储桶名称已存在于其他区域的错误,因此我认为一切正常。因此,刚才我删除了该存储桶并创建了一个新存储桶,并在存储桶名称中使用了我的帐户名称的一部分,以确保它在各个区域中是唯一的。这次从Linux系统上传成功了。因此最终无需在 Linux 服务器上重做任何配置。
| 归档时间: |
|
| 查看次数: |
21438 次 |
| 最近记录: |