Files
Open-Assistant/copilot
Yannic Kilcher cc03376d86 added root tokens and endpoint for adding api keys (#742)
* added root tokens and endpoint for adding api keys

* Change down revision to current alembic head

* removed added_by_root_token

* refactored description

* fixed jinja errors

Co-authored-by: Andreas Köpf <andreas.koepf@provisio.com>
2023-01-15 21:24:25 +00:00
..
2023-01-01 20:57:35 +00:00

Deploying on AWS

Introduction

Copilot helps simplify AWS resources and automate deploymnents for projects.

This sample configuration runs the Open Assistant web app as an ECS Fargate services backed by a Serverless Aurora Postgres database.

To Setup

Setup requires a few steps:

copilot app init --domain your_domain.com

This will initialize and register a variety of URLs with your your_domain.com. Replace with a proper domain to setup SSL certificates.

copilot env deploy

This will create a variety of aws roles and services needed for deployment.

copilot deploy

This will depoy the services but it won't be 100% ready for usage. Before being ready, we have to inspect the AWS Secrets manager and extract out the database credentials. Read those credentials then put them, and a few other secrets, in a secrets.yml file like the following:

DATABASE_URL:
  staging: postgres://postgres:${db_password}@${db_host}:${db_port}/${db_name}
DISCORD_CLIENT_ID:
  staging: ...
DISCORD_CLIENT_SECRET:
  staging: ...
EMAIL_SERVER_HOST:
  staging: ...
EMAIL_SERVER_PORT:
  staging: ...
EMAIL_SERVER_USER:
  staging: ...
EMAIL_SERVER_PASSWORD:
  staging: ...
EMAIL_FROM:
  staging: ...
FASTAPI_URL:
  staging: ...
FASTAPI_KEY:
  staging: ...
NEXTAUTH_SECRET:
  staging: ...

Then, upload the secrets to AWS with:

copilot secret init --cli-input-yaml secrets.yml

Now, finally deploy:

copilot deploy

If we documented everything correctly, the site should work properly.

To Update Manually

First, make sure the database is updated with any schema changes:

copilot task run \
    --app open-assistant --env staging \
    -n prisma-push \
    --dockerfile docker/Dockerfile.prisma --build-context "./" \
    --secrets DATABASE_URL=/copilot/open-assistant/staging/secrets/DATABASE_URL

Next, deploy everything:

copilot deploy

TODO: Make this a pipeline once github and aws are fully connected.