Starting on May 6th, 2022 our enrich-server began to throw the following error:
[pool-1-thread-2] ERROR com.snowplowanalytics.snowplow.enrich.common.fs2.Run - CLI arguments valid but some of the configuration is not correct. Error: Cannot convert configuration to a io.circe.Json. Failures are:
(/snowplow/config/enrich.hocon: 51) Unable to parse the configuration: Expecting close brace } or a comma, got ':' (if you intended ':' to be part of a key or string value, try enclosing the key or value in double quotes).
This seems to happen when the server is attempting to pull enrichments from DynamoDB. Thinking that this might be an issue with our custom enrichments, I removed all enabled enrichments and deployed once again via terraform:
module "enrich_kinesis" {
source = "snowplow-devops/enrich-kinesis-ec2/aws"
name = "enrich-server-${var.aws_region}"
vpc_id = var.vpc_id
subnet_ids = var.subnet_ids_private
in_stream_name = module.good_stream.name
enriched_stream_name = module.enriched_stream.name
bad_stream_name = module.bad_stream.name
ssh_key_name = "snowplow-ssh-local"
ssh_ip_allowlist = ["${var.vpc_cidr}"]
custom_s3_hosted_assets_bucket_name = "${var.aws_bucket_name}-${var.aws_region}"
telemetry_enabled = var.telemetry_enabled
associate_public_ip_address = false
# Linking in the custom Iglu Server here
custom_iglu_resolvers = [
{
name = "Custom Iglu Server"
priority = 0
uri = "http://${module.iglu_lb.dns_name}/api"
api_key = var.iglu_super_api_key
}
]
}
I am still getting the same errors. I can see all of the following enrichments in the enrich-server-us-east-1-config table:
I’ve also attempted deleting out these default configs and restarting the enrichment server. While the error seems to go away, the server still refuses to pull records form kinesis and validate them. We have made no significant changes to our pipeline since this date, so I’m truly at a loss for why the enrich-server’s behavior suddenly changed.
So, I’ve actually been struggling to ssh into the EC2 instance to retrieve the config. This is the current steps I’ve taken to access the enrich server:
1. Generate .pem file using aws-cli
aws ec2 create-key-pair --key-name snowplow-test-key --query 'KeyMaterial' --output text > snowplow-test-key.pem
2. Replace ssh key name in the terraform file and redeploy
ssh_key_name = "snowplow-test-key"
3. Make sure that the Security Group has an open port for my IP
4. ssh -i "snowplow-test-key.pem" ec2-user@<ip_addr>
Assuming that my networking configurations are correct, does that look like a valid method for getting the appropriate ssh key? I am getting a connection refused error.
I assume that the enrich config is generated on launch? Could we simply alter the launch config to output this file?
Hi @Katie62442 thanks for that! Looks like there is an issue when Telemetry is disabled the config is not formed correctly anymore. For the meantime you can ping back to and older version of this module (v0.2.1).
We will update here once the module is fixed! Apologies for the inconvenience.