我使用 S3 预签名 url 直接从客户端上传图像。我希望仅当我确定使用了 url 并且上传了新图像时才能够将消息推送到 SQS 队列。
给定一个预签名的 URL,我如何验证它是否已被使用?
我正在尝试从 S3 存储桶下载文件。URL 的链接是预签名的 url。我可以通过网络浏览器下载 S3 链接,但不幸的是它不适用于 Linux 终端。以下是示例链接。
这是我在 wget 之后得到的响应
Resolving prod-04-2014-tasks.s3.amazonaws.com (prod-04-2014-tasks.s3.amazonaws.com)... 52.216.225.104
Connecting to prod-04-2014-tasks.s3.amazonaws.com (prod-04-2014-tasks.s3.amazonaws.com)|52.216.225.104|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2017-10-30 11:24:11 ERROR 403: Forbidden.
X-Amz-SignedHeaders=host: command not found
X-Amz-Date=xxxxxxxxxxx: command not found
X-Amz-Expires=600: command not found
X-Amz-Algorithm=xxxxxxxxxx: command not found
X-Amz-Credential=xxxxxxxxxxxxx%2Fus-east-1%2Fs3%2Faws4_request: command not found
X-Amz-Signature=xxxxxxxxxxxxxxxxx: command not found
[2] Exit 127 X-Amz-Algorithm=xxxxxxxxxxxxxx
[3] Exit 127 X-Amz-Date=xxxxxxxxxxxxxx
[4] Exit 127 X-Amz-SignedHeaders=xxxxxxx
[5]- Exit 127 X-Amz-Expires=600 …
Run Code Online (Sandbox Code Playgroud) 我将图像保存到我的 s3 存储桶,生成一个预先签名的 URL 并将其保存为我的模型架构中的一个字段。当我的前端从后端检索模型对象时,它使用该 URL 来检索图像。
您可以使用 v4 设置的最大到期日期为 7 天。那么处理这些 URL 的“刷新”的最佳实践是什么?
我想到的事情:
我无法使用适用于 PHP 的 AWS 开发工具包创建预签名 Url。我的代码是 -
function connect()
{
// Instantiate the S3 class and point it at the desired host
date_default_timezone_set('GMT');
return S3Client::factory(array(
'region' => 'us-west-2',
'version' => 'latest',
'credentials' => [
'key' => $key,
'secret' => $secret
]
));
function getSignedS3URLForObject($fileName)
{
// GET CURRENT DATE
$milliseconds = round(microtime(true) * 1000);
$expiration = $milliseconds + (1000 * 60 * 60 * 24 * 30 * 2);
$s3 = self::connect();
$command = $s3->getCommand('GetObject', array(
'Bucket' => self::$customerBucket,
'Key' …
Run Code Online (Sandbox Code Playgroud) 我是新手,正在学习网络开发等等。我只知道如何将我的视频嵌入网站,任何新手都可以轻松获得源,他们也可以嵌入。但在许多网站中,视频 src 使用重定向器链接进行编码,例如:https : //redirector.googlevideo.com/videoplayback?requiressl=yes&id=0c5d32687bb8e7fd&itag=18&source=webdrive&ttl=transient&app=explorer&ip=2604 : a810 :0 :0 :: DC7:D001&ipbits = 32&到期= 1481329545&sparams = requiressl%2Cid%2Citag%2Csource%2Cttl%2Cip%2Cipbits%2Cexpire&签名= 8094D8DEF3C98784DC5561980B5725379B61A804.4C63CCB219699C4A2C02FB2606425E50243F8D36&键= CK2&毫米= 31&MN = SN-ab5l6ne6&MS = AU&MT = 1481314943&MV = M&NH = IgpwcjA0LmxnYTA3KgkxMjcuMC4wLjE&PL = 48
它会在一段时间后到期,在本例中为一天。我了解到这是一个签名的网址。
所以,我想知道如何创建这样的签名网址。请不要提供任何插件名称,因为我不是付费用户或我只使用博主的任何东西。我只是想学习如何用 javascript 编写代码。
简而言之,我想说,我嵌入的 youtube 视频的源是一个签名的 url,一个小时后过期,并且在刷新站点时源应该不断变化。
是否可以在下载文件后立即使预签名 URL 过期?我有一个场景,我希望该 URL 仅被访问 1 次。再次打开网址应该不会下载文件吧?