上传和下载加密对象

Uploading and Downloading an encrypted object

我是 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>

快速总结问题和解决方案以便接受此答案:

  1. 缺少 putObject 调用 Key,这是 S3 对象键
  2. 包含 getObjectUrl 调用 $folderUser,它应该是 S3 对象键
  3. 要能够使用 getObjectUrl 返回的 URL,对象(或存储桶)必须是 public
  4. 如果您不希望该对象成为 public,请改为创建并共享一个 pre-signed URL