AWS + GH + PHP + dockera jak budować?

2

Mam aplikację, która będzie uruchamiana okresowo i chodzi o to by wykonała czynność i zamknęła się po jej wykonaniu.
Aplikacja jest na Lumen a hasła są w pliku .env co sprawdza się w normalnych warunkach.
Aplikacja jest w kontenerze a system kontroli wersji jest Git na GitHub. Powiedzmy, że podgrywam coś na mastera, kontner powinien się przebudować, ale co że zmiennymi środowiskowymi, w których trzymane są hasła? To powinno trzymać się w jakimś menedżerse haseł po stronie AWS, tyle że przecież kontener budowany jest przez GitHub actions. Jeśli umieszczę hasła w GH czy Dockerfile to złamię zasady bezpieczeństwa. Tak samo jeśli umieszczę .env gdzieś w repo.
Nie mam dużego doświadczenia z chmurami i Devops a wszystkie tutoriale jaki obejrzałem nic o tym nie mówią.
Być może też sposób budowania takiej aplikacji powinien wyglądać jeszcze inaczej i błądzę?

1

Cześć! :)

Opiszę to jak ja bym to zrobił.

Więc wykorzystałbym AWS ECS + fargate.
Hasła należy trzymać w AWS Secret Managerze.
W definicji tasku definiujesz zmienne środowiskowe + możesz zalinkować dane z SecretManager. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html

Co do cyklicznego uruchamiania tasku - to cloudwatch events.

Resources co potrzebujesz do terraforma co potrzebujesz.
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_cluster - do stworzenia miejsca gdzie będą uruchamiane taski
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition -> tutaj definiujesz taska, skąd pobrać docker image, zmienne środowiskowe + w definicji kontenera można ustawić by pobierał niektóre zmienne z SM.
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target -> a tutaj masz informację jak uruchamiać ten kontener o jakieś dacie, czy w interwałach.

Haseł NIGDY nie powinno się trzymać w obrazie. W obrazie docker'a powinna być sama aplikacja i podstawowa konfiguracja, tak by móc wykorzystać ten sam kontener do wielu środowisk (np. środowisko test/sandbox i production - i każde z tych środowisk powinno mieć inne hasło, ale ten sam kontener)

1

Nie mylcie obrazu z kontenerem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1