一次性使用/访问预签名URL即可查看S3对象

时间:2019-05-29 04:30:11

标签: amazon-web-services amazon-s3 command-line-interface

我正在尝试生成一个仅允许一次访问/使用该URL的预签名URL。

我一直在尝试使用过期时间,但是根据我测试的结果,在70秒内,任何内容始终会显示过期的网址错误。

return this.facebook.getFacebookUserInfos(req.token).pipe(
      switchMap(user => {
            return this._repo.findBy({email: user.email}).pipe(
              switchMap(foundUser => {
                // assume foundUser is always null 
                if (!foundUser) {
                  const fromFacebook = this.createUserModel(user, event.queryStringParameters);
                 return this._repo.save(fromFacebook);
                } else {                
                 return of(foundUser);
                }
              }));
          }),
          concatMap(user => {
            return this.getAuthToken(user)
          }),
          map(response => Response.ok(response.body, response.headers)),
          catchError((err) => of(Response.errorResponse(err)))
        );

另一种选择是较短的网址过期时间(例如5秒),但如果没有过期的网址错误,我将无法在70秒内正常工作。

1 个答案:

答案 0 :(得分:0)

如果在70秒之内出现任何错误,则您在生成签名URL的计算机上的时钟几乎肯定是错误的。

相对于运行aws-cli的计算机上的时钟,过期计算为未来--expires-in秒。假设这是一个受信任的环境(您的凭据在那里),并且时钟也被认为已正确设置。

(使用浏览器访问URL的计算机上的时钟无关紧要。)

请注意,错误消息中显示了与给定URL相关的固定到期时间。