【问题标题】:Website to read list of S3 objects from AWS从 AWS 读取 S3 对象列表的网站
【发布时间】:2018-03-21 00:55:03
【问题描述】:

我需要制作一个像 HTML + 简单 JS/CSS 一样简单的网页,但它需要从特定 S3 存储桶中读取对象(文件)列表。

我完成了前端部分,但为了获取 s3 对象列表 - 我需要发出命令 aws s3 ls -> 以便从 S3 获取文件列表,但这需要每 1-2 小时使用一次 AWS 令牌。或者我可以从 EC2 运行命令,将用户添加到某个角色,然后在没有令牌的情况下从那里运行。

理想情况下,网站将托管在某些 AWS 服务(S3、CloudFront...)上,而不是 EC2 上。 如何实现上述目标(不在 EC2 上托管)?

【问题讨论】:

  • 浏览器需要使用AWS SDK:aws.amazon.com/sdk-for-browser
  • 假设您需要向网页提供凭据或构建已经具有凭据的服务器端计算,您是否考虑简单地使用客户端上的 awscli 或 Cloudberry Explorer 之类的工具获取对象列表?

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


【解决方案1】:

创建一个生成 S3 签名 URL 的 Lambda。这样,它将具有可扩展性和安全性。你需要一个外部进程来为你创建一个签名的 url,Lambda 适合这个目的。

var params = {Bucket: 'bucket', Key: 'key'};
var url = s3.getSignedUrl('getObject', params);
console.log('The URL is', url);

文档:

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property

CloudFront -- APIGateway -- Lambda

希望对你有帮助。

【讨论】:

  • 谢谢.. 第一行中的“bucket”是什么 - 存储桶的名称?
  • 添加了文档参考。
【解决方案2】:

在进行访问控制之后,有多种方法可以授予对私有 S3 存储桶的访问权限。

  • 使用 AWS Cognito 联合身份来联合访问 AWS S3。
  • 使用 AWS STS 由您的后端生成临时访问令牌(从 EC2 或 API Gateway 和 Lambda 生成)。
  • 使用 S3 签名 URL(从 EC2 或 API Gateway 和 Lambda 生成)。
  • CloudFront 签名 URL 或签名 Cookie(从 EC2 或 API Gateway 和 Lambda 生成)。

更多详情请参考文章Upload files Securely to AWS S3 Directly from Browser

【讨论】:

    猜你喜欢
    • 2015-08-23
    • 2017-06-29
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    相关资源
    最近更新 更多