gpt4 book ai didi

java - 如何创建仅在 6 天后过期的 s3 下载链接

转载 作者:行者123 更新时间:2023-12-04 10:53:12 25 4
gpt4 key购买 nike

我想生成一个 s3 链接来下载一个文件,该链接应该至少存在 6 天。我尝试使用选项 InstanceProfileCredentialsProvider(false)(仅工作 24 小时)、ProfileCredentialsProvider(甚至不创建链接)、访问 key

IAM 用户的访问 key 有效,但此用户 key 将在几天后过期,因此每次我都必须在代码中更改相同的内容,而且我认为在代码中公开 key 不是一个好的做法。

有没有其他方法可以生成仅在 6 天后过期的 s3 下载链接。

下面是代码片段:-

AmazonS3 s3Client  = AmazonS3ClientBuilder.standard().withCredentials(new InstanceProfileCredentialsProvider(false))
.build();
java.util.Date expiration = new java.util.Date();
long milliSeconds = expiration.getTime();
milliSeconds += 1000 * 60 * 60 * 24 * 7; // Add 7 days.
expiration.setTime(milliSeconds);
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest("s3bucket",
"fileLocationpath");
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(expiration);
link = s3Client.generatePresignedUrl(generatePresignedUrlRequest);

最佳答案

实现解决方案的总体思路是 AWS 建议的正确方法。

关于 80 天后过期的用户 key ,因为用户 key 不会自动过期并且在您停用它们之前它们一直有效,我想这是您出于安全原因设置的一个过程,以便轮换您的凭据.这确实是一个很好的做法。为了避免在代码中硬编码这些凭据,这是一种不好的做法,您可以将凭据设置为环境变量或将它们存储在AWS 凭据文件 在你的例子中。通过这样做,您可以轻松地在部署管道中轮换它们。

您可以在启动 ec2 实例时通过用户数据进行 ./aws/credentials 配置。您将运行“aws configure”,然后传递您的 aws 凭据以在您的 ec2 实例中设置它们。理想情况下,您将拥有一个 CI/CD 管道,它将自动执行整个过程,而不是手动执行此操作。

请参阅以下 AWS 推荐的最佳实践:

s3 存储桶的预签名 URL - 推荐方式

https://aws.amazon.com/premiumsupport/knowledge-center/presigned-url-s3-bucket-expiration/

AWS 访问 key 最佳实践

https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html

配置和凭证文件设置

https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html

关于java - 如何创建仅在 6 天后过期的 s3 下载链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59368345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com