使用旧ACCESS_KEY_ID的 AWS-开发工具包



我最近在.env文件中更改了我的 aws 凭证

AWS_ACCESS_KEY_ID=XXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=

但是,在每个s3.getSignedUrl请求中,SDK 都会使用以前的(根(凭据。

  s3.getSignedUrl('putObject', s3Params, (err, data) => {
    if (err) {
      return res.end();
    }
    console.log(data)       <---------------
    const returnData = {
      signedRequest: data,
      awsImageUrl: `https://${S3_BUCKET}.s3.amazonaws.com/${imageName}`
    };
    res.json(returnData);
    res.end();
  });

此日志

https://my-bucket.s3.amazonaws.com/my-pic.png?AWSAccessKeyId=YYYYYYYYYYYYYYYContent-Type=image%2Fpng&Expires=SOMEDATE&Signature=SOMESIGNATURE&x-amz-acl=public-read

YYYYYYYYYYYYYYY是以前的根凭据

SDK 是否有可能缓存此数据?

如果是这样,我该如何使其无效?

还是我忽略了代码中的某些内容?

AWS 文档

过期和刷新凭据

有时,凭据可能会在长时间运行的过程中过期 应用。在这种情况下,SDK 将自动尝试 如果凭据 类实现 refresh(( 方法。

如果要实现凭据存储位置,则需要 创建凭据类的子类并重写 刷新(( 方法。此方法允许从中检索凭据 后备存储,无论是文件系统、数据库还是某些网络 存储。该方法应重置 对象。

在查找凭据时,JavaScript 和 Node SDK 使用 AWS.CredentialProviderChain

默认凭据提供程序包括:

AWS.CredentialProviderChain.defaultProviders = [function () {
  return new AWS.EnvironmentCredentials('AWS');
}, function () {
  return new AWS.EnvironmentCredentials('AMAZON');
}, function () {
  return new AWS.SharedIniFileCredentials();
}, function () {
  if (AWS.ECSCredentials.prototype.getECSRelativeUri() !== undefined) {
    return new AWS.ECSCredentials();
  }
  return new AWS.EC2MetadataCredentials();
}]

因此,它会在以下位置查找:

  • 环境凭据
  • ~/.aws/credentials文件
  • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
  • 实例元数据

相关内容

  • 没有找到相关文章

最新更新