问题标签 [pre-signed-url]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
590 浏览

ios - 使用 Amazon PreSigned URL 上传图像每次 iOS 都会给出状态码 400

观点 :

  • 我正在使用我的 iOS 应用程序中的 Amazon Pre-Signed URL 上传图像
  • 现在的问题是我每次上传时都会收到状态码 400
  • 如果运行良好,它应该给出 204 状态码
  • 预签名 URL 在 Postman 上测试时效果很好,但在 App 端不起作用。

这是实现:

响应代码:

问题 :

  • 我的问题是,在使用 Amazon Pre-Signed URL 上传文件时我们需要设置什么吗?或者我们可以像普通的 API 调用一样实现它?
  • 据我所知,它应该像普通 API 一样以类似的方式实现
  • 请让我得到任何提示,或者如果我在请求格式中做错了什么

提前致谢。

0 投票
1 回答
665 浏览

amazon-web-services - 如何使用 perl 生成 S3 预签名 URL?

我正在使用来自https://github.com/rbrigham/s3-signed-url的示例来生成 S3 预签名 url。当我访问生成的 url 时,出现以下错误:

谁能告诉我我还缺少什么?

我有包含点字符的存储桶名称,并且必须使用 SSL 证书,所以我需要基于 PATH 的 s3 url。

我是否需要对我的 IAM 用户/s3 存储桶设置任何特定权限?我拥有 S3 的所有权限(我有 aws 完全管理员访问权限 iam 策略集)。

前网址:

0 投票
1 回答
127 浏览

ios - iOS - 将文件传输到 HTTP 请求

我正在尝试使用预签名的请求将一个大的(比如不适合内存)文件上传到 S3。我终于让它与 curl 一起工作

我现在正试图从我的应用程序中做到这一点。我首先尝试使用 AF(我不想使用):

打印一个实际上是错误的成功响应:

我在一些地方读到标题可能存在问题,无论如何我都不想在这里使用 AF。

Swift 中的等价物是curl -T filePath url什么?

0 投票
1 回答
1165 浏览

google-cloud-storage - 如何以多个块将文件上传到谷歌存储?

我正在尝试以多个块将文件上传到谷歌存储但签名的 URL。

以下是我正在遵循的步骤:

  1. 使用 Node.js 创建可恢复上传 URL。

示例网址:https://www.googleapis.com/upload/storage/v1/b/MYBUCKET/o?name=sdk2.txt&uploadType=resumable&upload_id=AEnB2UrmFY9CKwkHFxsYdT71LcWa0zUVjG6iYfr9mHiwsIaG3c1goFiVURUPz6KFTIhtywndse00XaOkH7ftXPf82S7bNVRhPg

  1. 启动可恢复的上传会话:

POST https://www.googleapis.com/upload/storage/v1/b/MYBUCKET/o?name=sdk2.txt&uploadType=resumable&upload_id=AEnB2UrmFY9CKwkHFxsYdT71LcWa

使用这些标题:

HTTPS 响应:200 OK

  1. 发送第一个块:

PUT https://www.googleapis.com/upload/storage/v1/b/MYBUCKET/o?name=sdk2.txt&uploadType=resumable&upload_id=AEnB2UrmFY9CKwkHFxsYdT71LcWa0zUVjG6iYfr9mHiwsIaG3c1goFiVURUPz6KFTIhtywndse00XaOkH7ftXPf82S7bNVRhPg

使用这些标题:

HTTPS 响应:200 OK带有数据:

根据文档,上述响应应该是308而不是200 OK

这些 API 调用我做错了什么?

0 投票
1 回答
260 浏览

php - 使用 PHP 的 CreateSignedURL 失败 AWS SSE-C

我一直在使用 AWS SDK V3 for PHP 将对象放入 S3,并使用客户提供的密钥进行服务器端加密。该文档非常粗略(或者至少我还没有找到它)。

为了使用 S3client 上传对象,我使用 putobject

$this->encryptioncustkey 是一个普通的客户密钥(不是 base64_encoded,因为 SDK 似乎正在这样做)和 this->encryptioncustkeymd5 = md5($this->encryptioncustkey,true);

put 对象工作正常。但是,问题在于生成 createSignedURL。

但我收到一个奇怪的响应,表明它缺少“x-amz-server-side-encryption”(ServerSideEncryption),根据文档,SSE-C 不需要它。即使我将它设置为 ServerSideEncryption='AES256' 它也没有效果。

0 投票
1 回答
244 浏览

ember.js - ember-file-upload 到 S3 使用无服务器 lambda 返回预签名 URL

我正在使用以下上传组件:

ember-文件上传

使用具有 S3 支持的 Ember(显然),但所有签名示例都需要单独的服务器。由于我的项目是无服务器的并且使用 lambda/api 网关,我想创建一个 lambda 来完成这项工作。我到处搜索,但找不到一个可行的示例或足够清晰的信息来让我移植它。有没有人成功地做到了这一点?

