2016-07-09 29 views
7

Khi viết một hàm JavaA AWS Java được kích hoạt bởi các sự kiện được lập lịch trên Cloudwatch, đối tượng sự kiện nào được truyền cho hàm xử lý Lambda?AWS Lambda - CloudWatch Loại sự kiện

Ví dụ, đối với một hàm Lambda được kích hoạt bởi một sự kiện S3, AWS gọi hàm và truyền một đối tượng S3Event. Tương tự, nó sẽ truyền một đối tượng SNSEvent đến một hàm được kích hoạt bởi một thông báo SNS.

public class LambdaHandler { 

    public void eventHandler(S3Event event, Context context) { 
    } 

HOẶC

public class LambdaHandler { 

    public void eventHandler(SNSEvent event, Context context) { 
    } 

Đối với một chức năng điều khiển Cloudwatch Theo lịch trình tổ chức sự kiện, những gì sẽ được ở vị trí của SNSEvent/S3Event?

public class LambdaHandler { 

    public void eventHandler(__________ event, Context context) { 
    } 

tôi có thể không cho cuộc sống của tôi tìm thấy bất kỳ ví dụ về hàm AWS Lambda viết bằng Java được kích hoạt bởi các sự kiện theo lịch trình Cloudwatch ...

điểm thưởng cho một hàm mẫu.

EDIT 1 Không có câu trả lời chính xác cho điều này (mặc dù tôi không biết rằng AWS đã phát hành một đối tượng 'sự kiện' thích hợp trong SDK sẽ được chuyển đến hàm Lambda), vì vậy có thể không thực sự là một câu trả lời mà tôi đang tìm kiếm.

Câu hỏi này cũng được hỏi tại đây: What is the parameter type passed to a Lambda function by a CloudWatch Events - Schedule trigger? và ai đó đã nhận xét đề xuất sử dụng Object và in tên lớp học. Hóa ra là LinkedHashMap. Có vẻ đúng như một câu trả lời vì tôi sẽ nhận được ...

+0

Bạn đang tìm kiếm [this] (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/EventTypes.html#schedule_event_type)? –

+0

@ Michael-sqlbot Có lẽ, mặc dù đó là JSON. Tôi chắc chắn câu trả lời là ngay trước mặt tôi, nhưng lớp sự kiện Java thực sự được chuyển tới hàm xử lý Lambda là gì? – Brooks

Trả lời

1

com.amazonaws.services.lambda.runtime.events.ScheduledEvent là câu trả lời hiện tại.

Tôi có thể thấy rằng trong phiên bản 2.0.2 của thư viện aws-lambda-java-events có sẵn. Mã là here và biết thêm chi tiết về phiên bản 2.0 là here

+0

Hah! Thật tuyệt vời khi cuối cùng họ đã tạo ra nó! – Brooks

1

Thật không may là không có lớp học cụ thể cho loại sự kiện này.

Nhưng bạn có thể tự do tạo POJO của riêng mình và chỉ định chúng làm lớp tham số sự kiện. Ví dụ: CloudWatchEvent có thể được mô tả là:

public class CloudWatchEvent { 

    private String version; 
    private String id; 
    private String detailType; 
    private String source; 
    private String account; 
    private Date time; 
    private String region; 
    private List<String> resources; 
    ... 
    // getters and setters 
} 

AWS Công cụ Lambda tự động cố gắng tuần tự nhập vào đối tượng của lớp đã cho.

Để biết cấu trúc bạn có thể chỉ định loại "Bản đồ" và in nó để đăng nhập:

public void eventHandler(Map event, Context context) { 
     log.debug(event); // or System.out.... 
    } 
Các vấn đề liên quan