【发布时间】:2022-01-14 05:21:00
【问题描述】:
我在 Kubernetes 环境中部署了一个 pod,并创建了服务帐户来访问我的 S3 存储桶并具有完全访问权限。我想将我的日志上传到 s3 存储桶。
module.exports.uploadFile = () => {
const s3 = new AWS.S3();
const fileContent = fs.readFileSync(path.resolve(__dirname,'../logger/MyLogFile.log'))
const params = {
Bucket: 'MYBUCKETNAME',
Key: 'MyLogFile.log',
Body: fileContent
};
s3.putObject(params, function(err, data) {
if (err) {
console.log(err)
logger.error('file upload error')
throw err;
}
logger.info(`File uploaded successfully. ${data.Location}`);
})}
这是我遇到的错误...
错误 [CredentialsError]:配置中缺少凭据,如果使用 AWS_CONFIG_FILE,请设置 AWS_SDK_LOAD_CONFIG=1 在 Timeout.connectTimeout [as _onTimeout] (/usr/src/app/node_modules/aws-sdk/lib/http/node.js:69:15) 在 listOnTimeout (internal/timers.js:557:17) 在 processTimers (internal/timers.js:500:7) { 代码:'CredentialsError', 时间:2021-12-09T10:43:29.712Z, 可重试:真, 原始错误:{ message: '无法从任何提供者加载凭据', 代码:'CredentialsError', 时间:2021-12-09T10:43:29.705Z, 可重试:真, 原始错误:{ message: 'EC2 元数据角色名称请求返回错误', 代码:'超时错误', 时间:2021-12-09T10:43:29.705Z, 可重试:真, 原始错误:{ message: '套接字未建立连接超时', 代码:'超时错误', 时间:2021-12-09T10:43:29.705Z, 可重试:真 } } } }
【问题讨论】:
-
如果你不想使用IAM用户,你可以使用Programmatic access这个article描述这种方法。
标签: node.js kubernetes amazon-s3 aws-sdk amazon-eks