0

我正在使用来自https://github.com/rbrigham/s3-signed-url的示例来生成 S3 预签名 url。当我访问生成的 url 时,出现以下错误:

 <Error>
<Code>AccessDenied</Code>
<Message>
Query-string authentication requires the Signature, Expires and AWSAccessKeyId parameters
</Message>
<RequestId>60F1F4F2EC1B24BB</RequestId>
<HostId>
dhHvqSpTqXn1e01TKXAKV8+pzPZkNKGcuCYEuyYMvViRvLdbxpe2ml9Po66t+tboRMPhClmYQe8=
</HostId>
</Error>

谁能告诉我我还缺少什么?

我有包含点字符的存储桶名称,并且必须使用 SSL 证书,所以我需要基于 PATH 的 s3 url。

我是否需要对我的 IAM 用户/s3 存储桶设置任何特定权限?我拥有 S3 的所有权限(我有 aws 完全管理员访问权限 iam 策略集)。

前网址:

https://s3-eu-west-1.amazonaws.com/<bucket_name>/<object>?Signature=xxxxxxxxxxxxxxxxxxxx&AWSAccessKeyId=xxxxxxxxxxxxxxxxxxx&Expires=1000000%
4

1 回答 1

0

要在 Perl 中实现这一点,请使用Amazon::S3::SignedURLGenerator

use Amazon::S3::SignedURLGenerator;

my $generator = Amazon::S3::SignedURLGenerator->new(
    aws_access_key_id     => $aws_access_key_id,
    aws_secret_access_key => $aws_secret_access_key,
    prefix => 'https://mybucket.s3.amazonaws.com',
    expires => 600, # 10 minutes
);

my $url = $generator->generate_url('GET', 'path/file.txt', {});
于 2018-11-08T03:33:22.643 回答