├── .github └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── LICENSE ├── NOTICE ├── README.md ├── admin-stack └── eventpublisher.yml ├── admin ├── lambda │ └── aggregator.py └── readme.md ├── archive ├── README.md └── reinvent2017 │ ├── workshop1 │ ├── code │ │ ├── Dockerfile.draft │ │ ├── monolith.py │ │ └── requirements.txt │ ├── generateindex.sh │ ├── hints │ │ ├── Dockerfile.anotherhint │ │ ├── Dockerfile.hint │ │ └── bonuslab-monolith.py │ ├── images │ │ ├── 0-cloudformation-create.png │ │ ├── 1-container-image.png │ │ ├── 1-docker-run-ps-attach.png │ │ ├── 1-ec2-IP.png │ │ ├── 1-ecr-monolith.png │ │ ├── 1-ecr-push-complete.png │ │ ├── 1-ecr-repo-uri.png │ │ ├── 1-ecr-repo.png │ │ ├── 2-awslogs-config.png │ │ ├── 2-cloudwatch-logs.png │ │ ├── 2-cwl-confirm.png │ │ ├── 2-cwl-logs.png │ │ ├── 2-run-task.png │ │ ├── 2-task-def-add-container.png │ │ ├── 2-task-def-new-rev.png │ │ ├── 2-task-state-pending.png │ │ ├── 2-task-state-running.png │ │ ├── bonus-alb-dns.png │ │ ├── bonus-alb-sg.png │ │ ├── bonus-alb-sns-sub.png │ │ ├── bonus-alb-target-group.png │ │ ├── bonus-alb.png │ │ ├── bonus-cluster.png │ │ ├── bonus-ecr-images.png │ │ ├── bonus-ecs-service-1.png │ │ ├── bonus-ecs-service-confirm.png │ │ ├── bonus-ecs-service-container.png │ │ ├── bonus-ecs-service-elb.png │ │ ├── bonus-ecs-service-update-count.png │ │ ├── bonus-ecs-service-update.png │ │ ├── bonus-ecs-service-updated-1.png │ │ ├── bonus-ecs-service-updated-2.png │ │ ├── bonus-ecs-service.png │ │ ├── bonus-task-def-host-port.png │ │ ├── starthere.png │ │ ├── workshop1-bonus-lab.png │ │ ├── workshop1-lab1.png │ │ └── workshop1-lab2.png │ ├── index.html │ ├── readme.md │ ├── starthere.yaml │ └── temp.sh │ ├── workshop2 │ ├── code │ │ ├── iridium │ │ │ ├── Dockerfile │ │ │ ├── iridium.py │ │ │ └── requirements.txt │ │ ├── magnesite │ │ │ ├── Dockerfile │ │ │ ├── magnesite.py │ │ │ └── requirements.txt │ │ └── monolith │ │ │ ├── Dockerfile │ │ │ ├── monolith.py │ │ │ └── requirements.txt │ ├── generateindex.sh │ ├── hints │ │ ├── lab2-monolith.py │ │ ├── lab3-iridium.py │ │ └── lab3-monolith.py │ ├── images │ │ ├── 0-cloudformation-create.png │ │ ├── 1-awslogs-config.png │ │ ├── 1-cloudwatch-logs.png │ │ ├── 1-cwl-confirm.png │ │ ├── 1-cwl-logs.png │ │ ├── 1-ec2-IP.png │ │ ├── 1-ecr-latest.png │ │ ├── 1-ecr-monolith-uri.png │ │ ├── 1-ecr-push-complete.png │ │ ├── 1-ecr-repos.png │ │ ├── 1-ecs-service-mono.png │ │ ├── 1-task-def-add-container.png │ │ ├── 2-cluster-view.png │ │ ├── 2-cwlogs-bak.png │ │ ├── 2-cwlogs-logs.png │ │ ├── 2-cwlogs.png │ │ ├── 2-ecr-iridium.png │ │ ├── 2-ecr-noiridium.png │ │ ├── 2-edit-container.png │ │ ├── 2-find-instance.png │ │ ├── 2-find-mono-task.png │ │ ├── 2-iridium-running.png │ │ ├── 2-kill-iridium.png │ │ ├── 2-modify-image.png │ │ ├── 2-note-ip.png │ │ ├── 2-remove-iridium.png │ │ ├── 2-service-update.png │ │ ├── 2-service-updated.png │ │ ├── 2-task-def-new-rev.png │ │ ├── 3-alb-pub-dns.png │ │ ├── 3-alb-sg-step-3.png │ │ ├── 3-alb-sns-sub.png │ │ ├── 3-alb-step-1.png │ │ ├── 3-alb-target-group-step-4.png │ │ ├── 3-ecs-service-container.png │ │ ├── 3-ecs-service-elb.png │ │ ├── 3-ecs-service.png │ │ ├── 3-iridium-service.png │ │ ├── 3-iridium-task-update-1.png │ │ ├── 3-iridium-task-update-2.png │ │ ├── 3-new-task-def-monolith.png │ │ ├── 4-ecs-net-1.png │ │ ├── 4-ecs-net-2.png │ │ ├── 4-ecs-service.png │ │ ├── 4-elb-path.png │ │ ├── after.png │ │ ├── before.png │ │ ├── starthere.png │ │ ├── workshop2-lab1.png │ │ ├── workshop2-lab2.png │ │ └── workshop2-lab3.png │ ├── index.html │ ├── readme.md │ ├── starthere.yaml │ └── temp.sh │ ├── workshop3 │ ├── code │ │ ├── iridium │ │ │ ├── Dockerfile │ │ │ ├── buildspec.yml.draft │ │ │ ├── cfn-nag-buildspec.yml.draft │ │ │ ├── iridium.py │ │ │ ├── requirements.txt │ │ │ └── service.yml │ │ ├── magnesite │ │ │ ├── Dockerfile │ │ │ ├── magnesite.py │ │ │ └── requirements.txt │ │ └── monolith │ │ │ ├── Dockerfile │ │ │ ├── monolith.py │ │ │ └── requirements.txt │ ├── create-eks-cluster.yaml │ ├── generateindex.sh │ ├── hints │ │ ├── accesskeys-buildspec.yml │ │ ├── final-service.yml │ │ ├── finalhintspec.yml │ │ ├── hint1-cfn-nag-buildspec.yml │ │ ├── hintspec.yml │ │ └── new-service.yml │ ├── images │ │ ├── 0-ecr-monolith-uri.png │ │ ├── 0-ecr-repos.png │ │ ├── 0-ecs-service-mono.png │ │ ├── 0-ecs-svc-create-1.png │ │ ├── 0-ecs-svc-create-2.png │ │ ├── 0-ecs-svc-create-3.png │ │ ├── 0-overview.png │ │ ├── 0-task-def-create-svc.png │ │ ├── 0-task-def-create.png │ │ ├── 0-task-def-logs.png │ │ ├── 1-arch-codebuild.png │ │ ├── 1-cb-add-policy.png │ │ ├── 1-cb-create-project-1.png │ │ ├── 1-cb-create-project-2.bak.png │ │ ├── 1-cb-create-project-2.png │ │ ├── 1-cb-modify-iam.png │ │ ├── 1-cb-success.png │ │ ├── 1-cc-committed.png │ │ ├── 1-cc-createiam.png │ │ ├── 1-cc-generate-creds.png │ │ ├── 1-ec2-IP.png │ │ ├── 1-ecr-get-iridium-commands.png │ │ ├── 1-ecr-new-image.png │ │ ├── 2-alb-sns-sub.png │ │ ├── 2-cp-build-failure-details.png │ │ ├── 2-cp-build-failure-execution.png │ │ ├── 2-cp-build-failure.bak.png │ │ ├── 2-cp-build-failure.png │ │ ├── 2-cp-create-cb-2.png │ │ ├── 2-cp-create-cb.png │ │ ├── 2-cp-create-gate.png │ │ ├── 2-cp-create-name.png │ │ ├── 2-cp-create-source.png │ │ ├── 2-cp-deploy-step.png │ │ ├── 2-cp-deploy-to-cfn.png │ │ ├── 2-cp-first-execution.png │ │ ├── 2-cp-svc-role.png │ │ ├── 3-cp-cfn-nag-error.png │ │ ├── 3-cp-create-test-2.png │ │ ├── 3-cp-create-test.png │ │ ├── 3-cp-failed-tests.png │ │ ├── arch-endstate.png │ │ ├── arch-starthere.png │ │ ├── bak-2-cp-create-cb-2.png │ │ ├── cfn-create-complete.png │ │ ├── cfn-createstack-1.png │ │ ├── cfn-iam-capabilities.png │ │ └── ecssplash.png │ ├── index.html │ ├── readme.md │ ├── starthere.yaml │ └── tests │ │ └── checkaccesskeys.sh │ └── workshop4 │ ├── code │ ├── fulfill │ │ ├── Dockerfile │ │ ├── fulfill.py │ │ └── requirements.txt │ ├── gatling │ │ ├── Dockerfile │ │ ├── advancedSim.scala │ │ ├── basicSim.scala │ │ ├── gatling.conf │ │ └── run.sh │ ├── iridium │ │ ├── Dockerfile │ │ ├── iridium.py │ │ └── requirements.txt │ ├── magnesite │ │ ├── Dockerfile │ │ ├── magnesite.py │ │ └── requirements.txt │ └── xray │ │ ├── Dockerfile │ │ └── xray │ ├── hints │ ├── fulfill.py │ ├── iridium.py │ └── magnesite.py │ ├── images │ ├── 0-cloudformation-create.png │ ├── 1-awslogs-config.png │ ├── 1-cloudwatch-logs.png │ ├── 1-cwl-confirm.png │ ├── 1-cwl-logs.png │ ├── 1-ec2-IP.png │ ├── 1-ecr-latest.png │ ├── 1-ecr-monolith-uri.png │ ├── 1-ecr-push-complete.png │ ├── 1-ecr-repos.png │ ├── 1-ecs-service-mono.png │ ├── 1-task-def-add-container.png │ ├── 2-cluster-view.png │ ├── 2-cwlogs-bak.png │ ├── 2-cwlogs-logs.png │ ├── 2-cwlogs.png │ ├── 2-ecr-iridium.png │ ├── 2-ecr-noiridium.png │ ├── 2-edit-container.png │ ├── 2-find-instance.png │ ├── 2-find-mono-task.png │ ├── 2-iridium-running.png │ ├── 2-kill-iridium.png │ ├── 2-modify-image.png │ ├── 2-note-ip.png │ ├── 2-remove-iridium.png │ ├── 2-service-update.png │ ├── 2-service-updated.png │ ├── 2-task-def-new-rev.png │ ├── 3-alb-pub-dns.png │ ├── 3-alb-sg-step-3.png │ ├── 3-alb-sns-sub.png │ ├── 3-alb-step-1.png │ ├── 3-alb-target-group-step-4.png │ ├── 3-ecs-service-container.png │ ├── 3-ecs-service-elb.png │ ├── 3-ecs-service.png │ ├── 3-iridium-service.png │ ├── 3-iridium-task-update-1.png │ ├── 3-iridium-task-update-2.png │ ├── 3-new-task-def-monolith.png │ ├── 4-ecs-net-1.png │ ├── 4-ecs-net-2.png │ ├── 4-ecs-service.png │ ├── 4-elb-path.png │ ├── XRaySS.png │ ├── after.png │ ├── before.png │ ├── ecr_fulfill_uri.png │ ├── gatling_baseurl.png │ ├── starthere.png │ ├── workshop2-lab1.png │ ├── workshop2-lab2.png │ ├── workshop2-lab3.png │ ├── ws4l1_fulfill_working.png │ ├── ws4l1_fulfill_working_cloudwatchlog.png │ ├── ws4l1_loadbalancer.png │ ├── ws4l1_push_success.png │ ├── ws4l1_taskdef_logconfig.png │ ├── ws4l1loggroups.png │ ├── ws4l2_ec2.png │ ├── ws4l2_gatlingresults.png │ ├── ws4l2_htmllink.png │ ├── ws4l2_makepublic.png │ ├── ws4l2_mount_vols.png │ ├── ws4l2_override.png │ ├── ws4l2_s3_public.png │ ├── ws4l2_vol_popup.png │ ├── ws4l2_volumes.png │ ├── ws4l3_xray_log.png │ ├── ws4l3_xray_servicegraph.png │ ├── ws4lab1_fulfill_taskdef.png │ └── ws4lab1_repo.png │ ├── index.html │ ├── readme.md │ └── starthere.yaml ├── client ├── iridium │ ├── Dockerfile │ ├── iridium.py │ └── requirements.txt ├── magnesite │ ├── Dockerfile │ ├── magnesite.py │ └── requirements.txt └── monolith │ ├── Dockerfile │ ├── monolith.py │ └── requirements.txt ├── getkeypage ├── amazon-cognito-identity.min.js ├── aws-cognito-sdk.min.js ├── getkey.css ├── getkey.html ├── getkey.js └── ie10-viewport-bug-workaround.js ├── images ├── QRCode.pdf ├── deploy-to-aws.png ├── interstella-qrcode.jpg ├── mainsplash.png └── splash.png ├── index.html ├── js └── strapdown │ ├── strapdown.css │ ├── strapdown.js │ └── themes │ ├── LICENSE │ ├── README.md │ ├── amelia.min.css │ ├── bootstrap-responsive.min.css │ ├── bootstrap.min.css │ ├── cerulean.min.css │ ├── cyborg.min.css │ ├── journal.min.css │ ├── readable.min.css │ ├── simplex.min.css │ ├── slate.min.css │ ├── spacelab.min.css │ ├── spruce.min.css │ ├── superhero.min.css │ └── united.min.css ├── maintenance └── index.html ├── server ├── API_Swagger_Exports │ └── requestprocessor-production-swagger-integrations,authorizers,documentation,validators,gatewayresponses.yaml ├── admin │ ├── .ebextensions │ │ └── options.config │ ├── admin.py │ ├── cron.py │ └── requirements.txt ├── dynamoDB_Cfn │ └── insterstella888_requests_history.yaml └── lambdaFunctions │ └── processInterstella8888Requests │ └── processInterstella8888Requests.js ├── workshop-cicd ├── code │ ├── iridium │ │ ├── Dockerfile │ │ ├── Dockerfile.ubuntu │ │ ├── buildspec.yml.draft │ │ ├── cfn-nag-buildspec.yml.draft │ │ ├── iridium.py │ │ ├── requirements.txt │ │ └── service.yml │ └── monolith │ │ ├── Dockerfile │ │ ├── Dockerfile.alpine │ │ ├── Dockerfile.ubuntu │ │ ├── monolith.py │ │ └── requirements.txt ├── generateindex.sh ├── hints │ ├── accesskeys-buildspec.yml │ ├── final-service.yml │ ├── finalhintspec.yml │ ├── hint1-cfn-nag-buildspec.yml │ ├── hintspec.yml │ └── new-service.yml ├── images │ ├── 0-c9-2.png │ ├── 0-c9.png │ ├── 0-ecr-monolith-uri.png │ ├── 0-ecr-repos.png │ ├── 0-ecs-service-mono.png │ ├── 0-ecs-svc-create-1.png │ ├── 0-ecs-svc-create-2.png │ ├── 0-ecs-svc-create-3.png │ ├── 0-overview.png │ ├── 0-task-def-create-svc.png │ ├── 0-task-def-create.png │ ├── 0-task-def-logs.png │ ├── 00-api-key.png │ ├── 1-arch-codebuild.png │ ├── 1-cb-add-policy.png │ ├── 1-cb-create-project-1.png │ ├── 1-cb-create-project-2.bak.png │ ├── 1-cb-create-project-2.png │ ├── 1-cb-modify-iam.png │ ├── 1-cb-success.png │ ├── 1-cc-committed.png │ ├── 1-cc-createiam.png │ ├── 1-cc-generate-creds.png │ ├── 1-ec2-IP.png │ ├── 1-ecr-get-iridium-commands.png │ ├── 1-ecr-new-image.png │ ├── 2-alb-sns-sub.png │ ├── 2-cp-build-failure-details.png │ ├── 2-cp-build-failure-execution.png │ ├── 2-cp-build-failure.bak.png │ ├── 2-cp-build-failure.png │ ├── 2-cp-create-cb-2.png │ ├── 2-cp-create-cb.png │ ├── 2-cp-create-gate.png │ ├── 2-cp-create-name.png │ ├── 2-cp-create-source.png │ ├── 2-cp-deploy-step.png │ ├── 2-cp-deploy-to-cfn.png │ ├── 2-cp-first-execution.png │ ├── 2-cp-svc-role.png │ ├── 3-cp-cfn-nag-error.png │ ├── 3-cp-create-test-2.png │ ├── 3-cp-create-test.png │ ├── 3-cp-failed-tests.png │ ├── arch-endstate.png │ ├── arch-starthere.png │ ├── bak-2-cp-create-cb-2.png │ ├── cfn-create-complete.png │ ├── cfn-createstack-1.png │ ├── cfn-iam-capabilities.png │ └── ecssplash.png ├── index.html ├── readme.md ├── starthere.yaml └── tests │ └── checkaccesskeys.sh └── workshop-microservices ├── code ├── iridium │ ├── Dockerfile │ ├── iridium.py │ └── requirements.txt ├── magnesite │ ├── Dockerfile │ ├── magnesite.py │ └── requirements.txt └── monolith │ ├── Dockerfile.draft │ ├── installcredhelper.sh │ ├── monolith.py │ └── requirements.txt ├── images ├── 00-api-key.png ├── 00-arch.png ├── 00-cf-create.png ├── 01-arch.png ├── 01-c9-2.png ├── 01-c9-3.png ├── 01-c9.png ├── 01-container-image.png ├── 01-ec2-IP.png ├── 01-ecr-push-complete.png ├── 01-ecr-repo-uri.png ├── 01-ecr-repo.png ├── 02-arch.png ├── 02-awslogs.png ├── 02-cloudwatch-logs.png ├── 02-container-instance.png ├── 02-public-IP.png ├── 02-run-task.png ├── 02-stop-task.png ├── 02-task-def-add-container.png ├── 02-task-pending.png ├── 02-task-running.png ├── 03-alb-dns.png ├── 03-alb-sns-sub.png ├── 03-alb-step1.png ├── 03-alb-step3.png ├── 03-alb-step4.png ├── 03-arch.png ├── 03-container-def-update.png ├── 03-ecs-service-confirm.png ├── 03-ecs-service-step2.png ├── 03-ecs-service-step2a.png ├── 03-ecs-service.png ├── 03-edit-container.png ├── 03-logs-confirm.png ├── 03-task-def-update.png ├── 04-arch.png ├── 04-ecr-iridium.png ├── 04-ecr-noiridium.png ├── 04-ecs-service-alb.png ├── 04-ecs-service-step1.png ├── 04-ecs-service-vpc.png ├── 04-env-var.png ├── 04-fargate-containerdef.png ├── 04-fargate-logging.png ├── 04-fargate-taskdef.png ├── 04-iridium-service.png ├── 04-modify-image.png ├── 04-remove-iridium.png └── 04-service-update.png ├── readme.md └── templates └── starthere.yaml /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | *Issue #, if available:* 2 | 3 | *Description of changes:* 4 | 5 | 6 | By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.pyc 3 | localonly/ 4 | bin/ 5 | lib/ 6 | include/ 7 | pip-selfcheck.json 8 | *.zip 9 | .Python 10 | .vscode/ 11 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Amazon Ecs Interstella Workshop 2 | Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![ECS Interstella Workshop](/images/splash.png) 2 | # Do you have what it takes to code for Interstella? 3 | 4 | Welcome to the Interstella Intergalactic Trading Company team. 5 | 6 | Interstella is an trading company specializing in inter-system exchange of rare minerals and other goods. Several wise acquisitions made before the Great Ravine have given us unrestricted access on mining in several systems and business is booming. 7 | 8 | But our logistics platform wasn't built to handle this load and we're at risk of losing our trade routes. Our engineers have suggested we look at using modern application architectures, containers, and devops, but they don't know anything about implementing them. Can you help us update our logistics platform and become the largest trading consortium in the galaxy? 9 | 10 | ## Learning Paths: 11 | **Monolith to Microservices** 12 | 13 | [AWS SF Summit SRV329 - Building Microservices with AWS Fargate](/workshop-microservices) 14 | 15 | ...More to come! 16 | 17 | Have fun, we need you to make history! 18 | -------------------------------------------------------------------------------- /admin/lambda/aggregator.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import boto3 3 | import json 4 | import decimal 5 | from botocore.exceptions import ClientError 6 | from boto3.dynamodb.types import TypeDeserializer 7 | 8 | # Helper class to convert a DynamoDB item to JSON. 9 | class DecimalEncoder(json.JSONEncoder): 10 | def default(self, o): 11 | if isinstance(o, decimal.Decimal): 12 | if o % 1 > 0: 13 | return float(o) 14 | else: 15 | return int(o) 16 | return super(DecimalEncoder, self).default(o) 17 | 18 | dynamodb = boto3.resource('dynamodb', region_name='us-west-2') 19 | table = dynamodb.Table('FulfilledOrdersReqsAgg') 20 | des = TypeDeserializer() 21 | 22 | 23 | def lambda_handler(event, context): 24 | for record in event['Records']: 25 | d = {} 26 | print(record['eventID']) 27 | print(record['eventName']) 28 | #print(record['dynamodb']) 29 | 30 | if record['eventName'] == 'INSERT': 31 | try: 32 | for key in record['dynamodb']['NewImage']: 33 | d[key] = des.deserialize(record['dynamodb']['NewImage'][key]) 34 | apiKey = d['APIKey'] 35 | 36 | response = table.update_item( 37 | Key={ 38 | 'APIKey': apiKey 39 | }, 40 | UpdateExpression="SET resources = if_not_exists(resources, :start) + :val", 41 | ExpressionAttributeValues={ 42 | ':val': decimal.Decimal(1), 43 | ':start': 0, 44 | }, 45 | ReturnValues="UPDATED_NEW" 46 | ) 47 | 48 | print("UpdateItem succeeded:") 49 | print(json.dumps(response, indent=4, cls=DecimalEncoder)) 50 | except ClientError as e: 51 | print("SOMETHING WENT WRONG") 52 | print(e) 53 | 54 | print('Successfully processed %s records.' % str(len(event['Records']))) -------------------------------------------------------------------------------- /admin/readme.md: -------------------------------------------------------------------------------- 1 | # Instructions for running admin components 2 | - launch admin CF template 3 | - note arn for SNS topic for orders 4 | - note API gateway endpoint for fulfillment API 5 | - note S3 website URL -------------------------------------------------------------------------------- /archive/README.md: -------------------------------------------------------------------------------- 1 | # Welcome to the Archive 2 | 3 | The Interstella team has evolved the workshop based on participant feedback and new AWS services/features that have launched. Older versions of the workshop can be found here and may not run properly due to changes made in the shared infrastructure. The refreshed [microservices workshop](../workshop-microservices/) offers a better experience overall, so have a look and let us know what you think. 4 | 5 | We would love to hear your feedback to make sure we're making the best decisions for our customers - 6 | 7 | Thank you for your continued interest! -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/code/Dockerfile.draft: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT monolith 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | #[TODO]: Copy monolith.py and requirements file into container image 30 | 31 | #[TODO]: Install dependencies listed in the requirements.txt file using pip 32 | 33 | #[TODO]: Specify a listening port for the container 34 | 35 | #[TODO]: Run the monolith.py as the final step. We want this container to run as an executable. Looking at ENTRYPOINT for this? 36 | 37 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/code/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/generateindex.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #cat indexstart > index.html 3 | echo ' 4 | 5 | 6 | Lab Instructions 7 | 8 | 9 | 10 | 11 | 12 | 21 | 22 | 23 | " >> index.html 24 | #zip -r bundle tests/ code/ hints/ -x "*.DS_Store" 25 | aws s3 sync . s3://www.interstella.trade/workshop1/ --acl public-read --exclude ".DS_Store" 26 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/hints/Dockerfile.anotherhint: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT monolith 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./monolith.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "monolith.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/hints/Dockerfile.hint: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT monolith 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./monolith.py . 30 | COPY ./requirements.txt . 31 | 32 | RUN bin/pip install -r requirements.txt 33 | 34 | EXPOSE 5000 35 | 36 | ENTRYPOINT ["bin/python", "monolith.py"] -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/0-cloudformation-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/0-cloudformation-create.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/1-container-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/1-container-image.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/1-docker-run-ps-attach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/1-docker-run-ps-attach.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/1-ec2-IP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/1-ec2-IP.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/1-ecr-monolith.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/1-ecr-monolith.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/1-ecr-push-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/1-ecr-push-complete.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/1-ecr-repo-uri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/1-ecr-repo-uri.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/1-ecr-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/1-ecr-repo.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-awslogs-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-awslogs-config.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-cloudwatch-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-cloudwatch-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-cwl-confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-cwl-confirm.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-cwl-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-cwl-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-run-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-run-task.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-task-def-add-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-task-def-add-container.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-task-def-new-rev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-task-def-new-rev.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-task-state-pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-task-state-pending.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/2-task-state-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/2-task-state-running.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-alb-dns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-alb-dns.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-alb-sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-alb-sg.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-alb-sns-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-alb-sns-sub.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-alb-target-group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-alb-target-group.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-alb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-alb.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-cluster.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecr-images.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecr-images.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service-confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service-confirm.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service-container.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service-elb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service-elb.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service-update-count.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service-update-count.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service-update.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service-updated-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service-updated-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service-updated-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service-updated-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-ecs-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-ecs-service.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/bonus-task-def-host-port.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/bonus-task-def-host-port.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/starthere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/starthere.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/workshop1-bonus-lab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/workshop1-bonus-lab.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/workshop1-lab1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/workshop1-lab1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/images/workshop1-lab2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop1/images/workshop1-lab2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop1/temp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #cat indexstart > index.html 3 | echo ' 4 | 5 | 6 | Lab Instructions 7 | 8 | 9 | 10 | 11 | 12 | 21 | 22 | 23 | " >> index.html 24 | #zip -r bundle tests/ code/ hints/ -x "*.DS_Store" 25 | aws s3 sync . s3://www.interstella.trade/workshop1/ --acl public-read --exclude ".DS_Store" --profile bamazon 26 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/code/iridium/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT iridium 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./${PRODUCT}.py . 34 | 35 | EXPOSE 80 36 | 37 | ENTRYPOINT ["bin/python", "iridium.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/code/iridium/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/code/magnesite/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT magnesite 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./${PRODUCT}.py . 34 | 35 | EXPOSE 80 36 | 37 | ENTRYPOINT ["bin/python", "magnesite.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/code/magnesite/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/code/monolith/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT monolith 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./monolith.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "monolith.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/code/monolith/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/generateindex.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #cat indexstart > index.html 3 | echo ' 4 | 5 | 6 | Lab Instructions 7 | 8 | 9 | 10 | 11 | 12 | 21 | 22 | 23 | " >> index.html 24 | #zip -r bundle tests/ code/ hints/ -x "*.DS_Store" 25 | aws s3 sync . s3://www.interstella.trade/workshop2/ --acl public-read --exclude ".DS_Store" 26 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/0-cloudformation-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/0-cloudformation-create.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-awslogs-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-awslogs-config.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-cloudwatch-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-cloudwatch-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-cwl-confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-cwl-confirm.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-cwl-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-cwl-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-ec2-IP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-ec2-IP.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-ecr-latest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-ecr-latest.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-ecr-monolith-uri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-ecr-monolith-uri.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-ecr-push-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-ecr-push-complete.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-ecr-repos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-ecr-repos.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-ecs-service-mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-ecs-service-mono.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/1-task-def-add-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/1-task-def-add-container.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-cluster-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-cluster-view.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-cwlogs-bak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-cwlogs-bak.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-cwlogs-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-cwlogs-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-cwlogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-cwlogs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-ecr-iridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-ecr-iridium.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-ecr-noiridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-ecr-noiridium.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-edit-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-edit-container.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-find-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-find-instance.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-find-mono-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-find-mono-task.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-iridium-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-iridium-running.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-kill-iridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-kill-iridium.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-modify-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-modify-image.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-note-ip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-note-ip.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-remove-iridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-remove-iridium.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-service-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-service-update.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-service-updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-service-updated.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/2-task-def-new-rev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/2-task-def-new-rev.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-alb-pub-dns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-alb-pub-dns.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-alb-sg-step-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-alb-sg-step-3.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-alb-sns-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-alb-sns-sub.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-alb-step-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-alb-step-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-alb-target-group-step-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-alb-target-group-step-4.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-ecs-service-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-ecs-service-container.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-ecs-service-elb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-ecs-service-elb.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-ecs-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-ecs-service.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-iridium-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-iridium-service.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-iridium-task-update-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-iridium-task-update-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-iridium-task-update-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-iridium-task-update-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/3-new-task-def-monolith.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/3-new-task-def-monolith.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/4-ecs-net-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/4-ecs-net-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/4-ecs-net-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/4-ecs-net-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/4-ecs-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/4-ecs-service.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/4-elb-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/4-elb-path.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/after.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/before.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/starthere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/starthere.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/workshop2-lab1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/workshop2-lab1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/workshop2-lab2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/workshop2-lab2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/images/workshop2-lab3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop2/images/workshop2-lab3.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop2/temp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #cat indexstart > index.html 3 | echo ' 4 | 5 | 6 | Lab Instructions 7 | 8 | 9 | 10 | 11 | 12 | 21 | 22 | 23 | " >> index.html 24 | #zip -r bundle tests/ code/ hints/ -x "*.DS_Store" 25 | aws s3 sync . s3://www.interstella.trade/workshop2/ --acl public-read --exclude ".DS_Store" --profile bamazon 26 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/iridium/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT iridium 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./$PRODUCT.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "iridium.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/iridium/buildspec.yml.draft: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | pre_build: 5 | commands: 6 | - echo Logging in to Amazon ECR... 7 | - #[TODO]: Command to log into ECR. Remember, it has to be executed $(maybe like this?) 8 | build: 9 | commands: 10 | - echo Build started on `date` 11 | - echo Building the Docker image... 12 | - #[TODO]: Build the actual image using the current commit ID as the tag 13 | - #[TODO]: Tag the newly built Docker image so that we can push the image to ECR. See the instructions in your ECR console to find out how to do this. Make sure you use the current commit ID as the tag! 14 | post_build: 15 | commands: 16 | - echo Build completed on `date` 17 | - echo Pushing the Docker image... 18 | - #[TODO]: Push the Docker image up to ECR -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/iridium/cfn-nag-buildspec.yml.draft: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | pre_build: 5 | commands: 6 | - # TODO: INSTALL OR BUILD CFN-NAG 7 | build: 8 | commands: 9 | - echo 'In Build' 10 | - # TODO: RUN CFN-NAG -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/iridium/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/iridium/service.yml: -------------------------------------------------------------------------------- 1 | Parameters: 2 | Tag: 3 | Type: String 4 | 5 | DesiredCount: 6 | Type: Number 7 | Default: 2 8 | 9 | TargetGroupArn: 10 | Type: String 11 | 12 | Cluster: 13 | Type: String 14 | 15 | Repository: 16 | Type: String 17 | 18 | cloudWatchLogsGroup: 19 | Type: String 20 | 21 | CwlPrefix: 22 | Type: String 23 | 24 | 25 | Resources: 26 | ECSServiceRole: 27 | Type: AWS::IAM::Role 28 | Properties: 29 | Path: / 30 | AssumeRolePolicyDocument: | 31 | { 32 | "Statement": [{ 33 | "Effect": "Allow", 34 | "Principal": { "Service": [ "ecs.amazonaws.com" ]}, 35 | "Action": [ "sts:AssumeRole" ] 36 | }] 37 | } 38 | ManagedPolicyArns: 39 | - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole 40 | 41 | TaskDefinition: 42 | Type: AWS::ECS::TaskDefinition 43 | Properties: 44 | Family: iridium 45 | ContainerDefinitions: 46 | - Name: iridium 47 | Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository}:${Tag} 48 | Essential: true 49 | Memory: 128 50 | PortMappings: 51 | - ContainerPort: 5000 52 | Environment: 53 | - Name: Tag 54 | Value: !Ref Tag 55 | LogConfiguration: 56 | LogDriver: awslogs 57 | Options: 58 | awslogs-group: 59 | Ref: cloudWatchLogsGroup 60 | awslogs-region: 61 | Ref: AWS::Region 62 | awslogs-stream-prefix: 63 | Ref: CwlPrefix 64 | 65 | Service: 66 | Type: AWS::ECS::Service 67 | Properties: 68 | Cluster: !Ref Cluster 69 | DesiredCount: !Ref DesiredCount 70 | TaskDefinition: !Ref TaskDefinition 71 | Role: !Ref ECSServiceRole 72 | LoadBalancers: 73 | - TargetGroupArn: 74 | Ref: TargetGroupArn 75 | ContainerPort: 5000 76 | ContainerName: iridium -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/magnesite/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT magnesite 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./$PRODUCT.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "magnesite.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/magnesite/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/monolith/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT monolith 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./monolith.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "monolith.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/code/monolith/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/generateindex.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #cat indexstart > index.html 3 | echo ' 4 | 5 | 6 | Lab Instructions 7 | 8 | 9 | 10 | 11 | 12 | 21 | 22 | 23 | " >> index.html 24 | #zip -r bundle tests/ code/ hints/ -x "*.DS_Store" 25 | aws s3 sync . s3://www.interstella.trade/workshop3/ --acl public-read --exclude "*.DS_Store" --profile bamazon 26 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/hints/accesskeys-buildspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | build: 5 | commands: 6 | - ./tests/checkaccesskeys.sh -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/hints/final-service.yml: -------------------------------------------------------------------------------- 1 | Parameters: 2 | Tag: 3 | Type: String 4 | 5 | DesiredCount: 6 | Type: Number 7 | Default: 2 8 | 9 | TargetGroupArn: 10 | Type: String 11 | 12 | Cluster: 13 | Type: String 14 | 15 | Repository: 16 | Type: String 17 | 18 | cloudWatchLogsGroup: 19 | Type: String 20 | 21 | CwlPrefix: 22 | Type: String 23 | 24 | 25 | Resources: 26 | ECSServiceRole: 27 | Type: AWS::IAM::Role 28 | Properties: 29 | Path: / 30 | AssumeRolePolicyDocument: | 31 | { 32 | "Statement": [{ 33 | "Effect": "Allow", 34 | "Principal": { "Service": [ "ecs.amazonaws.com" ]}, 35 | "Action": [ "sts:AssumeRole" ] 36 | }] 37 | } 38 | ManagedPolicyArns: 39 | - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole 40 | 41 | ECSTaskRole: 42 | Type: AWS::IAM::Role 43 | Properties: 44 | Path: / 45 | AssumeRolePolicyDocument: | 46 | { 47 | "Statement": [{ 48 | "Effect": "Allow", 49 | "Principal": { "Service": [ "ecs-tasks.amazonaws.com" ]}, 50 | "Action": [ "sts:AssumeRole" ] 51 | }] 52 | } 53 | Policies: 54 | - 55 | PolicyName: "root" 56 | PolicyDocument: 57 | Version: "2012-10-17" 58 | Statement: 59 | - 60 | Effect: "Allow" 61 | Action: 62 | - ssm:DescribeParameters 63 | - ssm:GetParameters 64 | - ssm:GetParameter 65 | Resource: 66 | - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/interstella/fulfillmentEndpoint 67 | - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/interstella/iridiumSubscriptionArn 68 | 69 | TaskDefinition: 70 | Type: AWS::ECS::TaskDefinition 71 | Properties: 72 | Family: iridium 73 | ContainerDefinitions: 74 | - Name: iridium 75 | Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository}:${Tag} 76 | Essential: true 77 | Memory: 128 78 | PortMappings: 79 | - ContainerPort: 5000 80 | Environment: 81 | - Name: Tag 82 | Value: !Ref Tag 83 | TaskRoleArn: !Ref ECSTaskRole 84 | LogConfiguration: 85 | LogDriver: awslogs 86 | Options: 87 | awslogs-group: 88 | Ref: cloudWatchLogsGroup 89 | awslogs-region: 90 | Ref: AWS::Region 91 | awslogs-stream-prefix: 92 | Ref: CwlPrefix 93 | 94 | Service: 95 | Type: AWS::ECS::Service 96 | Properties: 97 | Cluster: !Ref Cluster 98 | DesiredCount: !Ref DesiredCount 99 | TaskDefinition: !Ref TaskDefinition 100 | Role: !Ref ECSServiceRole 101 | LoadBalancers: 102 | - TargetGroupArn: 103 | Ref: TargetGroupArn 104 | ContainerPort: 5000 105 | ContainerName: iridium -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/hints/finalhintspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | env: 4 | parameter-store: 5 | targetGroup: /interstella/iridiumTargetGroupArn 6 | cloudWatchLogsGroup: /interstella/cloudWatchLogsGroup 7 | ecsClusterName: /interstella/ecsClusterName 8 | phases: 9 | pre_build: 10 | commands: 11 | - echo Logging in to Amazon ECR... 12 | - $(aws ecr get-login --region $AWS_DEFAULT_REGION) 13 | - TAG="$(case "$CODEBUILD_INITIATOR" in "codepipeline/"*) echo $CODEBUILD_RESOLVED_SOURCE_VERSION ;; *) echo $CODEBUILD_SOURCE_VERSION ;; esac)" 14 | build: 15 | commands: 16 | - echo Build started on `date` 17 | - echo Building the Docker image... 18 | - docker build -t $IMAGE_REPO_NAME:$TAG . 19 | - docker tag $IMAGE_REPO_NAME:$TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$TAG 20 | post_build: 21 | commands: 22 | - echo Build completed on `date` 23 | - echo Pushing the Docker image... 24 | - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$TAG 25 | - printf '{"Parameters":{"Tag":"%s","DesiredCount":"2","TargetGroupArn":"%s","Cluster":"%s","Repository":"%s", "cloudWatchLogsGroup":"%s","CwlPrefix":"%s"}}' $TAG $targetGroup $ecsClusterName $IMAGE_REPO_NAME $cloudWatchLogsGroup $ENV_TYPE > build.json 26 | artifacts: 27 | files: 28 | - build.json 29 | - service.yml 30 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/hints/hint1-cfn-nag-buildspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | pre_build: 5 | commands: 6 | - gem install cfn-nag 7 | build: 8 | commands: 9 | - echo 'In Build' 10 | - cfn_nag_scan --input-path service.yml -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/hints/hintspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | pre_build: 5 | commands: 6 | - echo Logging in to Amazon ECR... 7 | - $(aws ecr get-login --region $AWS_DEFAULT_REGION) 8 | build: 9 | commands: 10 | - echo Build started on `date` 11 | - echo Building the Docker image... 12 | - docker build -t $IMAGE_REPO_NAME:$CODEBUILD_SOURCE_VERSION . 13 | - docker tag $IMAGE_REPO_NAME:$CODEBUILD_SOURCE_VERSION $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$CODEBUILD_SOURCE_VERSION 14 | post_build: 15 | commands: 16 | - echo Build completed on `date` 17 | - echo Pushing the Docker image... 18 | - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$CODEBUILD_SOURCE_VERSION -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/hints/new-service.yml: -------------------------------------------------------------------------------- 1 | Parameters: 2 | Tag: 3 | Type: String 4 | 5 | DesiredCount: 6 | Type: Number 7 | Default: 2 8 | 9 | TargetGroupArn: 10 | Type: String 11 | Cluster: 12 | Type: String 13 | 14 | Repository: 15 | Type: String 16 | 17 | cloudWatchLogsGroup: 18 | Type: String 19 | 20 | CwlPrefix: 21 | Type: String 22 | 23 | 24 | Resources: 25 | ECSServiceRole: 26 | Type: AWS::IAM::Role 27 | Properties: 28 | Path: / 29 | AssumeRolePolicyDocument: | 30 | { 31 | "Statement": [{ 32 | "Effect": "Allow", 33 | "Principal": { "Service": [ "ecs.amazonaws.com" ]}, 34 | "Action": [ "sts:AssumeRole" ] 35 | }] 36 | } 37 | ManagedPolicyArns: 38 | - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole 39 | 40 | ECSTaskRole: 41 | Type: AWS::IAM::Role 42 | Properties: 43 | Path: / 44 | AssumeRolePolicyDocument: | 45 | { 46 | "Statement": [{ 47 | "Effect": "Allow", 48 | "Principal": { "Service": [ "ecs-tasks.amazonaws.com" ]}, 49 | "Action": [ "sts:AssumeRole" ] 50 | }] 51 | } 52 | Policies: 53 | - 54 | PolicyName: "root" 55 | PolicyDocument: 56 | Version: "2012-10-17" 57 | Statement: 58 | - 59 | Effect: "Allow" 60 | Action: "*" 61 | Resource: "*" 62 | 63 | TaskDefinition: 64 | Type: AWS::ECS::TaskDefinition 65 | Properties: 66 | Family: iridium 67 | ContainerDefinitions: 68 | - Name: iridium 69 | Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository}:${Tag} 70 | Essential: true 71 | Memory: 128 72 | PortMappings: 73 | - ContainerPort: 5000 74 | Environment: 75 | - Name: Tag 76 | Value: !Ref Tag 77 | TaskRoleArn: !Ref ECSTaskRole 78 | LogConfiguration: 79 | LogDriver: awslogs 80 | Options: 81 | awslogs-group: 82 | Ref: cloudWatchLogsGroup 83 | awslogs-region: 84 | Ref: AWS::Region 85 | awslogs-stream-prefix: 86 | Ref: CwlPrefix 87 | 88 | Service: 89 | Type: AWS::ECS::Service 90 | Properties: 91 | Cluster: !Ref Cluster 92 | DesiredCount: !Ref DesiredCount 93 | TaskDefinition: !Ref TaskDefinition 94 | Role: !Ref ECSServiceRole 95 | LoadBalancers: 96 | - TargetGroupArn: 97 | Ref: TargetGroupArn 98 | ContainerPort: 5000 99 | ContainerName: iridium -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-ecr-monolith-uri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-ecr-monolith-uri.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-ecr-repos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-ecr-repos.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-ecs-service-mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-ecs-service-mono.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-ecs-svc-create-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-ecs-svc-create-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-ecs-svc-create-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-ecs-svc-create-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-ecs-svc-create-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-ecs-svc-create-3.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-overview.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-task-def-create-svc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-task-def-create-svc.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-task-def-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-task-def-create.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/0-task-def-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/0-task-def-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-arch-codebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-arch-codebuild.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cb-add-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cb-add-policy.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cb-create-project-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cb-create-project-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cb-create-project-2.bak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cb-create-project-2.bak.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cb-create-project-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cb-create-project-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cb-modify-iam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cb-modify-iam.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cb-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cb-success.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cc-committed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cc-committed.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cc-createiam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cc-createiam.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-cc-generate-creds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-cc-generate-creds.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-ec2-IP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-ec2-IP.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-ecr-get-iridium-commands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-ecr-get-iridium-commands.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/1-ecr-new-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/1-ecr-new-image.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-alb-sns-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-alb-sns-sub.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-build-failure-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-build-failure-details.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-build-failure-execution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-build-failure-execution.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-build-failure.bak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-build-failure.bak.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-build-failure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-build-failure.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-create-cb-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-create-cb-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-create-cb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-create-cb.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-create-gate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-create-gate.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-create-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-create-name.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-create-source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-create-source.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-deploy-step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-deploy-step.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-deploy-to-cfn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-deploy-to-cfn.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-first-execution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-first-execution.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/2-cp-svc-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/2-cp-svc-role.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/3-cp-cfn-nag-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/3-cp-cfn-nag-error.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/3-cp-create-test-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/3-cp-create-test-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/3-cp-create-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/3-cp-create-test.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/3-cp-failed-tests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/3-cp-failed-tests.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/arch-endstate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/arch-endstate.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/arch-starthere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/arch-starthere.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/bak-2-cp-create-cb-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/bak-2-cp-create-cb-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/cfn-create-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/cfn-create-complete.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/cfn-createstack-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/cfn-createstack-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/cfn-iam-capabilities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/cfn-iam-capabilities.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/images/ecssplash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop3/images/ecssplash.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop3/tests/checkaccesskeys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ACCESSKEYS=$(grep -REHnw '[A-Z0-9]{20}' *) 4 | SECRETKEYS=$(grep -REHnw '[A-Za-z0-9/\+=]{40}' *) 5 | 6 | # By default, grep will show the output of the pattern matches, but since we don't want to log our access or secret keys anywhere, we're stripping them out before logging anything. 7 | 8 | STATUS=0 9 | if [ ! -z "$ACCESSKEYS" ]; then 10 | echo "ERROR: Access Keys Detected:" 11 | echo "$ACCESSKEYS" | awk -F ':' '{print "File:", $1, "| Line:",$2}' 12 | # We would typically put some sort of notification function here. Maybe send out an SNS notification to a security alias. 13 | STATUS=1 14 | else 15 | echo "No access keys detected" 16 | fi 17 | if [ ! -z "$SECRETKEYS" ]; then 18 | echo "WARNING: Secret Keys Detected" 19 | echo "$SECRETKEYS" | awk -F ':' '{print "File:", $1, "| Line:",$2}' 20 | # We would typically put some sort of notification function here. Maybe send out an SNS notification to a security alias. 21 | # Not setting a status here because a lot of things can match this regex. Git commit IDs for example. 22 | else 23 | echo "No secret keys detected" 24 | fi 25 | 26 | exit $STATUS 27 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/fulfill/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT fulfill 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./fulfill.py . 34 | 35 | EXPOSE 80 36 | 37 | ENTRYPOINT ["bin/python", "fulfill.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/fulfill/fulfill.py: -------------------------------------------------------------------------------- 1 | #!bin/python 2 | 3 | import time 4 | from flask import Flask 5 | from flask import request 6 | import json 7 | import requests 8 | import boto3 9 | from urllib2 import urlopen 10 | import logging 11 | import sys 12 | 13 | portNum = 80 14 | 15 | logging.basicConfig(stream=sys.stdout, level=logging.INFO) 16 | # Get API Key and parameters from SSM 17 | region = urlopen('http://169.254.169.254/latest/meta-data/placement/availability-zone').read().decode('utf-8') 18 | ssmClient = boto3.client('ssm',region_name=region[:-1]) 19 | 20 | apiKey = ssmClient.get_parameter(Name='/interstella/apiKey')['Parameter']['Value'] 21 | endpoint = ssmClient.get_parameter(Name='/interstella/apiEndpoint')['Parameter']['Value'] 22 | 23 | def fulfill(apiKey, endpoint, iridium, magnesite): 24 | if apiKey == '': 25 | return 'Missing API Key' 26 | elif endpoint == '': 27 | return 'Missing endpoint' 28 | else: 29 | headers = {'x-api-key': apiKey} 30 | data = {'iridium': iridium, 'magnesite': magnesite} 31 | try: 32 | print 'Trying to send a request to the API' 33 | response = requests.post(endpoint, headers=headers, data=json.dumps(data)) 34 | if response.status_code == requests.codes.ok: 35 | print 'API Status Code: '+str(response.status_code) 36 | return response.status_code 37 | else: 38 | response.raise_for_status() 39 | except Exception as e: 40 | print e 41 | response = e 42 | return response 43 | 44 | app = Flask(__name__) 45 | 46 | @app.route('/', methods=['GET']) 47 | def index(): 48 | return "Welcome to the fulfillment service" 49 | 50 | # Fulfillment service 51 | # Expects a POST of {'thing': '1'} from microservice until we separate fulfillment into its own microservice as well 52 | # def fulfill(apiKey, endpoint, spiceMelange, vespene, dilithium, tiberium) 53 | @app.route('/fulfill/', methods=['POST']) 54 | def glueFulfill(): 55 | if request.method == 'POST': 56 | iridium = 0 57 | magnesite = 0 58 | 59 | try: 60 | # The payload should always be {"item": "1"}. Any other format is wrong, so discard. 61 | payload = request.get_json(force=True) 62 | if (len(payload)) != 1: 63 | print 'Payload incorrectly formatted' 64 | print 'The data sent was %s' % payload['Message'] 65 | return 'Nothing to fulfill. JSON did not satisfy fulfillment criteria' 66 | elif 'iridium' in payload: 67 | iridium = 1 68 | elif 'magnesite' in payload: 69 | magnesite = 1 70 | else: 71 | print 'Payload did not include one of the 4 things to fulfill' 72 | return 'Nothing to fulfill. JSON did not satisfy fulfillment criteria' 73 | result = fulfill(apiKey, endpoint, iridium, magnesite) 74 | if result == requests.codes.ok: 75 | print 'Fulfillment request succeeded' 76 | return 'Your fulfillment request has been delivered' 77 | else: 78 | print 'Fulfillment request failed' 79 | return 'Your fulfillment request has failed' 80 | except Exception as e: 81 | # Looks like it wasn't. 82 | # print 'Something went wrong with fulfillment. Is the API Online?' 83 | print e 84 | return 'Something went wrong with fulfillment. Is the API Online?' 85 | 86 | return "Something totally went wrong" 87 | else: 88 | # We should never get here 89 | return "This is not the page you are looking for" 90 | 91 | if __name__ == '__main__': 92 | app.run(debug=True, host='0.0.0.0', port=portNum) 93 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/fulfill/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/gatling/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jdk-alpine 2 | 3 | # copy custom entrypoint shell script 4 | COPY ./run.sh /usr/local/bin 5 | 6 | # install aws cli 7 | RUN apk -v --update add \ 8 | python \ 9 | py-pip &&\ 10 | pip install awscli 11 | 12 | # working directory for gatling 13 | WORKDIR /opt 14 | 15 | # gating version 16 | ENV GATLING_VERSION 2.3.0 17 | 18 | # create directory for gatling install 19 | RUN mkdir -p gatling 20 | 21 | # install gatling 22 | RUN apk add --update wget bash && \ 23 | mkdir -p /tmp/downloads && \ 24 | wget -q -O /tmp/downloads/gatling-$GATLING_VERSION.zip \ 25 | https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/$GATLING_VERSION/gatling-charts-highcharts-bundle-$GATLING_VERSION-bundle.zip && \ 26 | mkdir -p /tmp/archive && cd /tmp/archive && \ 27 | unzip /tmp/downloads/gatling-$GATLING_VERSION.zip && \ 28 | mv /tmp/archive/gatling-charts-highcharts-bundle-$GATLING_VERSION/* /opt/gatling/ && \ 29 | rm -rf /tmp/* 30 | 31 | # change context to gatling directory 32 | WORKDIR /opt/gatling 33 | 34 | # set directories below to be mountable from host 35 | VOLUME ["/opt/gatling/conf", "/opt/gatling/results", "/opt/gatling/user-files"] 36 | 37 | # set environment variables 38 | ENV PATH /opt/gatling/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 39 | ENV GATLING_HOME /opt/gatling 40 | 41 | ENTRYPOINT ["/usr/local/bin/run.sh"] 42 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/gatling/advancedSim.scala: -------------------------------------------------------------------------------- 1 | /** 2 | * basic load testing script 3 | * 4 | */ 5 | package interstella 6 | 7 | import io.gatling.core.Predef._ 8 | import io.gatling.http.Predef._ 9 | import scala.concurrent.duration._ 10 | 11 | class advancedSim extends Simulation { 12 | 13 | val httpConf = http 14 | .baseURL("http://stack-loadb-1ki8v4xe20kwt-905242917.us-west-2.elb.amazonaws.com") // Here is the root for all relative URLs, insert microservice url 15 | .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // Here are the common headers 16 | .doNotTrackHeader("1") 17 | .acceptLanguageHeader("en-US,en;q=0.5") 18 | .acceptEncodingHeader("gzip, deflate") 19 | .userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0") 20 | 21 | val headers_10 = Map("Content-Type" -> "application/x-www-form-urlencoded") // Note the headers specific to a given request 22 | 23 | val scn = scenario("10MixOfRequests") // A scenario is a chain of requests and pauses 24 | // valid 25 | .exec(http("request_1") 26 | .get("/iridium/")) 27 | .pause(300 milliseconds) // Note that Gatling has recorded real time pauses 28 | // valid 29 | .exec(http("request_2") 30 | .post("/iridium/") 31 | .body(StringBody("""{"Message": {"iridium": "1"}}""")).asJSON) 32 | .pause(2) 33 | // valid 34 | .exec(http("request_3") 35 | .get("/magnesite/")) 36 | .pause(3) 37 | // valid 38 | .exec(http("request_4") 39 | .post("/magnesite/") 40 | .body(StringBody("""{"Message": {"magnesite": "1"}}""")).asJSON) 41 | .pause(2) 42 | // invalid - wrong element in body 43 | .exec(http("request_5") 44 | .post("/iridium/") 45 | .body(StringBody("""{"Message": {"iridium": "1"}}""")).asJSON) 46 | .pause(670 milliseconds) 47 | // invalid - wrong element in body 48 | .exec(http("request_6") 49 | .post("/magnesite/") 50 | .body(StringBody("""{"Message": {"iridium": "1"}}""")).asJSON) 51 | .pause(629 milliseconds) 52 | // invalid - request to non-existent URL 53 | .exec(http("request_7") 54 | .get("/nonexistent/")) 55 | .pause(734 milliseconds) 56 | // valid 57 | .exec(http("request_8") 58 | .post("/iridium/") 59 | .body(StringBody("""{"Message": {"iridium": "1"}}""")).asJSON) 60 | .pause(5) 61 | // valid 62 | .exec(http("request_9") 63 | .post("/magnesite/") 64 | .body(StringBody("""{"Message": {"iridium": "1"}}""")).asJSON) 65 | .pause(1) 66 | // valid 67 | .exec(http("request_10") 68 | .post("/iridium/") 69 | .body(StringBody("""{"iridium": "1"}""")).asJSON) 70 | 71 | // simulate 1000 users doing the same sequences 72 | setUp(scn.inject(atOnceUsers(1000)).protocols(httpConf)) 73 | } 74 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/gatling/basicSim.scala: -------------------------------------------------------------------------------- 1 | /** 2 | * basic load testing script 3 | * 4 | */ 5 | package interstella 6 | 7 | import io.gatling.core.Predef._ 8 | import io.gatling.http.Predef._ 9 | import scala.concurrent.duration._ 10 | 11 | class basicSim extends Simulation { 12 | 13 | val httpConf = http 14 | .baseURL("http://stack-loadb-1ki8v4xe20kwt-905242917.us-west-2.elb.amazonaws.com") // Here is the root for all relative URLs, insert microservice url 15 | .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // Here are the common headers 16 | .doNotTrackHeader("1") 17 | .acceptLanguageHeader("en-US,en;q=0.5") 18 | .acceptEncodingHeader("gzip, deflate") 19 | .userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0") 20 | 21 | val headers_10 = Map("Content-Type" -> "application/x-www-form-urlencoded") // Note the headers specific to a given request 22 | 23 | val scn = scenario("10MixOfRequests") // A scenario is a chain of requests and pauses 24 | // valid 25 | .exec(http("request_1") 26 | .get("/iridium/")) 27 | .pause(300 milliseconds) // Note that Gatling has recorded real time pauses 28 | // valid 29 | .exec(http("request_2") 30 | .get("/iridium/")) 31 | .pause(2) 32 | // valid 33 | .exec(http("request_3") 34 | .get("/magnesite/")) 35 | .pause(3) 36 | // valid 37 | .exec(http("request_4") 38 | .get("/magnesite/")) 39 | .pause(2) 40 | // invalid - wrong element in body 41 | .exec(http("request_5") 42 | .get("/iridium/")) 43 | .pause(670 milliseconds) 44 | // invalid - wrong element in body 45 | .exec(http("request_6") 46 | .get("/magnesite/")) 47 | .pause(629 milliseconds) 48 | // invalid - request to non-existent URL 49 | .exec(http("request_7") 50 | .get("/nonexistent/")) 51 | .pause(734 milliseconds) 52 | // valid 53 | .exec(http("request_8") 54 | .get("/iridium/")) 55 | .pause(5) 56 | // valid 57 | .exec(http("request_9") 58 | .get("/magnesite/")) 59 | .pause(1) 60 | // valid 61 | .exec(http("request_10") 62 | .get("/iridium/")) 63 | 64 | // simulate 50 users doing the same sequences 65 | setUp(scn.inject(atOnceUsers(50)).protocols(httpConf)) 66 | } 67 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/gatling/run.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Invoke gatling 4 | gatling.sh -s advancedSim 5 | # Copy results back up to s3 bucket 6 | aws s3 cp results s3://(insert S3 bucket name) --recursive -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/iridium/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT iridium 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./$PRODUCT.py . 34 | 35 | EXPOSE 80 36 | 37 | ENTRYPOINT ["bin/python", "iridium.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/iridium/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/magnesite/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT magnesite 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./$PRODUCT.py . 34 | 35 | EXPOSE 80 36 | 37 | ENTRYPOINT ["bin/python", "magnesite.py"] 38 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/magnesite/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/xray/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM amazonlinux 2 | COPY xray /usr/bin/xray 3 | ENTRYPOINT ["/usr/bin/xray", "--bind=0.0.0.0:2000"] -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/code/xray/xray: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/code/xray/xray -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/0-cloudformation-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/0-cloudformation-create.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-awslogs-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-awslogs-config.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-cloudwatch-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-cloudwatch-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-cwl-confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-cwl-confirm.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-cwl-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-cwl-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-ec2-IP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-ec2-IP.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-ecr-latest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-ecr-latest.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-ecr-monolith-uri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-ecr-monolith-uri.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-ecr-push-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-ecr-push-complete.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-ecr-repos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-ecr-repos.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-ecs-service-mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-ecs-service-mono.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/1-task-def-add-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/1-task-def-add-container.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-cluster-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-cluster-view.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-cwlogs-bak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-cwlogs-bak.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-cwlogs-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-cwlogs-logs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-cwlogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-cwlogs.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-ecr-iridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-ecr-iridium.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-ecr-noiridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-ecr-noiridium.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-edit-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-edit-container.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-find-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-find-instance.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-find-mono-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-find-mono-task.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-iridium-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-iridium-running.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-kill-iridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-kill-iridium.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-modify-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-modify-image.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-note-ip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-note-ip.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-remove-iridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-remove-iridium.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-service-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-service-update.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-service-updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-service-updated.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/2-task-def-new-rev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/2-task-def-new-rev.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-alb-pub-dns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-alb-pub-dns.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-alb-sg-step-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-alb-sg-step-3.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-alb-sns-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-alb-sns-sub.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-alb-step-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-alb-step-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-alb-target-group-step-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-alb-target-group-step-4.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-ecs-service-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-ecs-service-container.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-ecs-service-elb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-ecs-service-elb.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-ecs-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-ecs-service.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-iridium-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-iridium-service.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-iridium-task-update-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-iridium-task-update-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-iridium-task-update-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-iridium-task-update-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/3-new-task-def-monolith.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/3-new-task-def-monolith.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/4-ecs-net-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/4-ecs-net-1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/4-ecs-net-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/4-ecs-net-2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/4-ecs-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/4-ecs-service.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/4-elb-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/4-elb-path.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/XRaySS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/XRaySS.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/after.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/before.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ecr_fulfill_uri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ecr_fulfill_uri.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/gatling_baseurl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/gatling_baseurl.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/starthere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/starthere.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/workshop2-lab1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/workshop2-lab1.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/workshop2-lab2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/workshop2-lab2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/workshop2-lab3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/workshop2-lab3.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l1_fulfill_working.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l1_fulfill_working.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l1_fulfill_working_cloudwatchlog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l1_fulfill_working_cloudwatchlog.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l1_loadbalancer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l1_loadbalancer.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l1_push_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l1_push_success.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l1_taskdef_logconfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l1_taskdef_logconfig.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l1loggroups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l1loggroups.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_ec2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_ec2.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_gatlingresults.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_gatlingresults.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_htmllink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_htmllink.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_makepublic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_makepublic.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_mount_vols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_mount_vols.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_override.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_override.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_s3_public.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_s3_public.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_vol_popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_vol_popup.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l2_volumes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l2_volumes.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l3_xray_log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l3_xray_log.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4l3_xray_servicegraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4l3_xray_servicegraph.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4lab1_fulfill_taskdef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4lab1_fulfill_taskdef.png -------------------------------------------------------------------------------- /archive/reinvent2017/workshop4/images/ws4lab1_repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/archive/reinvent2017/workshop4/images/ws4lab1_repo.png -------------------------------------------------------------------------------- /client/iridium/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT iridium 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./$PRODUCT.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "iridium.py"] 38 | -------------------------------------------------------------------------------- /client/iridium/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /client/magnesite/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT magnesite 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./$PRODUCT.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "magnesite.py"] 38 | -------------------------------------------------------------------------------- /client/magnesite/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /client/monolith/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT monolith 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./monolith.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "monolith.py"] 38 | -------------------------------------------------------------------------------- /client/monolith/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /getkeypage/getkey.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 40px; 3 | padding-bottom: 40px; 4 | background-color: #eee; 5 | } 6 | 7 | .form-signin { 8 | max-width: 330px; 9 | padding: 15px; 10 | margin: 0 auto; 11 | } 12 | 13 | .form-signin .form-signin-heading, 14 | .form-signin .checkbox { 15 | margin-bottom: 10px; 16 | text-align: center; 17 | } 18 | .form-signin .checkbox { 19 | font-weight: normal; 20 | } 21 | .form-signin .form-control { 22 | position: relative; 23 | height: auto; 24 | -webkit-box-sizing: border-box; 25 | box-sizing: border-box; 26 | padding: 10px; 27 | font-size: 16px; 28 | } 29 | .form-signin .form-control:focus { 30 | z-index: 2; 31 | } 32 | .form-signin input[type="text"] { 33 | margin-bottom: 10px; 34 | /* border-bottom-right-radius: 0; 35 | border-bottom-left-radius: 0; */ 36 | } 37 | .form-signin input[type="password"] { 38 | margin-bottom: 10px; 39 | border-top-left-radius: 0; 40 | border-top-right-radius: 0; 41 | } 42 | 43 | .form-keywindow { 44 | text-align: center; 45 | } 46 | 47 | .form-snsSub input[type="text"] { 48 | margin-bottom: 10px; 49 | /* border-bottom-right-radius: 0; 50 | border-bottom-left-radius: 0; */ 51 | } 52 | /* 53 | Original version: http://www.bootply.com/128062 54 | 55 | This version adds support for IE 10+ and Firefox. 56 | */ 57 | 58 | .glyphicon-refresh-animate { 59 | -animation: spin .7s infinite linear; 60 | -ms-animation: spin .7s infinite linear; 61 | -webkit-animation: spinw .7s infinite linear; 62 | -moz-animation: spinm .7s infinite linear; 63 | } 64 | 65 | @keyframes spin { 66 | from { transform: scale(1) rotate(0deg);} 67 | to { transform: scale(1) rotate(360deg);} 68 | } 69 | 70 | @-webkit-keyframes spinw { 71 | from { -webkit-transform: rotate(0deg);} 72 | to { -webkit-transform: rotate(360deg);} 73 | } 74 | 75 | @-moz-keyframes spinm { 76 | from { -moz-transform: rotate(0deg);} 77 | to { -moz-transform: rotate(360deg);} 78 | } -------------------------------------------------------------------------------- /getkeypage/ie10-viewport-bug-workaround.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * IE10 viewport hack for Surface/desktop Windows 8 bug 3 | * Copyright 2014-2017 The Bootstrap Authors 4 | * Copyright 2014-2017 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | // See the Getting Started docs for more information: 9 | // https://getbootstrap.com/getting-started/#support-ie10-width 10 | 11 | (function () { 12 | 'use strict' 13 | 14 | if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 15 | var msViewportStyle = document.createElement('style') 16 | msViewportStyle.appendChild( 17 | document.createTextNode( 18 | '@-ms-viewport{width:auto!important}' 19 | ) 20 | ) 21 | document.head.appendChild(msViewportStyle) 22 | } 23 | 24 | }()) -------------------------------------------------------------------------------- /images/QRCode.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/images/QRCode.pdf -------------------------------------------------------------------------------- /images/deploy-to-aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/images/deploy-to-aws.png -------------------------------------------------------------------------------- /images/interstella-qrcode.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/images/interstella-qrcode.jpg -------------------------------------------------------------------------------- /images/mainsplash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/images/mainsplash.png -------------------------------------------------------------------------------- /images/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/images/splash.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Interstella Galactic Trading Co. 5 | 6 | 7 | 8 | 9 | 10 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /js/strapdown/strapdown.css: -------------------------------------------------------------------------------- 1 | 2 | /******************************************************************* 3 | 4 | This chunk is to fix Bootstrap so that the Markdown output looks good 5 | 6 | *******************************************************************/ 7 | 8 | body { 9 | padding-top: 60px; 10 | padding-bottom: 40px; 11 | font-size: 15px; 12 | line-height: 150%; 13 | } 14 | 15 | xmp, textarea { 16 | display: none; 17 | } 18 | 19 | h1,h2,h3,h4 { 20 | margin: 15px 0; 21 | } 22 | 23 | pre { 24 | margin: 20px 0; 25 | } 26 | 27 | img { 28 | margin: 10px 0; 29 | } 30 | 31 | .navbar { 32 | z-index: 1; 33 | } 34 | 35 | .table { 36 | width: auto; 37 | } 38 | 39 | /******************************************************************* 40 | 41 | This chunk is for Google's Code Prettify: 42 | http://google-code-prettify.googlecode.com 43 | 44 | *******************************************************************/ 45 | 46 | 47 | /* Pretty printing styles. Used with prettify.js. */ 48 | 49 | /* SPAN elements with the classes below are added by prettyprint. */ 50 | .pln { color: #000 } /* plain text */ 51 | 52 | @media screen { 53 | .str { color: #080 } /* string content */ 54 | .kwd { color: #008 } /* a keyword */ 55 | .com { color: #800 } /* a comment */ 56 | .typ { color: #606 } /* a type name */ 57 | .lit { color: #066 } /* a literal value */ 58 | /* punctuation, lisp open bracket, lisp close bracket */ 59 | .pun, .opn, .clo { color: #660 } 60 | .tag { color: #008 } /* a markup tag name */ 61 | .atn { color: #606 } /* a markup attribute name */ 62 | .atv { color: #080 } /* a markup attribute value */ 63 | .dec, .var { color: #606 } /* a declaration; a variable name */ 64 | .fun { color: red } /* a function name */ 65 | } 66 | 67 | /* Use higher contrast and text-weight for printable form. */ 68 | @media print, projection { 69 | .str { color: #060 } 70 | .kwd { color: #006; font-weight: bold } 71 | .com { color: #600; font-style: italic } 72 | .typ { color: #404; font-weight: bold } 73 | .lit { color: #044 } 74 | .pun, .opn, .clo { color: #440 } 75 | .tag { color: #006; font-weight: bold } 76 | .atn { color: #404 } 77 | .atv { color: #060 } 78 | } 79 | 80 | /* Put a border around prettyprinted code snippets. */ 81 | pre.prettyprint { padding: 2px; border: 1px solid #888 } 82 | 83 | /* Specify class=linenums on a pre to get line numbering */ 84 | ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */ 85 | li.L0, 86 | li.L1, 87 | li.L2, 88 | li.L3, 89 | li.L5, 90 | li.L6, 91 | li.L7, 92 | li.L8 { list-style-type: none } 93 | /* Alternate shading for lines */ 94 | li.L1, 95 | li.L3, 96 | li.L5, 97 | li.L7, 98 | li.L9 { background: #eee } 99 | 100 | -------------------------------------------------------------------------------- /js/strapdown/themes/README.md: -------------------------------------------------------------------------------- 1 | # Bootswatch themes 2 | 3 | These themes are all from: 4 | 5 | + http://bootswatch.com 6 | 7 | See LICENSE file. 8 | -------------------------------------------------------------------------------- /maintenance/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Lab Instructions 5 | 6 | 7 | 8 | 9 | 10 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /server/API_Swagger_Exports/requestprocessor-production-swagger-integrations,authorizers,documentation,validators,gatewayresponses.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | swagger: "2.0" 3 | info: 4 | version: "2017-09-20T05:10:17Z" 5 | title: "requestprocessor" 6 | host: "3ijxwsddzg.execute-api.us-west-2.amazonaws.com" 7 | basePath: "/production" 8 | schemes: 9 | - "https" 10 | paths: 11 | /: 12 | put: 13 | produces: 14 | - "application/json" 15 | parameters: 16 | - name: "x-api-key" 17 | in: "header" 18 | required: true 19 | type: "string" 20 | responses: 21 | 200: 22 | description: "200 response" 23 | schema: 24 | $ref: "#/definitions/Empty" 25 | security: 26 | - api_key: [] 27 | x-amazon-apigateway-integration: 28 | responses: 29 | default: 30 | statusCode: "200" 31 | uri: "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:652181821727:function:ProcessInterstella8888Requests/invocations" 32 | passthroughBehavior: "when_no_match" 33 | httpMethod: "POST" 34 | contentHandling: "CONVERT_TO_TEXT" 35 | type: "aws_proxy" 36 | securityDefinitions: 37 | api_key: 38 | type: "apiKey" 39 | name: "x-api-key" 40 | in: "header" 41 | definitions: 42 | Empty: 43 | type: "object" 44 | title: "Empty Schema" 45 | -------------------------------------------------------------------------------- /server/admin/.ebextensions/options.config: -------------------------------------------------------------------------------- 1 | option_settings: 2 | "aws:elasticbeanstalk:container:python": 3 | WSGIPath: monolith.py 4 | -------------------------------------------------------------------------------- /server/admin/admin.py: -------------------------------------------------------------------------------- 1 | #!bin/python 2 | 3 | import time 4 | from flask import Flask 5 | from flask import request 6 | import json 7 | import requests 8 | import boto3 9 | 10 | # Get API Key and parameters from SSM 11 | 12 | indexPage = ''' 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Admin Page 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 |

