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

将文件上载到S3 Bucket时出现AWS SDK NoSuchBucket错误

许博
2023-03-14

尝试将文件上载到S3 Bucket,我使用以下代码设置SDK:

<?php

use Aws\S3\S3Client;

use Aws\Exception\AwsException;

try {

    require 'vendor/autoload.php';

    $s3 = new Aws\S3\S3Client([
        'region'  => 'us-east-1',
        'version' => 'latest',
        'credentials' => [
            'key'    => "KEY",
            'secret' => "SECRET",
        ]
    ]);

    $result = $s3->putObject([
        'Bucket' => 'bucketname',
        'Key'    => 'test.txt',
        'SourceFile' => 'test.txt'
    ]);

    var_dump($result);

} catch (\Throwable $th) {
    echo $th;
}

错误日志

AWS HTTP error: Client error: `PUT https://bucketname.s3.amazonaws.com/test.txt` resulted in a `404 Not Found` response: NoSuchBucketThe specified bucket does not exist

可能的错误:

URL应基于以下表单:文档

https://s3.Region.amazonaws.com/bucket-name/key name

共有1个答案

汤才捷
2023-03-14

我认为问题在于S3客户端本身。下面是文档PutObject中的示例。php


use Aws\S3\S3Client;  
use Aws\Exception\AwsException;
....
try {
    //Create a S3Client
    $s3Client = new S3Client([
        'profile' => 'default',
        'region' => 'us-west-2',
        'version' => '2006-03-01'
    ]);
    $result = $s3Client->putObject([
        'Bucket' => $bucket,
        'Key' => $key,
        'SourceFile' => $file_Path,
    ]);
} catch (S3Exception $e) {
    echo $e->getMessage() . "\n";
}
 类似资料:
  • 我测试了.NET web API,postman正在工作,但我尝试在Android中使用okhttp3和retrofit2。我都收到了内部服务器错误500。怎么了?我该怎么办? 分级 实现“com.squareup.okhttp3:okhttp:3.4.1” 实现“com.squareup.okhttp3:logging-interceptor:3.4.1” 实现“com.squareup.rev

  • 在CKAN 2.4.1中,install datapusher和.csv文件上传到datastore是正确的,但是当test.xls或.xlsx文件上传到datastore失败时,datapusher搜索文件字段头时,在datapusher.error.log中: 配置文件中:ckan.datapusher.formats=csv xls xlsx tsv application/csv appl

  • 我试图使用以下命令将第三方jar部署到sonatype nexus存储库: 我得到以下错误: [error]在当前项目和插件组[org.apache.maven.plugins,org.codehaus.mojo]中找不到前缀“–Durl=http”的插件,这些插件组可从中央存储库[local(/Users/ssurendran/.m2/repository)获得(https://repo.mav

  • 我想使用HttpClient4.3.1上传一个文件。我需要添加一个inputstream来控制上传进度。)而不是文件对象。这是我的代码: 使用MultiPartEntityBuilder.addBinaryBody(Strin,File)方法可以工作,但使用MultiPartEntityBuilder.addBinaryBody(Strin,InputStream)方法则不起作用。 为什么new

  • 有人能帮我弄清楚发生了什么吗? 我正在尝试加载测试一个用户可以上传和下载文件的应用程序。 旅程: 步骤1:当用户从磁盘选择文件(POST请求)时,它会创建一个文件ID和带有uuid的路径。 响应如下: 第2步:使用这些(POST请求),它用s3 uri响应,并带有评估码ID、秘书访问码和会话令牌。 响应如下:

  • 问题:我正在按照本指南通过Spring MVC上传文件:https://Spring.io/guides/gs/uploading-files/。但是,当我这样做时,当我通过.jsp页面上的表单上传一个文件时,我总是会收到以下错误: HTTP状态400-所需的字符串参数“name”不存在 类型状态报告 message Required字符串参数“name”不存在 描述客户端发送的请求语法不正确。