amazon-web-services - 使用 IAM 角色从 EC2 使用 curl 从 S3 检索文件

标签 amazon-web-services amazon-s3 amazon-ec2

我创建了一个 IAM 角色并将其分配给我的 EC2 实例。我创建了一个 IAM 角色策略并将其链接到我的 S3 存储桶。我现在可以使用 aws-cli 列出我的 S3 存储桶中的文件在我的 EC2 实例上。

[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 存储桶权限的情况下请求工作?诸如身份验证, header 等之类的东西。

最佳答案

对 Amazon S3 的 GET 请求需要 授权字符串 使用 AWS Signature v4 .

见:GET Object

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

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

关于amazon-web-services - 使用 IAM 角色从 EC2 使用 curl 从 S3 检索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43729615/

相关文章:

amazon-web-services - 在 CloudFormation 中部署 AWS::EKS::Nodegroup 时向 EC2 实例添加名称

android - 将 ProGuard 与适用于 Android 的 AWS 开发工具包结合使用时出错

amazon-web-services - 我应该担心 Amazon S3 上的位翻转吗?

amazon-web-services - terraform 后端 s3 存储桶创建返回 403 w/Terraform 0.11.1

amazon-web-services - 属性 VPCZoneIdentifier 的值必须为字符串列表类型

swift - 升级 Xcode 后如何修复 'Cannot override a self return type with a non-self return type'

amazon-web-services - 胶水作业无法写入文件

linux - 亚马逊AWS机器无法连接

linux - 无法在 aws ec2 linux 上切换到 jenkins 用户?

amazon-web-services - 如何在 aws lambda 函数中创建具有多个函数的类