AWS NodeJS SDK:S3中的间歇性AllAccessDisabled错误,Dynamo中的UnrecognizedClientException

时间:2017-04-12 14:39:46

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

在NodeJS中使用AWS-SDK(v 2.27.0),我有一个在发电机表中创建新记录的功能,然后将两个文件保存到S3存储桶中的不同文件夹中。发电机和S3都位于eu-west-2。

一般来说,我的功能成功了。然而,大约有十分之一的时间我失败了。无论是dynamo(保存)进程还是S3(putItem)进程都会发生这种情况。

以下是错误的详细信息以及触发它们的代码:

手摇

错误讯息:Error saving: UnrecognizedClientException: No account found for the given parameters

// [...]
let params = {
  TableName: 'users',
  Item: data, //json object
  ReturnValues: 'NONE'
};

dynamo.putItem(params, function(err, res) {
  if (err) {
    console.log(err);
    deferred.reject(err);
  }
  else {
    deferred.resolve(data.data.S); // successful response
  }
});

然后我尝试在大约五分钟后再次运行该过程(没有改变任何东西),这次发电机记录保存正确,没有上述错误。但是,我在保存到S3时发现错误。

S3问题

错误讯息:AllAccessDisabled: All access to this object has been disabled

s3.putObject({
  Key: 'public/'+id+'.pem',
  Body: pair[keyType] //string
}).promise().then(function() {
  deferred.resolve();
},
function(err) {
  console.log(err);
  deferred.reject();
});

我觉得很奇怪它有时候工作,有时候不行,这让我想知道AWS账号是否有问题?通过AWS仪表板浏览我的S3存储桶时,我有时会看到错误“已禁用对此对象的所有访问”。

以下是我初始化AWS / S3 / Dynamo

的方法

AWS.config.update({
  region: 'eu-west-2'
});
const s3 = new AWS.S3({params: {Bucket: 'universalapikeys', region: 'eu-west-2'}});
const dynamo = new AWS.DynamoDB({region: 'eu-west-2'});

秘密和密钥来自两个环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY,并且在我的理解中,aws-sdk会自动使用它。我的IAM用户直接连接了AmazonS3FullAccess和AmazonDynamoDBFullAccess(等等)。

0 个答案:

没有答案