You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
5 months ago | |
|---|---|---|
| modules/lambda | 5 months ago | |
| src | 5 months ago | |
| .gitignore | 5 months ago | |
| .terraform.lock.hcl | 5 months ago | |
| 927-challenge-architecture.png | 5 months ago | |
| README.md | 5 months ago | |
| api_gw.frontend.tf | 5 months ago | |
| api_gw.load.tf | 5 months ago | |
| api_gw.metrics.tf | 5 months ago | |
| api_gw.tf | 5 months ago | |
| athena.tf | 5 months ago | |
| frontend.tf | 5 months ago | |
| load.tf | 5 months ago | |
| main.tf | 5 months ago | |
| metrics.tf | 5 months ago | |
| providers.tf | 5 months ago | |
| s3.tf | 5 months ago | |
| terraform_graph.png | 5 months ago | |
README.md
Justifications
- Athena
- Less up-front configuration involved. I hope.
- AWS wants to lock you into their ecosystem so it'll be cheaper.
- In the future, we can switch from CSV to JSON or Parquet or mix and match without any overhead.
- API Gateway
- Rate limiting and caching built-in
- Abstracts interfacing with the API away from raw lambda invocation URLs
- Can be mapped to a domain
- Athena
- Less up-front configuration involved. I hope.
- AWS wants to lock you into their ecosystem so it'll be cheaper.
- In the future, we can switch from CSV to JSON or Parquet or mix and match without any overhead.
Challenge Deliverables
- Architecture diagram
- saved as a PNG
- Explain decisions and trade-offs
- Document in README.md
- Terraform repo scaffolding out the service
Air Traffic Metrics
- Ingest raw data into S3
- S3 Bucket
- Bucket best practices
- Buckets aren't public
- Only
loadlambda can add objects - Only Athena can read objects
- ????
- Bucket best practices
- S3 Bucket
- Database of my choice
- Athena?
- Less up-front configuration involved. I hope.
- AWS wants to lock you into their ecosystem so it'll be cheaper.
- In the future, we can switch from CSV to JSON or Parquet or mix and match without any overhead.
- Aurora (Postgresql)
- Aurora (Mysql)
- Athena?
- API to interact with the data
- API Gateway
- Policy that grants it lambda invocation rights
/loadendpoint- Python lambda to upload data to bucket
- Example data: https://zenodo.org/records/5377831
- Python lambda to upload data to bucket
/metricsendpoint- Python lambda that returns the following:
- row_count: number of rows in table for full data set
- last_transponder_seen_at: maximum value for
lastseen - most_popular_destination: most seen value for destination
- count_of_unique_transponders: unique count of the icao24 field
- Execution role that grants it access to athena database
- Python lambda that returns the following:
- API Gateway
- Frontend to display the data
- Python lambda that renders an HTML page that displays above metrics