当前位置: 首页 > 知识库问答 >
问题:

AmazonS3Exception:授权标头格式不正确;这个地区是错误的

谷越
2023-03-14

找到了一些主题,涵盖了相同的错误在堆栈重叠,但场景不匹配我的。有一个AWS s3 java客户端程序,在将文件上传到s3桶的窗口上运行良好。现在尝试在Linux(Ubuntu)服务器上运行相同的程序,并得到这个错误

com.amazonaws.services.s3.model.Amazon S3异常:授权标头格式错误;区域us-East-1错误;需要eu-West-2(服务:Amazon S3;状态代码:400;错误代码:AuthorizationHeader畸形;请求ID:

我将.aws\credentials文件从Windows笔记本电脑上载到服务器上的~/.aws/目录。没有做任何改变。在AWS上与IAM交叉检查后,我确认我拥有正确的凭证密钥。

下面是设置AmazonS3 s3Client区域的代码(是的,它是硬编码的);私有静态最终字节[]缓冲区=新字节[4096*1024];

public FileUpload() {
    s3Client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build();
}

我在AWS控制台中手动创建了bucket,它位于us-east-1地区。

我是否需要~/.aws下的配置文件?Windows笔记本电脑上没有

共有2个答案

聂永怡
2023-03-14

请注意,Windows文件具有不同的行尾字符CRLF,这可能会在Linux中导致错误。

显然AWS SDK认为你所在的地区是美国西部2号。不要从windows PC复制.aws目录,而是从头开始在linux机箱中设置aws配置。

  1. 删除或备份.aws目录,并确保没有~/.aws。
$ aws configure
AWS Access Key ID [None]: <YOUR AWS ID>
AWS Secret Access Key [None]: <YOUR KEY>
Default region name [None]: us-east-1      <----- Region
Default output format [None]: json         <----- change to the format you prefer

请花足够的时间来完成配置AWS CLI。如果不了解基础知识和AWS配置的工作方式,您将花费大量时间来解决问题。

然后用AWS CLI s3命令从linux盒测试你的S3桶,比如在S3桶中列出文件如果s3命令不起作用,你的Java程序就不可能起作用。

  • 在AWS CLI中使用AmazonS3
宋铭
2023-03-14

我认为这是AWS的一个愚蠢的事情,它给出了一个有点误导性的错误。当我在AWS控制台中创建桶名时,没有错误表明桶名已经存在于另一个区域中,所以我假设一切都很好。所以刚才我删除了桶,创建了一个新的桶,并在桶名称中使用了我的部分帐户名称,以确保它在不同地区是唯一的。这次从Linux系统上传工作。因此,最终不必在Linux服务器上重做任何配置。

 类似资料:
  • 我不明白为什么我一直收到这个错误消息: 在此行中找到多个注释: < li >文档中根元素后面的标记必须格式良好。 < li >错误:解析XML时出错:文档元素后的垃圾信息 该错误在下面的开头找到: XML:

  • 使用Wireshark,我看到iOS飞利浦远程电视应用程序与我的飞利浦电视交谈,运行他们的新os Saphi发送一些HTTP请求,授权标题如下: 授权:基本1:ZmVay1EQVFOaZhwQ4Kv81ypLAZNczV9sG4KkseXWn1NEk6cXmPKO/MCA9SRYSLVLCFMNNE4C4C4PxZTOOWVHVA== 我相信“1”是用户ID,它与带有“:”的长密码分开。 在维基百

  • 我有XML数据在数据库(不是文件),我需要解析它,以提供可能写测试来验证数据在XML xml(内容数据): [致命错误]:14:2:根元素后面的文档中的标记必须格式良好。org.xml.sax.SaxParseException;亚麻编号:14;专栏编号:2;根元素后面的文档中的标记必须格式良好。位于com.sun.org.apache.xerces.internal.parsers.dompar

  • 我尝试使用JQuery Ajax进行基本身份验证。我像这样向ajax请求添加授权标头。 然后在ASP. Net Web服务中,我尝试获取此标头。 当我打印到标题时,我看不到授权标题 缓存控制:无缓存连接:保持活动状态Pragma:无缓存接受:接受编码:gzip,deflate接受语言:tr tr,tr;q=0.9,en-US;q=0.8,en;q=0.7主机:示例。com参考:http://loc

  • 我正在使用令牌式认证过程。客户端获得令牌后,它或者被设置在客户端的cookies中(对于Web),或者被设置在客户端请求的授权头中(对于移动设备)。但是,为了获得有效的令牌,客户端必须首先使用有效的用户名/密码组合“登录”。我的问题是: 通过在授权标头中发送用户名/密码组合与作为请求的JSON正文中的参数(假设我使用的是HTTPS)是否有任何额外的安全性? 我只需要在每次会话中发送用户名/密码组合

  • 运行迁移命令时出现错误。 这是管理表模式 另一个是laravel安装附带的用户表。 我想为user_id创建一个外键,但它会出错