如何从AWS访问中获取对象和操作在javascript中拒绝异常?

时间:2017-09-11 12:14:25

标签: javascript node.js amazon-web-services amazon-iam aws-access-policy

任何aws服务都可以抛出AcceeDenied Exception。记录如下:

somePromise.catch((err) => {
    console.error(`Failed to store logs into CloudWatch`, err);
    callback(err);
})

Cloud watch日志显示:

{
    "errorMessage": "Access Denied",
    "errorType": "AccessDenied",
    "stackTrace": [
        "Request.extractError (/var/task/node_modules/aws-sdk/lib/services/s3.js:577:35)",
        "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:105:20)",
        "Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:77:10)",
        "Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:683:14)",
        "Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)",
        "AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)",
        "/var/task/node_modules/aws-sdk/lib/state_machine.js:26:10",
        "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)",
        "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:685:12)",
        "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"
    ]
}

首先,堆栈跟踪在哪里? :)

其次是否有一种方法可以取消请求的资源和操作? (有几个链式的承诺,目前还不清楚是什么问题)

1 个答案:

答案 0 :(得分:0)

根据我的经验,您不太可能从JavaScript Stacktrace中获得更多细节。我发现的一个更有用的途径是查看我使用(以及从中获取somePromise)库的AWS服务。

您可以收集部分此类信息的另一种方式是使用 CloudTrail CloudWatch Logs 从AWS端进行收集。您首先需要create a CloudTrail in your AWS Account。接下来你需要send CloudTrail events to CloudWatch Logs

将CloudTrail事件发送到CloudWatch Logs后,您可以使用CloudWatch Logs查询&#34; Access Denied&#34;和&#34;未经授权的操作&#34;消息。为此,请转到AWS控制台中的 CloudWatch ,然后转到日志部分。接下来查看您的CloudTrail日志组。通常,默认日志组称为CloudTrail/Default。进入该日志组后,按顶部的搜索日志按钮。这将显示此日志组的日志流中的所有日志。然后,您可以输入仅获得拒绝访问未授权操作事件的查询。为此,请输入查询{ ($.errorCode = "*UnauthorizedOperation") || ($.errorCode = "AccessDenied*") }

我觉得这很麻烦,而且非常耗时,所以我自动为我写了utility to send these Access Denied and Unauthorized Operation messages to Slack。您可以在https://github.com/Giftbit/activity-aware-ids-aws/blob/master/infrastructure/cloudformation.yaml查看。它还包括一个有用的CloudFormation模板,可以为您提供支持,只要您已经创建了CloudTrail并将事件发送到CloudWatch Logs。