我正在使用https://github.com/rbrigham/s3-signed-url中的示例来生成S3预先签名的网址。 当我访问生成的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网址。
我是否需要在IAM用户/ s3存储桶上设置任何特定权限?我拥有S3的所有权限(我有完整的管理员访问iam策略集)。
Ex url:
https://s3-eu-west-1.amazonaws.com/<bucket_name>/<object>?Signature=xxxxxxxxxxxxxxxxxxxx&AWSAccessKeyId=xxxxxxxxxxxxxxxxxxx&Expires=1000000%
答案 0 :(得分: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', {});