vin*_*i_f 4 amazon-s3 amazon-ec2 amazon-web-services
我创建了一个 IAM 角色并将其分配给我的 EC2 实例。我创建了一个 IAM 角色策略并将其链接到我的 S3 存储桶。我现在可以使用aws-cliEC2 实例上的列出我的 S3 存储桶中的文件。
[root@ec2.hostname.aws.com ~]# aws --region eu-west-1 s3 ls s3://s3-bucket-name
2017-05-02 02:37:39 137 index.html
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试访问curl该文件,则会收到拒绝访问错误:
[root@ec2.hostname.aws.com ~]# curl https://s3-eu-west-1.amazonaws.com/s3-bucket-name/index.html
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>782176F442A4995A</RequestId><HostId>qZWZTXZdlgtD4BiVYfp5+Mj/gU3UXRiYQmsSyaAhwED1JtzUWs9QKE99RmsQ6w0uDB
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以让这个curl请求工作而不放宽 S3 存储桶的权限?诸如身份验证、标头等之类的东西。
对 Amazon S3 的 GET 请求需要使用AWS Signature v4的授权字符串。
请参阅:获取对象
或者,您可以创建一个具有额外参数的预签名 URL,并授予对 Amazon S3 对象的限时访问权限。您可以使用几行代码生成预签名 URL,然后将其提供给用户(或在 HTML 页面中使用)以授予对存储在 Amazon S3 中的私有对象的临时访问权限。
当然,从 Amazon S3 检索数据的最简单方法是使用 API 调用或AWS 命令行界面 (CLI)。
| 归档时间: |
|
| 查看次数: |
6277 次 |
| 最近记录: |