1

aws 서비스는 AcceeDenied 예외를 throw 할 수 있습니다. 어떤 그런 식으로 기록됩니다자바 스크립트에서 AWS 액세스의 객체 및 작업이 예외를 거부하는 이유는 무엇입니까?

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

클라우드 시계 로그를 보여 모두의

{ 
    "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)" 
    ] 
} 

먼저 위치를 스택 추적은? :)

둘째로 어떤 리소스와 작업을 요청했는지 파악할 수있는 방법이 있습니까? (몇 가지 맹목적인 약속이 있으며 무엇이 잘못되었는지 확실하지 않습니다.)

+0

수신 한 배열의 stacktrace가 아닙니까? 작업과 리소스가 헤더에있을 수 있습니다.) –

+0

스택 추적은 'node_modelus' 폴더에서 볼 수 있습니다. "내 코드"가 아닙니다. – Cherry

답변

0

내 경험에 비추어 볼 때 JavaScript Stacktrace에 대한 세부 정보는 훨씬 부족합니다. 내가 찾은 더 유용한 경로는 내가 사용하고있는 라이브러리 (그리고 somePromise을 얻는 것)가 액세스하고있는 AWS 서비스를 살펴 보는 것입니다.

당신이 가능 CloudTrailCloudWatch에서 로그를 사용하여,이 정보의 일부는 AWS 측에서입니다 주울 수있는 또 다른 방법입니다. 먼저 create a CloudTrail in your AWS Account해야합니다. 다음에 send CloudTrail events to CloudWatch Logs이 필요합니다.

CloudWilter 이벤트를 CloudWatch 로그로 보내면 CloudWatch 로그를 사용하여 "액세스 거부"및 "권한없는 작업"메시지를 쿼리 할 수 ​​있습니다. 이렇게하려면 AWS Console에서 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에서 확인할 수 있습니다. 또한 CloudTrail을 이미 만들고 CloudWatch 로그로 이벤트를 보내야 만 유용한 CloudFormation 템플릿이 포함되어 있습니다.