################################################################################ # Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # # # Licensed under the Apache License Version 2.0 (the "License"). You may not # # use this file except in compliance with the License. A copy of the License # # is located at # # # # http://www.apache.org/licenses/ # # # # or in the "license" file accompanying this file. This file is distributed # # on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express # # or implied. See the License for the specific language governing permissions # # and limitations under the License. # ################################################################################ s3bucket=s3://$(bucket)/ # directories containing deployed python code pydirs= actions boto_retry builders configuration handlers helpers metrics outputs scheduling services tagging py=$(foreach dir, $(pydirs), $(wildcard $(dir)/*.py)) # source sub dir of ecs related files ecsdir=../ecs ecs=$(wildcard $(ecsdir)/*) # destination directory to deploy to deployment=../.. # deployment=../../deployment global_assets_dir=$(deployment)/global-s3-assets regional_assets_dir=$(deployment)/regional-s3-assets zip = $(regional_assets_dir)/ops-automator.zip cw_zip = $(regional_assets_dir)/cloudwatch-handler.zip templates=$(wildcard ../../*.template) # build targets build: lambda cloudwatchhandler cfn docker ####################################################################### # lambda code # ####################################################################### lambda:$(py) main.py version.txt #================================================================== # make lambda #================================================================== mkdir -p $(deployment) mkdir -p $(regional_assets_dir) # delete old zip files find $(deployment) -maxdepth 1 -type f -name 'ops-automator.zip' -delete # build zip zip $(zip) version.txt mv main.py main.py.org sed s/%version%/$(version)/g main.py.org > main.py zip $(zip) main.py config.py rm main.py mv main.py.org main.py zip $(zip) $(pydirs) zip -r $(zip) $(py) version.txt zip -r -q $(zip) pytz zip -r -q $(zip) requests zip -r -q $(zip) urllib3 zip -r -q $(zip) chardet zip -r -q $(zip) idna zip -r -q $(zip) certifi zip $(zip) forward-events.py zip $(zip) build_task_custom_resource.py zip $(zip) ../cloudformation/AccountForwardEvents.template zip $(zip) ../cloudformation/scenarios/*.template zip $(zip) builders/actions.html ####################################################################### # cloudwatch handler code # ####################################################################### cloudwatchhandler: cloudwatch_queue_handler_lambda.py version.txt #================================================================== # make cloudwatchhandler #================================================================== mkdir -p $(deployment) # delete old zip files find $(deployment) -maxdepth 1 -type f -name 'cloudwatch-handler.zip' -delete # build zip zip $(cw_zip) version.txt mv cloudwatch_queue_handler_lambda.py cloudwatch_queue_handler_lambda.py.org sed s/%version%/$(version)/g cloudwatch_queue_handler_lambda.py.org > cloudwatch_queue_handler_lambda.py zip $(cw_zip) cloudwatch_queue_handler_lambda.py rm cloudwatch_queue_handler_lambda.py mv cloudwatch_queue_handler_lambda.py.org cloudwatch_queue_handler_lambda.py ####################################################################### # cloudformation templates # ####################################################################### cfn: version.txt $(templates) #================================================================== # make cfn #================================================================== mkdir -p $(deployment) mkdir -p $(global_assets_dir) # delete old templates find $(global_assets_dir) -maxdepth 1 -type f -name 'ops-automator.template' -delete # build main ops automator template python ./build-ops-automator-template.py ../cloudformation/ops-automator.template $(bucket) $(solution) $(version) > $(global_assets_dir)/ops-automator.template ####################################################################### # docker / ECS # ####################################################################### docker: $(ecs) #================================================================== # make docker #================================================================== mkdir -p $(deployment) mkdir -p $(deployment)/ecs # delete old files find $(deployment)/ecs -maxdepth 1 -type f -name '*' -delete # set version of ops automator runner script sed s/%version%/$(version)/g $(ecsdir)/ops-automator-ecs-runner.py > $(deployment)/ecs/ops-automator-ecs-runner.py # docker and readme file sed s/%version%/$(version)/g $(ecsdir)/Dockerfile > $(deployment)/ecs/Dockerfile.orig cp $(deployment)/dist/code/requirements.txt $(deployment)/ecs # build shell script for creating and pushing docker image python build-docker-script.py $(ecsdir)/build-and-deploy-image.sh $(bucket) $(version) $(prefix) > $(deployment)/ecs/build-and-deploy-image.sh chmod +x $(deployment)/ecs/*.sh cp -R $(deployment)/ecs $(global_assets_dir)