我对使用AWS非常陌生,我正在学习AWS提供的使用putObject的示例https://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpPHP.html
在这一点上,我所尝试的只是使用AWS SDK将任何对象html" target="_blank">上传到我的S3桶,就像在示例中一样,但是我得到一个错误,说400坏请求(完整输出如下)。我试图写入的桶是故意不公开的,因为我不想整个桶都是可访问的。我不确定这是否是问题所在,但是如果是,我不确定如何给我的代码访问权限来写入桶,留档也没有这方面的例子。如果这不是问题所在,那么我不确定还有什么地方可能出错。
我已经编辑了我的php,包括我试图访问的bucket和我自己的keyname,据我所知,这应该是上传对象后要使用的文件名。不过,我一直会遇到这样的错误:
错误输出:
在https://frank-transcribe-mediaconvert.s3.amazonaws.com/032420-test-upload.txt上执行PutObject出错;AWS HTTP错误:客户端错误:PUThttps://frank-transcribe-mediaconvert.s3.amazonaws.com/032420-test-upload.txt
导致400错误请求
响应:InvalidToken提供的令牌格式错误或其他(截断...)InvalidToken(客户端):提供的令牌格式错误或无效。-InvalidToken提供的令牌格式错误或无效。
以下是我的php代码:
<?php
require 'vendor/autoload.php';
use Aws\Sts\StsClient;
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = 'frank-transcribe-mediaconvert';
$keyname = date('mdy') . '-test-upload.txt';
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-1'
]);
try {
// Upload data.
$result = $s3->putObject([
'Bucket' => $bucket,
'Key' => $keyname,
'Body' => 'Hello, world!',
'ACL' => 'public-read'
]);
// Print the URL to the object.
echo $result['ObjectURL'] . PHP_EOL;
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
?>
你的上传代码看起来很好。让bucket可写不是一个好的做法,从你的问题中我推断,你也没有将其设置为公开可写。
因此,只要您不是在可以通过IAM角色对API进行身份验证的AWS实例上运行此操作,您就必须将凭据传递给S3客户端。
以下是这些文件的摘录:
php prettyprint-override">$credentials = new Aws\Credentials\Credentials('key', 'secret');
$s3 = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-west-2',
'credentials' => $credentials
]);
代码中的“键”是文件名,这是正确的(S3将自己视为键值对象存储,其中目录和文件名是键,值是文件内容,这就是它被称为键的原因)。
但是,凭据的“密钥”与机密一起是可以使用IAM设置的AWS访问密钥。如果您不知道如何做到这一点,我建议您阅读AWS文档中的管理访问密钥(控制台)。
还请注意,您为其创建访问密钥(密钥和机密)的IAM用户确实需要具有适当的权限才能通过S3执行您想要执行的操作。
我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:
目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示:
我正在尝试搜索亚马逊的产品广告,并使用botlenose来帮助我做到这一点。但是,我刚刚收到HTTP错误400。 其他一些重要信息: 我来自巴西,我的标签也来自亚马逊。这是个问题吗? 我确实检查了我的钥匙、秘密和标签,一切正常。我确实在StackOverflow上查看了其他一些问题,但对我来说没有任何效果。 当然,出于安全原因,我更改了密钥。 Traceback(最近一次调用最后一次):File"
我正在使用实现一个联系人应用程序。现在,我正试图通过发送以下格式的put请求来更新联系人 我将XML作为字符串发送,作为请求的主体。这是我的xmlString(请求主体) 我写了下面的代码来发送更新联系人的PUT请求。 当我试图在中发送请求时,联系人更新成功。但是当我试图运行上面的程序时,我得到了 400错误请求错误 我不知道我哪里出错了。任何帮助都将不胜感激!
目标是通过ajax将对象发送到另一台服务器,这是我为CORS设置的,下面是代码。ajax代码片段: 正确发布数据,但使用
我正在为一个项目使用Hackerrank API。查看官方文档,点击这里! 在他们的网站上有一个使用UNIREST的例子, 由于我使用的是axios,所以我将其转换为类似的axios代码,如下所示: 我希望这只适用于示例中所示的示例,但它给我带来了以下错误: 请求失败,状态代码为400 错误:请求失败,状态代码为400 在createError(createError.js:16) 在sett(s