j40-cejst-2/infrastructure
Lucas Scharenbroich 38fff9cea8
Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230)
* add basic infrastructure

* add cloudfront distribution

* WIP checkpoint

* add ecs cluster

* add conditions and route53 dns entry to cloudfront

* WIP checkin

* Added a raw execution mode for demo/testing

* Add pre-defined Task for ogr2ogr

* Tweak Task Definition name

* Mostly working except for logging error

* Add additional logging permissions

* Succesfully executed ogr2ogr in fargate.  S3 permissions needs to be addresses

* Add multipart permissions

* Add a few more actions

* Put IAM Policy on the correct resource

* Deploy lambda and update events

* fix iam permissions 🤦🏻‍♂️

* Add reference to Tippecanoe container

* Clean up to only use named actions

* Refactor resources to include support for tippecanoe

* Make a more interesting GDAL command

* Pull all ECS variables into environment file; successful test of running tippecanoe container

* Support pre/post commands

* Refactor codebase and enable linting

* Implement many-to-many enrichment between USDS CSV files and Census zipped shapefiles

* Change the GDAL image to one with the built-in drivers

* Add some additional fixes to support the enrichment use case

* Clean up old hello-world example

* Expand the README to include ways to execute the lambdas

* Validate scheduled lambda execution and then comment out

Co-authored-by: Tim Zwolak <timothypage@gmail.com>
2021-06-30 09:29:01 -04:00
..
functions/detect-changes-for-worker Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
conditions.yml Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
environment.yml Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
functions.yml Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
package-lock.json Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
package.json Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
README.md Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
resources-cloudfront.yml Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
resources-ecs.yml Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
resources-route53.yml Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
resources-s3.yml Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00
serverless.yml Fargate Serverless Workers for Census Data Enrichment and Tile Generation (#230) 2021-06-30 09:29:01 -04:00

create acm certificate

This only needs to be run once for the sit environment. stg and prd, we're assuming some other certificate arn will be used

npx serverless create-cert 

you'll have to grab the arn of the certificate from the log output or go into the console to get it, looks like the plugin doesn't work any more. Set CLOUDFRONT_CERTIFICATE_ARN in sit to that value

deploy

sls deploy --aws-profile geoplatform --stage sit --verbose

If it's the first time deploying, you'll have to create a dns entry that points to the cloudfront distribution.

testing

The examples can be run several different ways

local

The package.json file incluses several examples to run against the local source code. The actual tasks will execute within AWS, so an AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY must be set in the test.env file.

$ cd ./functions/detect-changes-for-worker
$ npm run test:gdal

lambda invoke

The deployed lambda functions can be directly invoked with the serverless invoke function.

$ cat ./functions/detect-changes-for-worker/events/gdal.json | sls invoke -s sit -f DetectChangesForWorker

New event files can be created to perform one-off data processes.