首页 文章

使用IAM角色从ec2中使用curl从s3中检索文件

提问于
浏览
1

我创建了一个IAM角色并将其分配给我的ec2实例 . 我创建了一个IAM角色策略并将其链接到我的s3存储桶 . 我现在可以使用ec2实例上的aws-cli列出我的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

现在,如果我尝试 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

有没有办法让这个 curl 请求工作而不放松对s3存储桶的权限?像身份验证, Headers 等等 .

1 回答

  • 2

    对Amazon S3的GET请求需要使用AWS Signature v4authorization string .

    见:GET Object

    或者,您可以创建一个Pre-Signed URL,它具有额外的参数并授予对Amazon S3对象的时间限制访问权限 . 您可以使用几行代码生成预签名URL,然后将其提供给用户(或在HTML页面中使用它),以授予对存储在Amazon S3中的私有对象的临时访问权限 .

    当然,从Amazon S3检索数据的最简单方法是使用API调用或AWS Command-Line Interface (CLI) .

相关问题