客户端上有很多带有机密的不安全示例,但是对于该项目而言,上传必须是安全的,因此是不可接受的。

0 投票
0 回答
1427 浏览

amazon-web-services - S3 预签名 URL 性能因直接下载而下降

以前我使用 EC2 机器使用预签名 URL 下载文件,客户端将从 EC2 机器(V1 架构)下载。

现在我们将预签名 URL 直接提供给客户端,客户端正在使用该 URL 下载文件。(V2 架构)

上传的方式相同。

我假设我减少了跳数,响应时间会减少,但性能会下降。我正在使用 jMeter 来衡量性能。我跑了 10 分钟,统计数据是:-

下载

v1 95% 客户端 > 9000 毫秒,平均 > 5000 毫秒

v2 95% 客户端 > 24000 毫秒,平均 > 10000 毫秒

上传

v1 95% 客户端 > 33000 毫秒,平均 > 14000 毫秒

v2 95% 客户端 > 84000 毫秒,平均 > 72000 毫秒

所以我需要知道为什么即使减少了一个机器跃点它也会降级?有什么我想念的吗?如何提高性能?

0 投票
1 回答
1717 浏览

javascript - 如何提高文件上传到谷歌存储的速度?

我已经实现了 javascript 代码以将多个块中的文件上传到谷歌云存储。

以下是我执行上传文件的流程: 1. 用户使用 javascript 客户端 Web 应用程序选择要上传的文件 {请求来自亚洲地区} 2. javascript 客户端应用程序请求到我们在 NODEJS 中实现的应用程序服务器 {托管在谷歌云的计算引擎中- 美国地区} 允许文件上传 {authorization} 2. Nodejs 应用服务器向客户端应用返回一个签名 URL 3. 客户端应用开始使用该签名 url 将文件以多个块上传到谷歌存储 4. 将成功的客户端报告上传到应用服务器

我能够以多个块上传文件,但我观察到,如果我在谷歌云美国区域托管 nodejs 应用程序服务器而不是托管在执行客户端应用程序请求的同一台机器上,上传速度会慢 2-3 倍

如果您有解决方案如何提高上传性能,请告诉我。

google cloud signed-url 文档中提到了一些解决方法:

可续传上传被固定在它们开始的区域。例如,如果您在美国创建可续传上传 URL 并将其提供给亚洲的客户,则上传仍会通过美国。在未启动的区域执行可恢复上传可能会导致上传缓慢。为避免这种情况,您可以让服务器构造和签名初始 POST 请求,然后将签名的 URL 提供给客户端,以便从其位置启动上传。一旦启动,客户端可以正常使用生成的会话 URI 来发出不需要签名的 PUT 请求。

但是有了那个参考:

  1. 我找不到任何代码示例:一旦客户端从服务器收到签名的 url,如何构造初始 JSON API 调用?
  2. 第一次通话应该有什么反应?以及如何提取会话 URI
  3. 如何使用会话 URI 上传更多块?
0 投票
1 回答
1932 浏览

android - 为从移动应用程序访问 AWS S3 生成预​​签名 URL

这可能已经在 SO 上进行了多次研究,但我仍然无法理解这里的流程。有人可以帮忙说明一下我可能会错过什么!

我正在构建一个移动消息应用程序,后端聊天服务器使用 Erlang,照片存储在 AWS S3 中。我想确保当用户向群组发送照片时,只能由该群组的成员下载,其他人不得下载。

据我了解,我需要将(上传照片的)预签名 URL 分发给聊天收件人(即群组成员),以便他们可以直接下载相同的 URL。

我的问题是:如何生成这些预签名 URL?AWS Cognito 在这里扮演什么角色?我应该构建一个可以被移动应用程序查询的新 Web 服务吗?因此,此 Web 服务将调用 Cognito 的 getIdentityId() 并使用响应(以及移动客户端传递的存储桶名称/密钥)生成预签名 URL,然后将其传递回移动客户端,然后移动客户端可以将此 URL 分发给群聊收件人?

还是应该将 Cognito 凭据提供程序和用户池 ID 包含在移动源代码中,并且 iOS / Android 应用程序本身应该生成所述 URL?

为相当长的咆哮道歉!

0 投票
1 回答
2023 浏览

ruby-on-rails - 创建 Amazon S3 预签名 URL 以从 Ruby on Rails 进行公共访问

我有与这个问题完全相同的问题,但是当我在 Postman 中测试时,我的代码会生成以下错误:

AccessDenied 请求中存在未签名的标头。

在此处输入图像描述

这是创建 url 的 ruby​​ 代码:

如果我x-amz-acl从 ruby​​ 代码中删除标题:

然后它可以工作,我可以放一个文件。那么我错过了什么?