Gỡ lỗi với CloudWatch logs
- Sao chép giá trị của Distribution tại tab Outputs của stack và dán vào trình duyệt của bạn. Sau đó ấn Sign up

- Nhập thông tin của bạn để đăng ký tài khoản và ấn Sign up

- Mở email mà bạn đã đăng ký để lấy mã xác minh.
- Nhập mã xác minh vào ứng dụng.
- Ấn Submit

- Nhập thông tin tài khoản bạn đã đăng ký và ấn Sign in

- Ấn Upload

- Ấn Add files
- Chọn các tệp mà bạn muốn tải lên
- Nhập tag cho các tệp hoặc bỏ qua
- Ấn Upload

- Bạn đã tải các tệp lên thành công:

-
Mở bảng điều khiển của AWS Lambda
-
Chọn Funtions ở menu phía bên trái và chọn hàm upload_docs.

-
Chọn tab Monitor và ấn View CloudWatch logs

- Chọn log mới nhất

- Bạn sẽ thấy hàm chạy bình thường và không có bất kỳ lỗi nào. Tiếp theo chúng ta sẽ sửa code làm hàm chạy bị lỗi.

- Sửa code như sau:
try:
table.put_item(Item = item)
except Exception as e:
print(e)
Chúng ta thêm try-except để bắt lỗi khi không kết nối tới DynamoDB được. Tiếp theo ấn Deploy.

- Chọn tab Configuration và chọn Environment variables ở menu phía bên trái
- Ấn Edit

- Đổi tên bảng thành tên khác
- Ấn Save

- Mở bảng điều khiển của Amazon API Gateway
- Chọn Serverless - FCJ Document Management System
- Chọn method POST và ấn Test

- Thêm đoạn json sau vào Request Body và ấn Test
{
"user_id": "abcd1234",
"file": "dynamoDB.json",
"folder": "",
"identityId": "123456cvbn",
"modified": "13-03-2023",
"size": 1024,
"type": "json",
"tag": "aws, serverless"
}

- Kết quả trả về lỗi

- Trở lại với bảng điều khiển của CloudWatch log để kiểm tra log
- Lỗi hiển thị là AccessDeniedException, khác với lỗi được trả về cho API Gateway

- Nếu bạn muốn lỗi trả về giống với lỗi được ghi trong log thì bạn thêm đoạn code sau vào hàm upload_docs
return {
"statusCode": 400,
"headers": {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET,PUT,POST,DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method,X-Access-Token,XKey,Authorization"
},
"body": str(e)
}

- Quay lại với API Gateway, ấn Test. Bạn sẽ thấy lỗi được trả về.
