已过期的 s3 预签名 url
expired s3 presigned url
我有一个 image,我已经使用预签名 url 上传到 S3。起初,图像是可见的...
- 用于我的应用
image_tag
,或
- 用于任何 html 文档的
<img src="">
。
...但是当复制粘贴到我的浏览器时不可见。
现在到期日期已过,图像仍然可见...但只有在我的应用请求时才能看到。过期日期不是应该阻止访问吗?
我在某处读到过期日期应该只影响文件上传,但对 的回复却另有说明。
我认为您的应用程序本身在您每次加载页面时都会从 S3 请求预签名 URL,因此您实际上会获得一个新的预签名 url 来查看图像。
如果您在创建预签名 url 时未指定到期日期,则将应用默认到期日期。此 link 具有到期值。
Anyone with valid security credentials can create a presigned URL. However, in order to successfully access an object, the presigned URL must be created by someone who has permission to perform the operation that the presigned URL is based upon.
The credentials that you can use to create a presigned URL include:
IAM instance profile: Valid up to 6 hours
AWS Security Token Service : Valid up to 36 hours when signed with
permanent credentials, such as the credentials of the AWS account root
user or an IAM user
IAM user: Valid up to 7 days when using AWS Signature Version 4
To create a presigned URL that's valid for up to 7 days, first
designate IAM user credentials (the access key and secret access key)
to the SDK that you're using. Then, generate a presigned URL using AWS
Signature Version 4.
If you created a presigned URL using a temporary token, then the URL
expires when the token expires, even if the URL was created with a
later expiration time.
根据您创建预签名 url 的方式,它们可以用于对象共享(例如图像查看)或用于将对象上传到 S3。它们是不同类型的 URL,因为每个都附加了一组不同的权限,因此您不能对上传和下载使用相同的预签名 url。无论如何,在这两种情况下,您都可以为预签名 URL.
定义到期时间
过期仅与 URL 相关,与对象本身无关。
如果您使用 pre-signed URL 上传对象并使用 public-read ACL 配置 pre-signed URL,则该对象将 public 给任何人.不过,如果您使用私有 ACL 配置上传它,则只能上传此对象。要阅读它,您需要使用 getObject
操作创建一个新的 pre-signed URL。
我写了一篇关于如何使用 pre-signed URLs 的文章,它在 nodeJS 中,但我认为它可以帮助你。查看代码片段。
我有一个 image,我已经使用预签名 url 上传到 S3。起初,图像是可见的...
- 用于我的应用
image_tag
,或 - 用于任何 html 文档的
<img src="">
。
...但是当复制粘贴到我的浏览器时不可见。
现在到期日期已过,图像仍然可见...但只有在我的应用请求时才能看到。过期日期不是应该阻止访问吗?
我在某处读到过期日期应该只影响文件上传,但对
我认为您的应用程序本身在您每次加载页面时都会从 S3 请求预签名 URL,因此您实际上会获得一个新的预签名 url 来查看图像。
如果您在创建预签名 url 时未指定到期日期,则将应用默认到期日期。此 link 具有到期值。
Anyone with valid security credentials can create a presigned URL. However, in order to successfully access an object, the presigned URL must be created by someone who has permission to perform the operation that the presigned URL is based upon.
The credentials that you can use to create a presigned URL include:
IAM instance profile: Valid up to 6 hours
AWS Security Token Service : Valid up to 36 hours when signed with permanent credentials, such as the credentials of the AWS account root user or an IAM user
IAM user: Valid up to 7 days when using AWS Signature Version 4
To create a presigned URL that's valid for up to 7 days, first designate IAM user credentials (the access key and secret access key) to the SDK that you're using. Then, generate a presigned URL using AWS Signature Version 4.
If you created a presigned URL using a temporary token, then the URL expires when the token expires, even if the URL was created with a later expiration time.
根据您创建预签名 url 的方式,它们可以用于对象共享(例如图像查看)或用于将对象上传到 S3。它们是不同类型的 URL,因为每个都附加了一组不同的权限,因此您不能对上传和下载使用相同的预签名 url。无论如何,在这两种情况下,您都可以为预签名 URL.
定义到期时间过期仅与 URL 相关,与对象本身无关。
如果您使用 pre-signed URL 上传对象并使用 public-read ACL 配置 pre-signed URL,则该对象将 public 给任何人.不过,如果您使用私有 ACL 配置上传它,则只能上传此对象。要阅读它,您需要使用 getObject
操作创建一个新的 pre-signed URL。
我写了一篇关于如何使用 pre-signed URLs 的文章,它在 nodeJS 中,但我认为它可以帮助你。查看代码片段。