【问题标题】:Missing credentials in config when trying to put object to s3 bucket尝试将对象放入 s3 存储桶时,配置中缺少凭据
【发布时间】:2022-01-02 14:02:55
【问题描述】:

我有一个快速服务正在尝试将对象写入 s3 存储桶,但我收到以下错误:

配置中缺少凭据

我在本地担任我的 AWS 角色,它将我的凭据设置在 .aws/credentials 中,然后在我的 Dockerfile 中我将它们复制到我的容器中。

RUN mkdir "/home/node/.aws" && touch "/home/node/.aws/config" && touch "/home/node/.aws/credentials"
RUN echo "${AWS_CREDENTIALS}" > "/home/node/.aws/credentials"

文档说:

开发工具包会自动检测 AWS 凭证设置为您的变量 环境并将它们用于 SDK 请求,无需 在您的应用程序中管理凭据。环境变量 您设置为提供您的凭据是:

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

AWS_SESSION_TOKEN(可选)

所以我在使用 sdk 时不必手动管理我的凭据?

目前写入s3桶的代码:

import s3 from 'aws-sdk/clients/s3';

const s3Client = new s3({region: process.env['region']});

async upload() {
   const params = {
      Bucket: process.env['bucket'],
      Key: 'test.json',
      Body: somejsonfile
   }

   const res = s3Client.upload(params).promise();
   return results;
}

【问题讨论】:

    标签: node.js amazon-web-services express amazon-s3 aws-sdk


    【解决方案1】:

    node是执行此代码的正确用户吗?

    文件/home/node/.aws/credentials 是不是像这样:

    [default]
    aws_access_key_id = <AAK>
    aws_secret_access_key = <ASK>
    

    要调试,您可以尝试以下操作: 您可以尝试直接在代码中添加您的 AWS 凭证:

    AWS.config.update({
        accessKeyId: "<AAK>",
        secretAccessKey: "<ASK>",
        "region": "<REGION>"
    });
    

    或者,您可以尝试删除 /home/node/.aws/credentials 文件并将凭据移至 /home/node/.aws/config 文件:

    [default]
    region=<REGION>
    output=json
    aws_access_key_id = <AAK>
    aws_secret_access_key = <ASK>
    

    另外,您可以尝试在 Dockerfile 中添加凭据和区域作为环境变量:

    ENV AWS_ACCESS_KEY_ID=<AAK>
    ENV AWS_SECRET_ACCESS_KEY=<ASK>
    ENV AWS_DEFAULT_REGION=<REGION>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 2017-04-06
      • 2016-12-14
      • 1970-01-01
      • 2019-05-17
      • 2019-02-24
      相关资源
      最近更新 更多