Copilot ist der Nachfolger von Amazon ECS CLI. Ein Tool zum Erstellen von Umgebungen, das entwickelt wurde, um die Ausführung von Containern in ECS zu vereinfachen. Mit Copilot erstellte AWS-Ressourcen werden von CloudFormation verwaltet Im Gegensatz zu AWS CDK (einem Tool, das CloudFormation-Vorlagen programmgesteuert verwaltet) müssen Sie selten Code schreiben!
Kann mit Homebrew oder direkt mit Curl installiert werden
# homebrew
$ brew install aws/tap/copilot-cli
#Direkt mit Locke installieren
$ curl -Lo /usr/local/bin/copilot https://github.com/aws/copilot-cli/releases/download/v0.3.0/copilot-darwin-v0.3.0 && chmod +x /usr/local/bin/copilot && copilot --help
#Versionsbestätigung
$ copilot -v
Lassen Sie uns andere notwendige Gegenstände vorbereiten
Stellen wir die Webanwendung mithilfe von Copilot tatsächlich für ECS bereit!
Sie können sich auf den Ausführungsstatus der Bereitstellung und die auszuführende CloudFormation-Vorlage beziehen, indem Sie die folgenden Schritte ausführen. Sie können auch die AWS-Ressourcen überprüfen, die hier erstellt werden. ** AWS Console> CloudFormation> Stack **
Erstellen Sie die Anwendung, die Sie bereitstellen möchten, mit Docker Dieses Mal stellen wir diese Rails-App mit Copilot bereit
https://github.com/git-gen/copilot-rails-deploy
** Grundeinstellung **
# config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
database: ## RDS database ##
host: ## RDS host ##
username: ## RDS username ##
password: ## RDS password ##
development:
<<: *default
test:
<<: *default
production:
<<: *default
$ docker-compose build
$ docker-compose up -d
Wenn Sie es unter http: // localhost: 3000 bestätigen können, können Sie loslegen!
Dies ist der Mechanismus der von Copilot erstellten Anwendung Ich werde diese einzeln erstellen
--Anwendung: Zusammenfassung der Copilot-Anwendungen
Environments · aws/copilot-cli Wiki · GitHub
Erstellen Sie eine Anwendung mit Copilot Zu diesem Zeitpunkt werden Sie nach dem Anwendungsnamen gefragt. Legen Sie ihn also fest
$ copilot app init
What would you like to name your application? [? for help]
> copilot-app
#Bestätigung der erstellten Anwendung
$ copilot app init
Durch Erstellen mehrerer Umgebungen können Sie die Umgebung in eine Testumgebung und eine Produktionsumgebung unterteilen. Sie werden aufgefordert, die VPC / das Subnetz beim Erstellen der Umgebung festzulegen. Die Standardeinstellungen generieren eine neue VPC / Subnetz / Sicherheitsgruppe
$ copilot env init
What is your environment's name? [? for help]
> development
#Umgebungsbestätigung
$ copilot env ls
** Wenn Sie eine vorhandene VPC / ein vorhandenes Subnetz verwenden möchten, fügen Sie eine Option wie diese hinzu ** Die Sicherheitsgruppeneinstellung ist übrigens Es scheint, dass Copilot es noch nicht unterstützt und nicht eingestellt werden kann
$ copilot env init \
--import-vpc-id vpc-****** \
--import-public-subnets subnet-******,subnet-****** \
--import-private-subnets subnet-******
Schienen-Service hinzufügen Ich rufe Rails direkt von ALB an, ohne Nginx usw. zu verwenden.
$ copilot svc init
Which service type best represents your service's architecture? [Use arrows to move, type to filter, ? for more help]
> Load Balanced Web Service
Backend Service
What do you want to name this Load Balanced Web Service? [? for help]
> app
Which Dockerfile would you like to use for app? [Use arrows to move, type to filter, ? for more help]
> ./Dockerfile
#Servicebestätigung
$ copilot svc ls
Das Dockerfile sieht so aus Informationen zur Docker-Konvertierung von Rails finden Sie hier! https://docs.docker.com/compose/rails/
FROM ruby:2.7.0-alpine3.11
ENV LANG=C.UTF-8
ENV TZ=Asia/Tokyo
RUN apk update && \
apk upgrade && \
apk add --no-cache \
gcc \
g++ \
git \
libc-dev \
libxml2-dev \
linux-headers \
make \
nodejs \
mariadb-dev \
tzdata && \
apk add --virtual build-packs --no-cache \
build-base \
curl-dev
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app
RUN apk del build-packs
# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
Jetzt können Sie loslegen! Überprüfen Sie, ob die Einstellungsdatei im Stammverzeichnis des Projekts generiert wurde.
copilot-rails-deploy/
├ copilot/
│ ├ app/
│ │ └ manifest.yml
│ └ .workspace
│...
Sie können Aufgabenspezifikationen und Konstanten in manifest.yml festlegen Hier kann auch die ECS-Seitenwagenkonfiguration usw. eingestellt werden
name: app
type: Load Balanced Web Service
image:
build: ./Dockerfile
port: 3000
http:
path: "/"
healthcheck: "/health_check"
cpu: 1024
memory: 2048
count: 1
variables:
RAILS_ENV: development
Obwohl es sich um eine Aufgabendefinitionsspezifikation handelt, Die unterstützten Nummern sind fest. Wenn Sie sie ändern möchten, legen Sie sie innerhalb dieses Bereichs fest.
CPU-Wert | Speicherwert(MiB) |
---|---|
256 (.25 vCPU) | 512 (0.5 GB)、1024 (1 GB)、2048 (2 GB) |
512 (.5 vCPU) | 1024 (1 GB)、2048 (2 GB)、3072 (3 GB)、4096 (4 GB) |
1024 (1 vCPU) | 2048 (2 GB)、3072 (3 GB)、4096 (4 GB)、5120 (5 GB)、6144 (6 GB)、7168 (7 GB)、8192 (8 GB) |
2048 (2 vCPU) | 4096 (4 GB) ~ 16384 (16 GB) (1024 (1 GB)Inkrement von) |
4096 (4 vCPU) | 8192 (8 GB) ~ 30720 (30 GB) (1024 (1 GB)Inkrement von) |
Stellen Sie die App mit Copilot bereit
$ copilot deploy
Wenn die Bereitstellung erfolgreich ist, wird die URL in die Befehlszeile geschrieben Wenn Sie auf den Schienenbildschirm zugreifen und diesen öffnen, ist die Bereitstellung erfolgreich!
Mit Copilot erstellte AWS-Ressourcen können mit dem Befehl delete in großen Mengen gelöscht werden Löschen wir die diesmal erstellte App
#Siehe Copilot-App
$ copilot app ls
copilot-app
#Löschen Sie die App
$ copilot app delete copilot-app
Are you sure you want to delete application copilot-app? Yes
Recommended Posts