php s3预先签署的网址没有sdk

php s3预先签署的网址没有sdk

问题描述:

我正在使用这个类来生成一个包含策略部分的直接上载表单。php s3预先签署的网址没有sdk

https://www.designedbyaturtle.co.uk/2015/direct-upload-to-s3-using-aws-signature-v4-php/

的上传正在努力,但我希望能够显示从URL网站上的文件,为用户未做文件公开。

我知道SDK有一个简单的方法,但我希望我可以用现有的代码来做,因为这已经创建了策略。我想知道什么是从头创建此网址的步骤?将整个臃肿的SDK包含在一个函数中似乎过分了。

+1

我说你想要的http://docs.aws.amazon.com/AmazonS3/开始latest/API/Welcome.html,并找到关于如何创建签名URL的REST API。虽然您的SDK大小膨胀可能是一个问题,但它的自动加载非常棒,并且内存影响应该很低。 – Scuzzy

+0

为直接上载签名的*策略*与为预先签名的URL签名的*规范请求*完全不同。但是,该示例中有用于构造签名密钥的有用代码...因此这是一个有用的开始。 –

创建S3预签名的URL实际上非常容易获得GET请求。 PUT相当容易,但POST很复杂,需要一个策略。

挑战在于创建签名代码。亚马逊支持两个版本v2和v4。 v2正在被淘汰。代码有点复杂。

如果您只为GET请求创建预签名URL,请编写自己的代码。对于其他任何事情,我都认真推荐使用SDK。

下面是使用不带AWS SDK的PHP使用S3V4预先签署S3 URL的源代码的链接。

S3LINK-V4.PHP

+0

我通过使用一些函数和创建一个轻量级类来解决它,这个API真的很臃肿。 – xmxmxmx

+0

我接受你的答案,因为你困扰。我实际上使用了一个基于你刚刚发布的修改后的代码,所以你是正确的,谢谢。 – xmxmxmx

我解决它通过使用这两个类,并对其进行修改一下,以便有两种功能的getURL类和getform而不是使用API​​,这些V4的签名工作的伟大。

getform:

https://www.designedbyaturtle.co.uk/2015/direct-upload-to-s3-using-aws-signature-v4-php/

的getURL:

https://gist.github.com/anthonyeden/4448695ad531016ec12bcdacc9d91cb8