If you create a Kinesis Firehose stream and "enable data transformation" under "Transform records" while creating the stream, you're presented with a list of AWS Lambda Blueprints for common data transformations.
If you select "Apache Log to JSON," after creating this Lambda application it fails to deploy and rolls back, because Node.js 12 is no longer supported - and this blueprint specifies Node.js 12.
It looks like the "SysLog to JSON" blueprint has been updated, but "Apache Log to JSON" has not. The Apache log blueprint erroneously links to the syslog code as well, so perhaps that is how it fell through the cracks.
Will this blueprint be updated, restoring this now-broken functionality? Is there some way to override the runtime specified to get it working for now?
Here is the specific error upon deploying this blueprint:
kinesisfirehoseapachelogtojson
CREATE_FAILED
Resource handler returned message: "The runtime parameter of nodejs12.x is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs18.x) while creating or updating functions. (Service: Lambda, Status Code: 400, Request ID: e9e4a840-c9f5-4271-8cb6-895e258af842)" (RequestToken: 28a39732-e69e-4399-e948-1169b4264ea4, HandlerErrorCode: InvalidRequest)
Thanks, it does look like the source of the Apache log to JSON script is there, although there were some other things like IAM roles that the blueprint also took care of. I can probably get things working again by setting it all up manually.
Still, AWS needs to fix this. It should just be a matter of changing one character in their blueprint. It's a bit crazy that they deprecated Node.js 12 before updating their own code within their own services first.