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

Amazon S3-如何修复“我们计算的请求签名与签名不匹配”错误?

阴焱
2023-03-14

我正在尝试用以下代码连接到我的Amazon S3 bucket:

// Create a `Aws` object using a configuration file
$aws = Aws::factory('config.php');

// Get the client from the service locator by namespace
$s3Client = $aws->get('s3');

$bucket = "xxx";
$keyname = "xxx";

try {
    $result = $s3Client->putObject(array(
        'Bucket' => $bucket,
        'Key' => $keyname,
        'Body' => 'Hello World!'
    ));

    $file_error = false;
} catch (Exception $e) {
    $file_error = true;

    echo $e->getMessage();

    die();
}

我的config.php文件如下:

return [
    // Bootstrap the configuration file with AWS specific features
    'includes' => ['_aws'],
    'services' => [
        // All AWS clients extend from 'default_settings'. Here we are
        // overriding 'default_settings' with our default credentials and
        // providing a default region setting.
        'default_settings' => [
            'params' => [
                'credentials' => [
                    'key'    => 'key',
                    'secret' => 'secret'
                ]
            ]
        ]
    ]
];

它将产生以下错误:

共有1个答案

谭梓
2023-03-14

经过两天的调试,终于发现了问题……

我分配给对象的键以句点开始,即..\images\abc.jpg,这导致了错误的发生。

我希望API提供更多有意义和相关的错误信息,唉,我希望这能帮助其他人!

 类似资料:
  • 我正在按照示例指南使用python发送电子邮件,并得到一个错误,该错误表示“我们计算的请求签名与您提供的签名不匹配。请检查您的AWS秘密访问密钥和签名方法。”问题是我没有自签任何东西。博托应该在后端处理所有这些。 翻看关于S3 buckets的类似问题的评论,很多人对他们键中的特殊字符有困难。一个人说这个问题是关键的a+。我尝试创建新凭据,因为我的凭据确实有+。新的凭据中有一个/,相反,我得到的错

  • 我正试图上传一张使用AWS S3 SDK的图片。现在,这以前是有效的,但由于某种原因,它停止了工作,我开始得到这个错误: 现在,当我点击链接时,它会给我一个'NoSuchKey'错误: 我真的不明白这一点,因为我的键实际上只是一个字符串。我也试图上传一些东西,所以显然关键不会存在-我正在努力上传它! 另一个教程来自一个博客,我没有它的链接,但我上面的代码与文档中的这个教程相同。我所做的只是把它移到

  • 我有不同的对象来生成保存在S3中的文件。每个对象调用以下函数来保存文件。 我只有以下几个问题。对象要么总是保存文件,要么永远无法保存文件。 错误是 我们计算的请求签名与您提供的签名不匹配。检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅REST身份验证和SOAP身份验证。(服务:S3,状态代码:403,请求ID:79b6c0a2-0d74-1f30-a4bf-246e9631ccd8,扩

  • 从过去的3天,我被困在同一个问题的签名。我不明白如何走出这一步。 我正在尝试获取一个预签名的网址: 我使用这个预先签名的url将图像文件上传到s3存储桶中,方法是: 并且该文件已成功上传到 s3 存储桶,我可以在 aws s3 存储桶控制台中看到。 问题是,如果我尝试从终端使用curl放置任何其他图像文件,或者尝试在浏览器中打开url,我得到的预签名url会给我带来签名不匹配错误。 如果我做错了,

  • 我试图按照教程HTTP://docs.aws.amazon.com/amazons3/latest/api/sigv4-post-example.html使用HTTP post方法将图像上传到s3 bucket。但我每次都得到以下错误 政策如下: 生成策略和签名的代码将粘贴到相关的表单字段中:

  • 我想从网站content.geappliances.io使用AWS API网关得到响应,但总是得到错误: {“信息”:"我们计算的请求签名与您提供的签名不匹配。请检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。\n\n此请求的规范字符串应为\n'GET\n/search/b2b/results\n\n内容类型:\n host:content.geapplications.io\