in deliverystream/src/main/java/com/amazonaws/kinesisfirehose/deliverystream/CreateHandler.java [124:149]
private ProgressEvent<ResourceModel, CallbackContext> createDeliveryStream(final FirehoseAPIWrapper firehoseAPIWrapper, final ResourceModel model) {
val createDeliveryStreamRequest = CreateDeliveryStreamRequest.builder()
.deliveryStreamName(model.getDeliveryStreamName())
.deliveryStreamType(model.getDeliveryStreamType())
.s3DestinationConfiguration(HandlerUtils.translateS3DestinationConfiguration(model.getS3DestinationConfiguration()))
.extendedS3DestinationConfiguration(HandlerUtils.translateExtendedS3DestinationConfiguration(model.getExtendedS3DestinationConfiguration()))
.redshiftDestinationConfiguration(HandlerUtils.translateRedshiftDestinationConfiguration(model.getRedshiftDestinationConfiguration()))
.elasticsearchDestinationConfiguration(HandlerUtils.translateElasticsearchDestinationConfiguration(model.getElasticsearchDestinationConfiguration()))
.kinesisStreamSourceConfiguration(HandlerUtils.translateKinesisStreamSourceConfiguration(model.getKinesisStreamSourceConfiguration()))
.splunkDestinationConfiguration(HandlerUtils.translateSplunkDestinationConfiguration(model.getSplunkDestinationConfiguration()))
.httpEndpointDestinationConfiguration(HandlerUtils.translateHttpEndpointDestinationConfiguration(model.getHttpEndpointDestinationConfiguration()))
.deliveryStreamEncryptionConfigurationInput(HandlerUtils.translateDeliveryStreamEncryptionConfigurationInput(model.getDeliveryStreamEncryptionConfigurationInput()))
.tags(HandlerUtils.translateCFNModelTagsToFirehoseSDKTags(model.getTags()))
.build();
//Firehose API returns an ARN on create, but does not accept ARN for any of its operations that
// act on a DeliveryStream. This is why DeliveryStream name is the physical resource ID and not the ARN
val response = firehoseAPIWrapper.createDeliveryStream(createDeliveryStreamRequest);
model.setArn(response.deliveryStreamARN());
return ProgressEvent.defaultInProgressHandler(CallbackContext.builder()
.deliveryStreamStatus(getDeliveryStreamStatus(firehoseAPIWrapper, model.getDeliveryStreamName()))
.stabilizationRetriesRemaining(NUMBER_OF_STATUS_POLL_RETRIES)
.build(),
(int) Duration.ofSeconds(CALLBACK_DELAY_IN_SECONDS).getSeconds(),
model);
}