【发布时间】:2021-05-04 20:18:54
【问题描述】:
我是 AWS 服务的新手,我对这个服务很感兴趣: 我有一个代码可以让我上传和下载存储桶中的对象,但是当我尝试使用 AWS S3 SSE-KMS(默认选项) 加密存储桶时,它似乎不起作用。
目前我有这个作为我的客户:
$s3Client = new Aws\S3\S3Client([
'credentials' => $credentials,
'region' => 'eu-west-1',
'version' => 'latest',
]);
//Upload an object while using the Server Side Encryption:
$result = $s3->putObject([
'Bucket' => $bucket,
'SourceFile' => $_FILES['file']['tmp_name'], //Via a input type submit. (PHP Form)
'ServerSideEncryption' => 'AES256',
]);
通过这些设置,我应该能够将 putObject 放入我的 s3 加密存储桶中,但是当我执行订单 (putObject) 时,页面会一直等待某些东西并且无法完成请求。 我在这里缺少什么?我很乐意听取别人的建议。
很棒的社区!
编辑 1: 要上传由 ssk-kms 密钥加密的对象,请使用
//Upload an object while using the Server Side Encryption:
$result = $s3->putObject([
'Bucket' => $bucket,
'Key' => $key,
'SourceFile' => $_FILES['file']['tmp_name'], //Via a input type submit. (PHP Form)
'ServerSideEncryption' => 'AES256',
]);
尝试使用getObjectUrl 方法检索加密对象:
echo $url = $s3->getObjectUrl($bucket, $folderUser);
但它会检索类似的 XML,
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>1iejr93i2u5ka00</RequestId>
<HostId>fn3hhuFGYjkQI/sCeQVddddd631d213i21jidfeoihga45146363das40E=</HostId>
</Error>
【问题讨论】:
-
您的 putObject 调用缺少属性,尤其是 Key。
-
嘿@jarmod 就是这样,但是现在,如果我从对象中获取 url,我无法下载它,因为它是加密的。你知道我怎样才能下载加密的对象吗?谢谢...
-
您应该添加用于获取对象 URL 的代码以及您尝试下载对象的方式。
-
好的 @jarmod 给我 2 分钟,并用代码更新问题以检索“下载”链接。无论如何,非常感谢您留在这里并回答我的愚蠢问题,感谢像您这样的人:)
-
我已经用我用来检索存储对象的 url 的简单代码进行了编辑。 @jarmod
标签: php amazon-web-services amazon-s3 sdk