Which approach meets these requirements?
Ingest the data by using an HTTP API call to a web server that is hosted on Amazon EC2. Set up EC2 instances in an Auto Scaling configuration behind an Elastic Load Balancer to load the data into Amazon S3.
Ingest the data over Message Queuing Telemetry Transport (MQTT) to AWS IoT Core. Set up a rule in AWS IoT Core to use Amazon Kinesis Data Firehose to send data to an Amazon Kinesis data stream that is configured to write to an S3 bucket.
Ingest the data over Message Queuing Telemetry Transport (MQTT) to AWS IoT Core. Set up a rule in AWS IoT Core to direct all MQTT data to an Amazon Kinesis Data Firehose delivery stream that is configured to write to an S3 bucket.
Ingest the data over Message Queuing Telemetry Transport (MQTT) to Amazon Kinesis data stream that is configured to write to an S3 bucket.
Explanations:
Using EC2 instances with Auto Scaling and an Elastic Load Balancer is not optimal for this scenario. This setup adds unnecessary complexity and may not efficiently handle the high-velocity, real-time data ingestion required. Also, it does not directly address the low-bandwidth, unstable internet connectivity of the devices.
This option introduces unnecessary complexity by using both AWS IoT Core and Kinesis Data Streams. The use of Kinesis Data Streams with AWS IoT Core is not the most streamlined or cost-effective way to send telemetry data to S3. It also adds additional infrastructure without clear benefits.
This option leverages MQTT for efficient data transmission over low-bandwidth and unstable connections, with AWS IoT Core handling the ingestion and Kinesis Data Firehose delivering the data to S3. This setup is scalable, cost-effective, and optimized for high-velocity data ingestion with minimal overhead.
This option skips the benefit of AWS IoT Core, which is specifically designed for handling IoT device data. Sending data directly from MQTT to Kinesis Data Streams complicates the solution and misses out on the optimizations provided by AWS IoT Core for device communication.