Creating a Copilot App ########################## These are the steps I followed to create a new copilot app. - ``copilot app init`` - the app is a group of jobs and services - on ``init``, it creates a StackSet role in cloud formation that will hold all the jobs and services; and an IAM role for all the permissions - ``copilot init`` - this prompts you to create your first job/svc - follow dialogues to create job (not documented here) - ``copilot env init`` - just create a prod environment with defaults - this is a space that holds things later, e.g. credentials - creates tons of connections to Cloud Formation, VPCs etc. Not sure what really happens - ``copilot env deploy`` - pushes everything live - again unsure what happens but is just required subsequent to ``env init`` - ``copilot secret init`` - we need secrets to provide the equivalent of the .env file used locally - create one per, then add an entry to the job's manifest YAML file like so: PROD_PASSWORD: /copilot/${COPILOT_APPLICATION_NAME}/${COPILOT_ENVIRONMENT_NAME}/secrets/PROD_PASSWORD PROD_URL: /copilot/${COPILOT_APPLICATION_NAME}/${COPILOT_ENVIRONMENT_NAME}/secrets/PROD_URL S3_ACCESS: /copilot/${COPILOT_APPLICATION_NAME}/${COPILOT_ENVIRONMENT_NAME}/secrets/S3_ACCESS S3_SECRET: /copilot/${COPILOT_APPLICATION_NAME}/${COPILOT_ENVIRONMENT_NAME}/secrets/S3_SECRET - now that the job definition exists, and the secrets to which that definition refers are created, you can deploy the job with ``copilot job deploy`` - you should see it building the docker image with from the file you specified - it then pushes this image to the ECR - then, there are a handful of other tasks run at once - IAM roles - CloudWatch log group - ECS task definition - to test any job, you can call ``copilot job run`` - you should see a running task in the ECS menu - you should see new logs in the corresponding CloudWatch log group - ``copilot pipeline init`` - this creates the manifest and buildspec for a new pipeline, which is an automatic sourcing and deployment process - ``copilot pipeline deploy`` - this launches the defined pipeline - it will ask you to authenticate a connection to your github repo; click around a bunch and enter your passwords etc