Admin Page

31 | 32 | 33 |
34 |
35 | 36 |
37 |
38 |

SNS Subscription

39 | 40 | 41 |
    42 |
  • Receive bundled resources
  • 43 |
  • Receive Delithium Crystals
  • 44 |
  • Receive Space Melange
  • 45 |
  • Receive Tiberium
  • 46 |
  • Receive Vespene Gas
  • 47 |
48 |
49 |
50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | ''' 64 | 65 | portNum = 5000 66 | 67 | application = Flask(__name__) 68 | 69 | @application.route('/', methods=['GET']) 70 | def index(): 71 | if request.method == 'GET': 72 | return "Welcome to the Admin console" 73 | if request.method == 'POST': 74 | return 'Hi' 75 | 76 | if __name__ == '__main__': 77 | application.run(debug=True, host='0.0.0.0', port=portNum) 78 | -------------------------------------------------------------------------------- /server/admin/cron.py: -------------------------------------------------------------------------------- 1 | #!bin/python 2 | import boto3 3 | import sched, time 4 | 5 | dynamodb = boto3.resource('dynamodb', region_name='us-west-2') 6 | 7 | table = dynamodb.Table('requestRates') 8 | 9 | snsClient = boto3.client('sns',region_name='us-west-2') 10 | 11 | # SNS ARNs for topics. 12 | iridiumArn = 'arn:aws:sns:us-west-2:270206935686:iridium' 13 | orderTopicArn = 'arn:aws:sns:us-west-2:270206935686:orderTopic' 14 | magnesiteArn = 'arn:aws:sns:us-west-2:270206935686:magnesite' 15 | 16 | while True: 17 | response = table.scan() 18 | print response 19 | for i in range(0, response['Count']): 20 | print '=========================================' 21 | print 'Publishing to...' 22 | print 'Resource: '+ response['Items'][i]['resource'] 23 | print 'Rate: ' + str(response['Items'][i]['rate']) 24 | if response['Items'][i]['resource'] == 'orderTopic': 25 | data = '{"bundle": 1}' 26 | arn = orderTopicArn 27 | elif response['Items'][i]['resource'] == 'iridium': 28 | data = '{"iridium": 1}' 29 | arn = iridiumArn 30 | elif response['Items'][i]['resource'] == 'magnesite': 31 | data = '{"magnesite": 1}' 32 | arn = magnesiteArn 33 | else: 34 | data = '{"bundle": 1}' 35 | arn = orderTopicArn 36 | for j in xrange(response['Items'][i]['rate']): 37 | #arn='arn:aws:sns:us-west-2:270206935686:'+response['Items'][i]['resource'] 38 | snsResponse = snsClient.publish(TopicArn=arn, Message=data) 39 | print snsResponse 40 | 41 | time.sleep(30) 42 | -------------------------------------------------------------------------------- /server/admin/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | -------------------------------------------------------------------------------- /server/dynamoDB_Cfn/insterstella888_requests_history.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: "2010-09-09" 2 | Resources: 3 | myDynamoDBTable: 4 | Type: "AWS::DynamoDB::Table" 5 | Properties: 6 | AttributeDefinitions: 7 | - 8 | AttributeName: "api_key" 9 | AttributeType: "S" 10 | - 11 | AttributeName: "timestamp" 12 | AttributeType: "S" 13 | KeySchema: 14 | - 15 | AttributeName: "api_key" 16 | KeyType: "HASH" 17 | - 18 | AttributeName: "timestamp" 19 | KeyType: "RANGE" 20 | ProvisionedThroughput: 21 | ReadCapacityUnits: "5" 22 | WriteCapacityUnits: "5" 23 | TableName: "myTableName" 24 | 25 | -------------------------------------------------------------------------------- /server/lambdaFunctions/processInterstella8888Requests/processInterstella8888Requests.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var AWS = require('aws-sdk'); 4 | //var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'}); 5 | var documentClient = new AWS.DynamoDB.DocumentClient(); 6 | exports.handler = (event, context, callback) => { 7 | var tableName = "myTableName"; 8 | var datetime = new Date().toISOString(); 9 | console.log(event.body); 10 | var key = 'not-initiated'; 11 | if (event.headers !== null && event.headers !== undefined) { 12 | if (event.headers['x-api-key'] !== undefined && event.headers['x-api-key'] !== null && event.headers['x-api-key'] !== "") { 13 | key = event.headers['x-api-key']; 14 | } 15 | else{ 16 | callback(new Error('Error - Header x-api-key not found. Please include your API key with x-api-key header')) 17 | } 18 | } 19 | var params = { 20 | TableName : 'myTableName', 21 | Item: { 22 | api_key: key, 23 | timestamp: datetime, 24 | production: JSON.parse(event.body) 25 | } 26 | }; 27 | /*dynamodb.putItem({ 28 | "TableName": tableName, 29 | "Item" : { 30 | "api_key": {"S": key }, 31 | "timestamp": {"S": datetime }, 32 | "user": {"S": "user" }, 33 | "msg": {"S": "message"}, 34 | "fulfillment": JSON.parse(event.body) 35 | }*/ 36 | documentClient.put(params, function(err, data) { 37 | if (err) { 38 | // console.log(err, err.stack) 39 | callback(new Error('internal server error: ' + err.stack)) 40 | } 41 | else { 42 | // console.log('success: ' + JSON.stringify(data, null, ' ')); 43 | callback(null, {"statusCode": 200, "body": "success"}) 44 | } 45 | }); 46 | }; -------------------------------------------------------------------------------- /workshop-cicd/code/iridium/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gliderlabs/alpine:3.3 2 | 3 | RUN apk add --update \ 4 | python \ 5 | python-dev \ 6 | git \ 7 | wget \ 8 | libffi-dev \ 9 | gcc 10 | 11 | WORKDIR /root 12 | 13 | ENV PRODUCT iridium 14 | 15 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 16 | && python get-pip.py && pip install virtualenv 17 | 18 | WORKDIR interstella 19 | 20 | RUN virtualenv ${PRODUCT} 21 | 22 | WORKDIR ${PRODUCT} 23 | 24 | #RUN bin/pip install --upgrade pip && \ 25 | # bin/pip install requests[security] 26 | 27 | COPY ./requirements.txt . 28 | 29 | RUN bin/pip install -r requirements.txt 30 | 31 | COPY ./iridium.py . 32 | 33 | EXPOSE 5000 34 | 35 | ENTRYPOINT ["bin/python", "iridium.py"] 36 | 37 | -------------------------------------------------------------------------------- /workshop-cicd/code/iridium/Dockerfile.ubuntu: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT iridium 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./$PRODUCT.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "iridium.py"] 38 | -------------------------------------------------------------------------------- /workshop-cicd/code/iridium/buildspec.yml.draft: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | pre_build: 5 | commands: 6 | - echo Logging in to Amazon ECR... 7 | - #[TODO]: Command to log into ECR. Remember, it has to be executed $(maybe like this?) 8 | build: 9 | commands: 10 | - echo Build started on `date` 11 | - echo Building the Docker image... 12 | - #[TODO]: Build the actual image using the current commit ID as the tag 13 | - #[TODO]: Tag the newly built Docker image so that we can push the image to ECR. See the instructions in your ECR console to find out how to do this. Make sure you use the current commit ID as the tag! 14 | post_build: 15 | commands: 16 | - echo Build completed on `date` 17 | - echo Pushing the Docker image... 18 | - #[TODO]: Push the Docker image up to ECR -------------------------------------------------------------------------------- /workshop-cicd/code/iridium/cfn-nag-buildspec.yml.draft: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | pre_build: 5 | commands: 6 | - # TODO: INSTALL OR BUILD CFN-NAG 7 | build: 8 | commands: 9 | - echo 'In Build' 10 | - # TODO: RUN CFN-NAG -------------------------------------------------------------------------------- /workshop-cicd/code/iridium/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /workshop-cicd/code/iridium/service.yml: -------------------------------------------------------------------------------- 1 | Parameters: 2 | Tag: 3 | Type: String 4 | 5 | DesiredCount: 6 | Type: Number 7 | Default: 2 8 | 9 | TargetGroupArn: 10 | Type: String 11 | 12 | Cluster: 13 | Type: String 14 | 15 | Repository: 16 | Type: String 17 | 18 | cloudWatchLogsGroup: 19 | Type: String 20 | 21 | CwlPrefix: 22 | Type: String 23 | 24 | 25 | Resources: 26 | ECSServiceRole: 27 | Type: AWS::IAM::Role 28 | Properties: 29 | Path: / 30 | AssumeRolePolicyDocument: | 31 | { 32 | "Statement": [{ 33 | "Effect": "Allow", 34 | "Principal": { "Service": [ "ecs.amazonaws.com" ]}, 35 | "Action": [ "sts:AssumeRole" ] 36 | }] 37 | } 38 | ManagedPolicyArns: 39 | - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole 40 | 41 | TaskDefinition: 42 | Type: AWS::ECS::TaskDefinition 43 | Properties: 44 | Family: iridium 45 | ContainerDefinitions: 46 | - Name: iridium 47 | Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository}:${Tag} 48 | Essential: true 49 | Memory: 128 50 | PortMappings: 51 | - ContainerPort: 5000 52 | Environment: 53 | - Name: Tag 54 | Value: !Ref Tag 55 | LogConfiguration: 56 | LogDriver: awslogs 57 | Options: 58 | awslogs-group: 59 | Ref: cloudWatchLogsGroup 60 | awslogs-region: 61 | Ref: AWS::Region 62 | awslogs-stream-prefix: 63 | Ref: CwlPrefix 64 | 65 | Service: 66 | Type: AWS::ECS::Service 67 | Properties: 68 | Cluster: !Ref Cluster 69 | DesiredCount: !Ref DesiredCount 70 | TaskDefinition: !Ref TaskDefinition 71 | Role: !Ref ECSServiceRole 72 | LoadBalancers: 73 | - TargetGroupArn: 74 | Ref: TargetGroupArn 75 | ContainerPort: 5000 76 | ContainerName: iridium -------------------------------------------------------------------------------- /workshop-cicd/code/monolith/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gliderlabs/alpine:3.3 2 | 3 | RUN apk add --update \ 4 | python \ 5 | python-dev \ 6 | git \ 7 | wget \ 8 | libffi-dev \ 9 | gcc 10 | 11 | WORKDIR /root 12 | 13 | ENV PRODUCT monolith 14 | 15 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 16 | && python get-pip.py && pip install virtualenv 17 | 18 | WORKDIR interstella 19 | 20 | RUN virtualenv ${PRODUCT} 21 | 22 | WORKDIR ${PRODUCT} 23 | 24 | #RUN bin/pip install --upgrade pip && \ 25 | # bin/pip install requests[security] 26 | 27 | COPY ./requirements.txt . 28 | 29 | RUN bin/pip install -r requirements.txt 30 | 31 | COPY ./monolith.py . 32 | 33 | EXPOSE 5000 34 | 35 | ENTRYPOINT ["bin/python", "monolith.py"] 36 | 37 | 38 | -------------------------------------------------------------------------------- /workshop-cicd/code/monolith/Dockerfile.alpine: -------------------------------------------------------------------------------- 1 | FROM gliderlabs/alpine:3.3 2 | 3 | RUN apk add --update \ 4 | python \ 5 | python-dev \ 6 | git \ 7 | wget \ 8 | libffi-dev \ 9 | gcc 10 | 11 | WORKDIR /root 12 | 13 | ENV PRODUCT monolith 14 | 15 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 16 | && python get-pip.py && pip install virtualenv 17 | 18 | WORKDIR interstella 19 | 20 | RUN virtualenv ${PRODUCT} 21 | 22 | WORKDIR ${PRODUCT} 23 | 24 | #RUN bin/pip install --upgrade pip && \ 25 | # bin/pip install requests[security] 26 | 27 | COPY ./requirements.txt . 28 | 29 | RUN bin/pip install -r requirements.txt 30 | 31 | COPY ./monolith.py . 32 | 33 | EXPOSE 5000 34 | 35 | ENTRYPOINT ["bin/python", "monolith.py"] 36 | 37 | 38 | -------------------------------------------------------------------------------- /workshop-cicd/code/monolith/Dockerfile.ubuntu: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT monolith 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./monolith.py . 34 | 35 | EXPOSE 5000 36 | 37 | ENTRYPOINT ["bin/python", "monolith.py"] 38 | -------------------------------------------------------------------------------- /workshop-cicd/code/monolith/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /workshop-cicd/generateindex.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #cat indexstart > index.html 3 | echo ' 4 | 5 | 6 | Lab Instructions 7 | 8 | 9 | 10 | 11 | 12 | 21 | 22 | 23 | " >> index.html 24 | #zip -r bundle tests/ code/ hints/ -x "*.DS_Store" 25 | aws s3 sync . s3://www.interstella.trade/workshop3/ --acl public-read --exclude "*.DS_Store" --profile bamazon 26 | -------------------------------------------------------------------------------- /workshop-cicd/hints/accesskeys-buildspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | build: 5 | commands: 6 | - ./tests/checkaccesskeys.sh -------------------------------------------------------------------------------- /workshop-cicd/hints/final-service.yml: -------------------------------------------------------------------------------- 1 | Parameters: 2 | Tag: 3 | Type: String 4 | 5 | DesiredCount: 6 | Type: Number 7 | Default: 2 8 | 9 | TargetGroupArn: 10 | Type: String 11 | 12 | Cluster: 13 | Type: String 14 | 15 | Repository: 16 | Type: String 17 | 18 | cloudWatchLogsGroup: 19 | Type: String 20 | 21 | CwlPrefix: 22 | Type: String 23 | 24 | 25 | Resources: 26 | ECSServiceRole: 27 | Type: AWS::IAM::Role 28 | Properties: 29 | Path: / 30 | AssumeRolePolicyDocument: | 31 | { 32 | "Statement": [{ 33 | "Effect": "Allow", 34 | "Principal": { "Service": [ "ecs.amazonaws.com" ]}, 35 | "Action": [ "sts:AssumeRole" ] 36 | }] 37 | } 38 | ManagedPolicyArns: 39 | - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole 40 | 41 | ECSTaskRole: 42 | Type: AWS::IAM::Role 43 | Properties: 44 | Path: / 45 | AssumeRolePolicyDocument: | 46 | { 47 | "Statement": [{ 48 | "Effect": "Allow", 49 | "Principal": { "Service": [ "ecs-tasks.amazonaws.com" ]}, 50 | "Action": [ "sts:AssumeRole" ] 51 | }] 52 | } 53 | Policies: 54 | - 55 | PolicyName: "root" 56 | PolicyDocument: 57 | Version: "2012-10-17" 58 | Statement: 59 | - 60 | Effect: "Allow" 61 | Action: 62 | - ssm:DescribeParameters 63 | - ssm:GetParameters 64 | - ssm:GetParameter 65 | Resource: 66 | - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/interstella/fulfillmentEndpoint 67 | - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/interstella/iridiumSubscriptionArn 68 | 69 | TaskDefinition: 70 | Type: AWS::ECS::TaskDefinition 71 | Properties: 72 | Family: iridium 73 | TaskRoleArn: !Ref ECSTaskRole 74 | ContainerDefinitions: 75 | - Name: iridium 76 | Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository}:${Tag} 77 | Essential: true 78 | Memory: 128 79 | PortMappings: 80 | - ContainerPort: 5000 81 | Environment: 82 | - Name: Tag 83 | Value: !Ref Tag 84 | LogConfiguration: 85 | LogDriver: awslogs 86 | Options: 87 | awslogs-group: 88 | Ref: cloudWatchLogsGroup 89 | awslogs-region: 90 | Ref: AWS::Region 91 | awslogs-stream-prefix: 92 | Ref: CwlPrefix 93 | 94 | Service: 95 | Type: AWS::ECS::Service 96 | Properties: 97 | Cluster: !Ref Cluster 98 | DesiredCount: !Ref DesiredCount 99 | TaskDefinition: !Ref TaskDefinition 100 | Role: !Ref ECSServiceRole 101 | LoadBalancers: 102 | - TargetGroupArn: 103 | Ref: TargetGroupArn 104 | ContainerPort: 5000 105 | ContainerName: iridium -------------------------------------------------------------------------------- /workshop-cicd/hints/finalhintspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | env: 4 | parameter-store: 5 | targetGroup: /interstella/iridiumTargetGroupArn 6 | cloudWatchLogsGroup: /interstella/cloudWatchLogsGroup 7 | ecsClusterName: /interstella/ecsClusterName 8 | phases: 9 | pre_build: 10 | commands: 11 | - echo Logging in to Amazon ECR... 12 | - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION) 13 | - TAG="$(case "$CODEBUILD_INITIATOR" in "codepipeline/"*) echo $CODEBUILD_RESOLVED_SOURCE_VERSION ;; *) echo $CODEBUILD_SOURCE_VERSION ;; esac)" 14 | build: 15 | commands: 16 | - echo Build started on `date` 17 | - echo Building the Docker image... 18 | - docker build -t $IMAGE_REPO_NAME:$TAG . 19 | - docker tag $IMAGE_REPO_NAME:$TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$TAG 20 | post_build: 21 | commands: 22 | - echo Build completed on `date` 23 | - echo Pushing the Docker image... 24 | - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$TAG 25 | - printf '{"Parameters":{"Tag":"%s","DesiredCount":"2","TargetGroupArn":"%s","Cluster":"%s","Repository":"%s", "cloudWatchLogsGroup":"%s","CwlPrefix":"%s"}}' $TAG $targetGroup $ecsClusterName $IMAGE_REPO_NAME $cloudWatchLogsGroup $ENV_TYPE > build.json 26 | artifacts: 27 | files: 28 | - build.json 29 | - service.yml 30 | -------------------------------------------------------------------------------- /workshop-cicd/hints/hint1-cfn-nag-buildspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | pre_build: 5 | commands: 6 | - gem install cfn-nag 7 | build: 8 | commands: 9 | - echo 'In Build' 10 | - cfn_nag_scan --input-path service.yml -------------------------------------------------------------------------------- /workshop-cicd/hints/hintspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | pre_build: 5 | commands: 6 | - echo Logging in to Amazon ECR... 7 | - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION) 8 | build: 9 | commands: 10 | - echo Build started on `date` 11 | - echo Building the Docker image... 12 | - docker build -t $IMAGE_REPO_NAME:$CODEBUILD_SOURCE_VERSION . 13 | - docker tag $IMAGE_REPO_NAME:$CODEBUILD_SOURCE_VERSION $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$CODEBUILD_SOURCE_VERSION 14 | post_build: 15 | commands: 16 | - echo Build completed on `date` 17 | - echo Pushing the Docker image... 18 | - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$CODEBUILD_SOURCE_VERSION -------------------------------------------------------------------------------- /workshop-cicd/hints/new-service.yml: -------------------------------------------------------------------------------- 1 | Parameters: 2 | Tag: 3 | Type: String 4 | 5 | DesiredCount: 6 | Type: Number 7 | Default: 2 8 | 9 | TargetGroupArn: 10 | Type: String 11 | Cluster: 12 | Type: String 13 | 14 | Repository: 15 | Type: String 16 | 17 | cloudWatchLogsGroup: 18 | Type: String 19 | 20 | CwlPrefix: 21 | Type: String 22 | 23 | 24 | Resources: 25 | ECSServiceRole: 26 | Type: AWS::IAM::Role 27 | Properties: 28 | Path: / 29 | AssumeRolePolicyDocument: | 30 | { 31 | "Statement": [{ 32 | "Effect": "Allow", 33 | "Principal": { "Service": [ "ecs.amazonaws.com" ]}, 34 | "Action": [ "sts:AssumeRole" ] 35 | }] 36 | } 37 | ManagedPolicyArns: 38 | - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole 39 | 40 | ECSTaskRole: 41 | Type: AWS::IAM::Role 42 | Properties: 43 | Path: / 44 | AssumeRolePolicyDocument: | 45 | { 46 | "Statement": [{ 47 | "Effect": "Allow", 48 | "Principal": { "Service": [ "ecs-tasks.amazonaws.com" ]}, 49 | "Action": [ "sts:AssumeRole" ] 50 | }] 51 | } 52 | Policies: 53 | - 54 | PolicyName: "root" 55 | PolicyDocument: 56 | Version: "2012-10-17" 57 | Statement: 58 | - 59 | Effect: "Allow" 60 | Action: "*" 61 | Resource: "*" 62 | 63 | TaskDefinition: 64 | Type: AWS::ECS::TaskDefinition 65 | Properties: 66 | Family: iridium 67 | TaskRoleArn: !Ref ECSTaskRole 68 | ContainerDefinitions: 69 | - Name: iridium 70 | Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository}:${Tag} 71 | Essential: true 72 | Memory: 128 73 | PortMappings: 74 | - ContainerPort: 5000 75 | Environment: 76 | - Name: Tag 77 | Value: !Ref Tag 78 | LogConfiguration: 79 | LogDriver: awslogs 80 | Options: 81 | awslogs-group: 82 | Ref: cloudWatchLogsGroup 83 | awslogs-region: 84 | Ref: AWS::Region 85 | awslogs-stream-prefix: 86 | Ref: CwlPrefix 87 | 88 | Service: 89 | Type: AWS::ECS::Service 90 | Properties: 91 | Cluster: !Ref Cluster 92 | DesiredCount: !Ref DesiredCount 93 | TaskDefinition: !Ref TaskDefinition 94 | Role: !Ref ECSServiceRole 95 | LoadBalancers: 96 | - TargetGroupArn: 97 | Ref: TargetGroupArn 98 | ContainerPort: 5000 99 | ContainerName: iridium -------------------------------------------------------------------------------- /workshop-cicd/images/0-c9-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-c9-2.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-c9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-c9.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-ecr-monolith-uri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-ecr-monolith-uri.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-ecr-repos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-ecr-repos.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-ecs-service-mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-ecs-service-mono.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-ecs-svc-create-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-ecs-svc-create-1.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-ecs-svc-create-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-ecs-svc-create-2.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-ecs-svc-create-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-ecs-svc-create-3.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-overview.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-task-def-create-svc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-task-def-create-svc.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-task-def-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-task-def-create.png -------------------------------------------------------------------------------- /workshop-cicd/images/0-task-def-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/0-task-def-logs.png -------------------------------------------------------------------------------- /workshop-cicd/images/00-api-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/00-api-key.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-arch-codebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-arch-codebuild.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cb-add-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cb-add-policy.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cb-create-project-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cb-create-project-1.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cb-create-project-2.bak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cb-create-project-2.bak.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cb-create-project-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cb-create-project-2.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cb-modify-iam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cb-modify-iam.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cb-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cb-success.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cc-committed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cc-committed.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cc-createiam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cc-createiam.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-cc-generate-creds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-cc-generate-creds.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-ec2-IP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-ec2-IP.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-ecr-get-iridium-commands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-ecr-get-iridium-commands.png -------------------------------------------------------------------------------- /workshop-cicd/images/1-ecr-new-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/1-ecr-new-image.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-alb-sns-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-alb-sns-sub.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-build-failure-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-build-failure-details.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-build-failure-execution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-build-failure-execution.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-build-failure.bak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-build-failure.bak.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-build-failure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-build-failure.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-create-cb-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-create-cb-2.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-create-cb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-create-cb.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-create-gate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-create-gate.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-create-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-create-name.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-create-source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-create-source.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-deploy-step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-deploy-step.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-deploy-to-cfn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-deploy-to-cfn.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-first-execution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-first-execution.png -------------------------------------------------------------------------------- /workshop-cicd/images/2-cp-svc-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/2-cp-svc-role.png -------------------------------------------------------------------------------- /workshop-cicd/images/3-cp-cfn-nag-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/3-cp-cfn-nag-error.png -------------------------------------------------------------------------------- /workshop-cicd/images/3-cp-create-test-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/3-cp-create-test-2.png -------------------------------------------------------------------------------- /workshop-cicd/images/3-cp-create-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/3-cp-create-test.png -------------------------------------------------------------------------------- /workshop-cicd/images/3-cp-failed-tests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/3-cp-failed-tests.png -------------------------------------------------------------------------------- /workshop-cicd/images/arch-endstate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/arch-endstate.png -------------------------------------------------------------------------------- /workshop-cicd/images/arch-starthere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/arch-starthere.png -------------------------------------------------------------------------------- /workshop-cicd/images/bak-2-cp-create-cb-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/bak-2-cp-create-cb-2.png -------------------------------------------------------------------------------- /workshop-cicd/images/cfn-create-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/cfn-create-complete.png -------------------------------------------------------------------------------- /workshop-cicd/images/cfn-createstack-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/cfn-createstack-1.png -------------------------------------------------------------------------------- /workshop-cicd/images/cfn-iam-capabilities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/cfn-iam-capabilities.png -------------------------------------------------------------------------------- /workshop-cicd/images/ecssplash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-cicd/images/ecssplash.png -------------------------------------------------------------------------------- /workshop-cicd/tests/checkaccesskeys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ACCESSKEYS=$(grep -REHnw '[A-Z0-9]{20}' *) 4 | SECRETKEYS=$(grep -REHnw '[A-Za-z0-9/\+=]{40}' *) 5 | 6 | # By default, grep will show the output of the pattern matches, but since we don't want to log our access or secret keys anywhere, we're stripping them out before logging anything. 7 | 8 | STATUS=0 9 | if [ ! -z "$ACCESSKEYS" ]; then 10 | echo "ERROR: Access Keys Detected:" 11 | echo "$ACCESSKEYS" | awk -F ':' '{print "File:", $1, "| Line:",$2}' 12 | # We would typically put some sort of notification function here. Maybe send out an SNS notification to a security alias. 13 | STATUS=1 14 | else 15 | echo "No access keys detected" 16 | fi 17 | if [ ! -z "$SECRETKEYS" ]; then 18 | echo "WARNING: Secret Keys Detected" 19 | echo "$SECRETKEYS" | awk -F ':' '{print "File:", $1, "| Line:",$2}' 20 | # We would typically put some sort of notification function here. Maybe send out an SNS notification to a security alias. 21 | # Not setting a status here because a lot of things can match this regex. Git commit IDs for example. 22 | else 23 | echo "No secret keys detected" 24 | fi 25 | 26 | exit $STATUS 27 | -------------------------------------------------------------------------------- /workshop-microservices/code/iridium/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT iridium 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./${PRODUCT}.py . 34 | 35 | EXPOSE 80 36 | 37 | ENTRYPOINT ["bin/python", "iridium.py"] 38 | -------------------------------------------------------------------------------- /workshop-microservices/code/iridium/iridium.py: -------------------------------------------------------------------------------- 1 | #!bin/python 2 | 3 | import time 4 | from flask import Flask 5 | from flask import request 6 | import json 7 | import requests 8 | import os 9 | import boto3 10 | from urllib2 import urlopen 11 | import logging 12 | import sys 13 | 14 | logging.basicConfig(stream=sys.stdout, level=logging.INFO) 15 | 16 | # This should be the endpoint of the monolith 17 | endpoint = os.getenv('monolithUrl') 18 | portNum = 80 19 | resource = 'iridium' 20 | 21 | def produceResource(): 22 | print "Producing "+resource 23 | #time.sleep(1) 24 | return 25 | 26 | def fulfill(endpoint, number): 27 | if endpoint == '': 28 | return 'Missing endpoint' 29 | else: 30 | fullEndpoint = 'http://'+str(endpoint)+'/fulfill/' 31 | data = {resource : number} 32 | try: 33 | response = requests.post(fullEndpoint, data=json.dumps(data)) 34 | if response.status_code == requests.codes.ok: 35 | print response.status_code 36 | return response.status_code 37 | else: 38 | response.raise_for_status() 39 | except Exception as e: 40 | response = e 41 | return response 42 | 43 | app = Flask(__name__) 44 | 45 | # Effectively, our subscriber service. 46 | @app.route('/'+resource+'/', methods=['POST', 'GET']) 47 | def order(): 48 | #This is for health checking 49 | if request.method == 'GET': 50 | return 'Welcome to the '+resource+' microservice' 51 | #Real requests 52 | elif request.method == 'POST': 53 | try: 54 | # Is this a normal SNS payload? Try to get JSON out of it 55 | payload = request.get_json(force=True) 56 | if 'SubscribeURL' in payload: 57 | print 'Incoming subscription request from SNS...' 58 | # print payload['SubscribeURL'] 59 | print 'Sending subscription confirmation to SNS...' 60 | response = requests.get(payload['SubscribeURL']) 61 | # print response.status_code 62 | if response.status_code == requests.codes.ok: 63 | return "SNS topic subscribed!" 64 | else: 65 | response.raise_for_status() 66 | elif (len(json.loads(payload['Message']))) == 1 and resource in payload['Message']: 67 | print 'Gathering Requested Items' 68 | produceResource() 69 | response = fulfill(endpoint, 1) 70 | if response == requests.codes.ok: 71 | print 'Spice fulfilled' 72 | return 'Your order has been fulfilled' 73 | else: 74 | print response 75 | return 'Your order has NOT been fulfilled' 76 | else: 77 | print 'Invalid Request JSON.' 78 | print 'The data sent was %s' % payload['Message'] 79 | except Exception as e: 80 | # Looks like it wasn't. 81 | print e 82 | print 'This was not a fulfillment request. This microservice is expecting exactly {"'+resource+'": 1}' 83 | print 'The data sent was %s' % payload['Message'] 84 | return 'We were unable to place your order' 85 | 86 | 87 | return 'This was not a fulfillment request. This microservice is expecting exactly {"'+resource+'": 1}' 88 | 89 | else: 90 | # We should never get here 91 | return "This is not the page you are looking for" 92 | 93 | if __name__ == '__main__': 94 | app.run(debug=True, host='0.0.0.0', port=portNum) 95 | -------------------------------------------------------------------------------- /workshop-microservices/code/iridium/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /workshop-microservices/code/magnesite/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV PRODUCT magnesite 4 | 5 | RUN apt-get -y update 6 | 7 | RUN apt-get -y install \ 8 | git \ 9 | wget \ 10 | python-dev \ 11 | python-virtualenv \ 12 | libffi-dev \ 13 | libssl-dev 14 | 15 | WORKDIR /root 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | COPY ./requirements.txt . 30 | 31 | RUN bin/pip install -r requirements.txt 32 | 33 | COPY ./${PRODUCT}.py . 34 | 35 | EXPOSE 80 36 | 37 | ENTRYPOINT ["bin/python", "magnesite.py"] 38 | -------------------------------------------------------------------------------- /workshop-microservices/code/magnesite/magnesite.py: -------------------------------------------------------------------------------- 1 | #!bin/python 2 | 3 | import time 4 | from flask import Flask 5 | from flask import request 6 | import json 7 | import requests 8 | import os 9 | import boto3 10 | from urllib2 import urlopen 11 | import logging 12 | import sys 13 | 14 | logging.basicConfig(stream=sys.stdout, level=logging.INFO) 15 | 16 | # This should be the endpoint of the monolith 17 | endpoint = os.getenv('monolithUrl') 18 | portNum = 80 19 | resource = 'magnesite' 20 | 21 | def produceResource(): 22 | print "Producing "+resource 23 | #time.sleep(1) 24 | return 25 | 26 | def fulfill(endpoint, number): 27 | if endpoint == '': 28 | return 'Missing endpoint' 29 | else: 30 | fullEndpoint = 'http://'+str(endpoint)+'/fulfill/' 31 | data = {resource : number} 32 | try: 33 | response = requests.post(fullEndpoint, data=json.dumps(data)) 34 | if response.status_code == requests.codes.ok: 35 | print response.status_code 36 | return response.status_code 37 | else: 38 | response.raise_for_status() 39 | except Exception as e: 40 | response = e 41 | return response 42 | 43 | app = Flask(__name__) 44 | 45 | # Effectively, our subscriber service. 46 | @app.route('/'+resource+'/', methods=['POST', 'GET']) 47 | def order(): 48 | #This is for health checking 49 | if request.method == 'GET': 50 | return 'Welcome to the '+resource+' microservice' 51 | #Real requests 52 | elif request.method == 'POST': 53 | try: 54 | # Is this a normal SNS payload? Try to get JSON out of it 55 | payload = request.get_json(force=True) 56 | if 'SubscribeURL' in payload: 57 | print 'Incoming subscription request from SNS...' 58 | # print payload['SubscribeURL'] 59 | print 'Sending subscription confirmation to SNS...' 60 | response = requests.get(payload['SubscribeURL']) 61 | # print response.status_code 62 | if response.status_code == requests.codes.ok: 63 | return "SNS topic subscribed!" 64 | else: 65 | response.raise_for_status() 66 | elif (len(json.loads(payload['Message']))) == 1 and resource in payload['Message']: 67 | print 'Gathering Requested Items' 68 | produceResource() 69 | response = fulfill(endpoint, 1) 70 | if response == requests.codes.ok: 71 | print 'Spice fulfilled' 72 | return 'Your order has been fulfilled' 73 | else: 74 | print response 75 | return 'Your order has NOT been fulfilled' 76 | else: 77 | print 'Invalid Request JSON.' 78 | print 'The data sent was %s' % payload['Message'] 79 | except Exception as e: 80 | # Looks like it wasn't. 81 | print e 82 | print 'This was not a fulfillment request. This microservice is expecting exactly {"'+resource+'": 1}' 83 | print 'The data sent was %s' % payload['Message'] 84 | return 'We were unable to place your order' 85 | 86 | 87 | return 'This was not a fulfillment request. This microservice is expecting exactly {"'+resource+'": 1}' 88 | 89 | else: 90 | # We should never get here 91 | return "This is not the page you are looking for" 92 | 93 | if __name__ == '__main__': 94 | app.run(debug=True, host='0.0.0.0', port=portNum) 95 | -------------------------------------------------------------------------------- /workshop-microservices/code/magnesite/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /workshop-microservices/code/monolith/Dockerfile.draft: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | RUN apt-get -y update 4 | 5 | RUN apt-get -y install \ 6 | git \ 7 | wget \ 8 | python-dev \ 9 | python-virtualenv \ 10 | libffi-dev \ 11 | libssl-dev 12 | 13 | WORKDIR /root 14 | 15 | ENV PRODUCT monolith 16 | 17 | RUN wget https://bootstrap.pypa.io/get-pip.py \ 18 | && python get-pip.py 19 | 20 | WORKDIR interstella 21 | 22 | RUN virtualenv ${PRODUCT} 23 | 24 | WORKDIR ${PRODUCT} 25 | 26 | RUN bin/pip install --upgrade pip && \ 27 | bin/pip install requests[security] 28 | 29 | #[TODO]: Copy monolith.py and requirements file into container image 30 | 31 | #[TODO]: Install dependencies listed in the requirements.txt file using pip 32 | 33 | #[TODO]: Specify a listening port for the container 34 | 35 | #[TODO]: Run the monolith.py as the final step. We want this container to run as an executable. Looking at ENTRYPOINT for this? 36 | 37 | -------------------------------------------------------------------------------- /workshop-microservices/code/monolith/installcredhelper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | mkdir /home/ec2-user/.docker 3 | cat << EOF > /home/ec2-user/.docker/config.json 4 | { 5 | "credsStore": "ecr-login" 6 | } 7 | EOF 8 | chown -R ec2-user. /home/ec2-user/.docker 9 | git clone https://github.com/awslabs/amazon-ecr-credential-helper.git 10 | cd amazon-ecr-credential-helper && make docker && cp bin/local/docker-credential-ecr-login /usr/local/bin/ 11 | -------------------------------------------------------------------------------- /workshop-microservices/code/monolith/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.12.2 2 | Jinja2==2.9.6 3 | MarkupSafe==1.0 4 | Werkzeug==0.12.2 5 | argparse==1.2.1 6 | boto3==1.4.7 7 | botocore==1.7.21 8 | certifi==2017.7.27.1 9 | chardet==3.0.4 10 | click==6.7 11 | docutils==0.14 12 | futures==3.1.1 13 | idna==2.6 14 | itsdangerous==0.24 15 | jmespath==0.9.3 16 | python-dateutil==2.6.1 17 | requests==2.18.4 18 | s3transfer==0.1.11 19 | six==1.11.0 20 | urllib3==1.22 21 | wsgiref==0.1.2 22 | -------------------------------------------------------------------------------- /workshop-microservices/images/00-api-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/00-api-key.png -------------------------------------------------------------------------------- /workshop-microservices/images/00-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/00-arch.png -------------------------------------------------------------------------------- /workshop-microservices/images/00-cf-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/00-cf-create.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-arch.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-c9-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-c9-2.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-c9-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-c9-3.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-c9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-c9.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-container-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-container-image.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-ec2-IP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-ec2-IP.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-ecr-push-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-ecr-push-complete.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-ecr-repo-uri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-ecr-repo-uri.png -------------------------------------------------------------------------------- /workshop-microservices/images/01-ecr-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/01-ecr-repo.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-arch.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-awslogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-awslogs.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-cloudwatch-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-cloudwatch-logs.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-container-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-container-instance.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-public-IP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-public-IP.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-run-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-run-task.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-stop-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-stop-task.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-task-def-add-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-task-def-add-container.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-task-pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-task-pending.png -------------------------------------------------------------------------------- /workshop-microservices/images/02-task-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/02-task-running.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-alb-dns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-alb-dns.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-alb-sns-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-alb-sns-sub.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-alb-step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-alb-step1.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-alb-step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-alb-step3.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-alb-step4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-alb-step4.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-arch.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-container-def-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-container-def-update.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-ecs-service-confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-ecs-service-confirm.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-ecs-service-step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-ecs-service-step2.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-ecs-service-step2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-ecs-service-step2a.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-ecs-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-ecs-service.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-edit-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-edit-container.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-logs-confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-logs-confirm.png -------------------------------------------------------------------------------- /workshop-microservices/images/03-task-def-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/03-task-def-update.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-arch.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-ecr-iridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-ecr-iridium.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-ecr-noiridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-ecr-noiridium.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-ecs-service-alb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-ecs-service-alb.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-ecs-service-step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-ecs-service-step1.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-ecs-service-vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-ecs-service-vpc.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-env-var.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-env-var.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-fargate-containerdef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-fargate-containerdef.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-fargate-logging.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-fargate-logging.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-fargate-taskdef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-fargate-taskdef.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-iridium-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-iridium-service.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-modify-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-modify-image.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-remove-iridium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-remove-iridium.png -------------------------------------------------------------------------------- /workshop-microservices/images/04-service-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amazon-archives/amazon-ecs-interstella-workshop/f43877eb1dfae69b6d47cc9d8195f7d6ebb8f04e/workshop-microservices/images/04-service-update.png --------------------------------------------------------------------------------