Tôi đang cố gắng xem cách truy cập giá trị tiêu đề và nội dung yêu cầu từ trong mã lambda. Nếu phần thân yêu cầu ở định dạng JSON, nó tự động được phân tích cú pháp và có sẵn trong đối tượng sự kiện.Truy cập yêu cầu HTTP (tiêu đề, chuỗi truy vấn, cookie, nội dung) đối tượng trong lambda với http end
Làm cách nào để truy cập chuỗi truy vấn đầy đủ, yêu cầu nội dung, yêu cầu tiêu đề (cookie) cho bất kỳ loại yêu cầu "Loại nội dung" nào bên trong Lambda?
Việc sửa đổi dưới đây là thông tin tôi đã thu thập được để giúp giải quyết câu hỏi đó có thể hoặc không có thể có liên quan. Hãy bỏ qua chúng nếu bạn muốn.
EDIT:
Tôi đã trải qua những câu hỏi đang tồn tại trên SE here và here. Theo điều này thread, sử dụng $input.json('$')
nên thực hiện thủ thuật. Tôi đoán câu trả lời từ các liên kết ở trên đã lỗi thời như cổng API theo mặc định có vẻ như nhận ra JSON trong yêu cầu và nếu như vậy làm cho nó có sẵn trong đối tượng event
mà không có bất kỳ mẫu ánh xạ nào được định cấu hình.
Đặt ánh xạ theo đề xuất không hoạt động đối với tôi. Nó không chứa thông tin tiêu đề yêu cầu.
Dưới đây là ảnh chụp màn hình về cách cấu hình.
Các "tiêu đề" lợi nhuận chủ chốt một giá trị trống. Sử dụng các lỗi $input.params('$')
hoặc "$input.params('$')"
.
EDIT 2
Cố định tiêu đề trong Phương pháp yêu cầu. Vẫn không nhận được giá trị User-Agent bên trong lambda.
EDIT 3
tôi đã sử dụng các bản đồ mẫu sau vào API Gateway
{
"request": $input.json('$'),
"headers": "$input.params()"
}
và mã dưới đây vào lambda
context.succeed("event.key32:"+JSON.stringify(event, null, 2));
Và phản hồi được tạo bởi cổng API hiển thị số này
Nhìn vào giá trị "tiêu đề" trong phản hồi, có vẻ như tất cả các tiêu đề nhận được từ máy khách HTTP đều bị chặn? Đây là toàn văn từ JSON trả về bởi $ input.params().tiêu đề
header={CloudFront-Forwarded-Proto=https, CloudFront-Is-Desktop-Viewer=true, CloudFront-Is-Mobile-Viewer=false, CloudFront-Is-SmartTV-Viewer=false, CloudFront-Is-Tablet-Viewer=false, Content-Type=application/json, Via=1.1 5d53b9570d94ce920abbd471.cloudfront.net (CloudFront), 1.1 95eea7baa7ec95c9a41eca9e3ab7.cloudfront.net (CloudFront), X-Amz-Cf-Id=GBqmObLRy6Iem9bJbVPrrW1K3YoWRDyAaMpv-UkshfCsHAA==, X-Forwarded-For=172.35.96.199, 51.139.183.101, X-Forwarded-Port=443, X-Forwarded-Proto=https}}
Nó không có chuỗi User-Agent trong tiêu đề, mặc dù như ảnh chụp màn hình hiển thị ở trên, nó được gửi bởi máy khách REST. Điều thú vị là toàn bộ chuỗi truy vấn được tạo sẵn. Không chắc chắn nếu đây là một cách dự định để truy cập nó.
Bạn có thể đơn giản hóa các câu hỏi? Nó thực sự cồng kềnh ngay bây giờ. – kixorz
@napalm, tôi đã nêu bật phần câu hỏi. Vui lòng bỏ qua các chỉnh sửa. Để tóm tắt câu hỏi: Làm thế nào tôi có thể truy cập chuỗi truy vấn đầy đủ, yêu cầu nội dung, yêu cầu tiêu đề (cookie) cho bất kỳ loại yêu cầu "Content-Type" nào bên trong Lambda? – user3526