【发布时间】:2019-08-31 06:27:36
【问题描述】:
我需要有一种方法让客户端将数据上传到 S3,而无需向他们显示文件的完整位置(路径)。这对 AWS S3 预签名 URL 可行吗?
我正在使用 boto3
s3.client.generate_presigned_url(
ClientMethod='put_object',
ExpiresIn=7200,
Params={'Bucket': BUCKET, 'Key': name}
)
但结果会是:
https://s3.amazonaws.com/MY_BUCKET/upload/xxxx-xxxx/file-name.bin?AWSAccessKeyId=XXXX&Signature=XXXX&Expires=XXXX
我需要这样的东西,不会在路径中显示密钥名称 (/upload/xxxx-xxxx/file-name.bin)。
如果不是预签名的 url,我还有什么其他解决方案?
【问题讨论】:
-
我只是提出一个想法:您可以有一个简单的 Lambda 函数,在上传时触发,然后移动/重命名上传的对象。
-
@AlexanderAzarov 这正是我想要避免的,但我想我可以做到
-
Lambda@edge 在这里可能有用。
-
您是否有任何特殊原因不希望他们看到路径/键?知道它不会给他们任何额外的访问权限。
-
@JohnRotenstein 我知道,但是由于一些遗留代码,该路径在另一个应用程序上是打开的。在我们可以完全迁移客户之前,有必要隐藏它。
标签: amazon-web-services amazon-s3 boto3 boto