Я использую новый AWS CDK (Cloud Development Toolkit) для построения инфраструктуры на AWS в Java.
Что мне нужно сделать: поиск ведро s3 и добавление триггера, который вызывает лямбда-функцию.
Что я сделал:
Поиск ведра s3:
IBucket bucket = Bucket.fromBucketName(scope, bucketId, bucketName);
Добавить новый источник событий к существующей лямбде:
IEventSource eventSource = getObjectCreationEvent();
lambda.addEventSource(eventSource);
Где getObjectCreationEvent()
:
private S3EventSource getObjectCreationEvent() {
return new S3EventSource(bucket, new S3EventSourceProps() {
@Override
public List<EventType> getEvents() {
return Collections.singletonList(EventType.OBJECT_CREATED);
}
});
}
В чем проблема:
Тип параметра bucket
в конструкторе S3EventSource
равен Bucket
, но каждый метод поиска (например, Bucket.fromBucketName()
) возвращает IBucket
, а не Bucket
, поэтому существует несоответствие подписи. Если я разыграю IBucket
до Bucket
, у меня будет ClassCastException
.