相关疑难解决方法(0)

boto3 s3 generate_presigned_url ExpiresIn 不能按预期工作

我试图pre-signed URL用 7dsys 过期时间生成。(据说最长持续时间为 7 天,AWS S3 预签名 URL 没有到期日

# It is called and retruned in AWS Lambda
boto3.client('s3').generate_presigned_url(
    'get_object',
    Params={'Bucket': bucket, 'Key': object_key},
    ExpiresIn=(60*60*24*7)  # 7days
)
Run Code Online (Sandbox Code Playgroud)

然而,似乎不是保留了pre-signed URL7 天,而是仅仅保留了几个小时。之后pre-signed URL只返回 XML 格式。

<Error>
  <Code>ExpiredToken</Code>
    <Message>The provided token has expired.</Message>
.
.
.
</Error>
Run Code Online (Sandbox Code Playgroud)

甚至每次尝试的过期时间似乎都不一样,有时是 5 小时,有时是 12 小时。

我不知道为什么。

amazon-s3 amazon-web-services pre-signed-url

6
推荐指数
1
解决办法
1085
查看次数

上传亚马逊s3 python,boto3后获取文件url

我只是boto3 的新手,我不明白如何获取我刚刚上传到 s3 amazon 的文件的 URL 链接。

请说清楚。

谢谢

import boto3

s3 = boto3.resource('s3')

data = open ('file.xlsx', 'rb')
s3.Bucket ('dimxxx1').put_object (Key='file.xlsx', Body=data)
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 amazon-web-services boto3

5
推荐指数
2
解决办法
1万
查看次数

如何在 Django 存储中设置 AWS S3 对象永不过期?

我正在使用django-storage(内部使用 Boto3)上传图像。我能够成功地做到这一点,我得到的返回 URL 是这种格式:

https://.s3.amazonaws.com/foo.jpg?Signature=&AWSAccessKeyId=&Expires=1513089114

其中还填写了 Signature 和 AWSAccessKeyId。

现在,我需要将这个 URL 直接提供给移动开发人员,我不能这么晚设置超时。我需要它很多年或可能总是可以访问。这样做的好方法是什么?解决办法是什么

timeout amazon-s3 django-storage boto3

4
推荐指数
1
解决办法
4562
查看次数

亚马逊s3生成链接的最长到期时间是多少?

我试图将截止日期设置为2100年,但它表示它无效.或者有可能以某种方式使其永久化?

java amazon-s3

1
推荐指数
1
解决办法
1535
查看次数

预签名 S3 url 在到期时间后有效

从 SDK 文档(链接:https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html#_createPresignedRequest$expires中,参数应表示URL 应该过期。

因此,如果我指定 2 分钟作为过期时间,则 2 分钟后该 URL 应该无效。我的代码看起来像这样

<?php
$s3 = $this->cloudProvider->getClient(); // S3 client

$cmd = $s3->getCommand(
    'GetObject',
    [
        'Bucket' => $this->getSdkBucket(), // Bucket name
        'Key' => "$s3Name",
    ]
);

$urlReq = $s3->createPresignedRequest($cmd, $expirationTime); // $expirationTime is a Unix timestamp
Run Code Online (Sandbox Code Playgroud)

我得到了具有正确到期时间的网址(在我的例子中,客户端希望它是会话到期时间,而会话时间是 4 小时)

  X-Amz-Content-Sha256=UNSIGNED-PAYLOAD
  &X-Amz-Security-Token=long_string_goes_here
  &X-Amz-Algorithm=AWS4-HMAC-SHA256
  &X-Amz-Credential=another_string_goes_here
  &X-Amz-Date=20200907T110127Z
  &X-Amz-SignedHeaders=host
  &X-Amz-Expires=14400 // This decreases depending on how long the user is logged in - max 4hrs
  &X-Amz-Signature=another_string_here
Run Code Online (Sandbox Code Playgroud)

问题是这个url在4小时后才有效。

根据我在这个答案中读到的有关过期时间的内容 ( /sf/answers/4045488961/),URL的有效期为 6 …

amazon-s3 amazon-web-services aws-php-sdk

0
推荐指数
1
解决办法
2517
查看次数