java - AmazonS3Exception:授权标头格式错误;该地区是错误的
问题描述
在 Stackoverlfow 中找到了一些涵盖相同错误的主题,但场景与我的不匹配。有一个 AWS s3 java 客户端程序,在将文件上传到 s3 存储桶时在 Windows 上运行良好。现在尝试在 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 的代码(是的,它是硬编码的);私有静态最终字节[]缓冲区=新字节[4096 * 1024];
public FileUpload() {
s3Client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build();
}
我在 AWS 控制台中手动创建了存储桶,它位于 us-east-1 区域。
我需要 ~/.aws 下的配置文件吗?Windows 笔记本电脑上没有
解决方案
我认为这是 AWS 的愚蠢之处之一,它会产生一些误导性的错误。当我在 AWS 控制台中创建存储桶名称时,没有错误表明存储桶名称已存在于另一个区域中,因此我认为一切都很好。所以刚才我删除了存储桶并创建了一个新存储桶,并在存储桶名称中使用了我的部分帐户名称,以确保它在区域之间是唯一的。这次从 Linux 系统上传成功了。所以最终不必对 Linux 服务器上的配置重做任何事情。
推荐阅读
- powershell - 即使在将字符串写入主机之后,变量也是一个空字符串
- react-native - 在另一个 fetch 中使用从 promise 返回的数据不起作用
- html - 材料 ui 复选框 css 以角度覆盖组件
- typescript - 如何更改 m3u8 文件中的 .ts 文件名
- typescript - 打字稿推理无法正常工作
- jquery - 每次运行函数时设置 cookie 并递增
- perl - 在读取文件的每一行以创建视图 ddl 时匹配变量名
- if-statement - 从 Google 表格中的另一张表格调用多个单元格
- python - 堆叠图像的python代码运行速度极慢,寻找加快速度的建议
- python - 是否可以将 python 代码与 tkinter 和 sqlite3 数据库包捆绑到 exe 可执行文件中