Automatyzacja wdrażania kodu z AWS CodeCommit i CodeDeploy
Opublikowany: 2022-03-25Jako programista stron internetowych Twoja praca może obejmować kilka złożonych zadań, takich jak automatyzacja wdrażania kodu na serwerach produkcyjnych lub jeśli pracujesz w grupie i napotykasz problemy podczas przesyłania kodu do działającej witryny internetowej, ten wpis na blogu jest rozwiązaniem, które pozwoli przezwyciężyć wszystkie takie problemy zagadnienia.
Korzystając z FTP, musisz nadpisać kod swojego programisty, co jest dość powszechne i zdarza się u większości z nas. Ten przewodnik pokaże Ci automatyzację wdrażania kodu za pomocą usług AWS CodeCommit, CodeDeploy i Pipeline.
Przegląd technologiczny:
- AWS CodeCommit : Użyjemy CodeCommit do utrzymania naszych repozytoriów (treści internetowych/plików kodu), które będą przechowywać wszystkie pliki projektu i logi zatwierdzenia.
- Serwer EC2 : użyjemy EC2 jako naszego serwera produkcyjnego, będzie on zawierał działającą witrynę i kod dla odwiedzających Twoją witrynę.
- AWS CodeDeploy : będzie przechowywać aplikację do publikowania kodu na serwerze EC2. Utworzymy również grupę wdrożeniową, która będzie przechowywać nazwę/tag docelowej instancji EC2, w której chcemy opublikować nasz kod.
- Pipeline : wybierzemy CodeCommit jako nasze źródło i CodeDeploy jako etap wdrażania. W związku z tym za każdym razem, gdy w CodeCommit zostaną wykryte jakiekolwiek zmiany kodu, potok zostanie uruchomiony i wypchnie te zmiany kodu do CodeDeploy (wystąpienie EC2).
Automatyzacja wdrażania kodu: szczegółowe wyjaśnienie :
Tworzenie użytkownika IAM i Git do automatyzacji wdrażania kodu
Najpierw musimy utworzyć użytkownika IAM i użytkownika Git, który wprowadzi zmiany w kodzie i opublikuje je na serwerze wdrażania.
- Utwórz użytkownika uprawnień
- Zezwól na dostęp do : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Tę opcję znajdziesz w zakładce „Załącz istniejące polityki bezpośrednio”.
- Teraz zaloguj się za pomocą tego użytkownika uprawnień.
- Kliknij Poświadczenia bezpieczeństwa w prawym górnym rogu.
- Kliknij kartę poświadczenia AWS CodeCommit .
- W sekcji „Poświadczenia HTTPS Git dla AWS CodeCommit” kliknij przycisk Generuj poświadczenia .
- Teraz skopiuj tę nazwę użytkownika i hasło w bezpieczne miejsce. Będzie to główna nazwa użytkownika i hasło w Twoim Git do wypychania/wyciągania zmian w kodzie.
Tworzenie repozytorium w CodeCommit
Teraz stwórzmy repozytorium, w którym będzie przechowywany dokładny kod.
- Przejdź do pulpitu nawigacyjnego CodeCommit od użytkownika uprawnień.
- W prawym górnym rogu wybierz region, w którym chcesz utworzyć repozytorium.
- Kliknij Utwórz repozytorium, nadaj mu nazwę, opis i kliknij Utwórz.
- W sekcji „ Klonuj repozytorium ” zobaczysz adres URL swojego repozytorium. Zapisz go w bezpiecznym miejscu. Będzie wyglądać tak: https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
Przesyłanie pliku projektu po raz pierwszy
- Otwórz wiersz polecenia systemu lokalnego, w którym znajduje się oryginalny kod.
- W wierszu polecenia przejdź do ścieżki, w której znajduje się kod.
- Teraz uruchom następujące polecenia, aby po raz pierwszy wypchnąć swój kod do repozytorium AWS:
git init
git config –local init.defaultBranch main
git config –global init.defaultBranch main
git dodaj . ## to zatwierdzi wszystkie pliki projektu
git commit –m „Początkowe zatwierdzenie”
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all
- Utwórz instancję EC2 i zainstaluj agenta CodeDeploy
- Utwórz rolę instancji
- Otwórz konsolę AWS IAM.
- Przejdź do zakładki Role >> Utwórz rolę.
- W sekcji Wybierz typ zaufanej jednostki wybierz usługę AWS . W sekcji „Wybierz przypadek użycia” wybierz EC2 . W sekcji „Wybierz swój przypadek użycia” wybierz EC2. Wybierz Dalej: Uprawnienia .
- Wyszukaj i wybierz zasadę o nazwie AmazonEC2Rolefor AWSCodeDeploy , a następnie wybierz Dalej: Tagi .
- Wybierz Dalej: Recenzja. Wprowadź nazwę roli (na przykład EC2InstanceRole ) i kliknij Utwórz .
- Utwórz instancję EC2
- Przejdź do konsoli EC2. Kliknij Uruchom instancję.
- Wybierz obraz maszyny Amazon (AMI), zlokalizuj Amazon Linux 2 AMI (HVM), typ woluminu SSD , a następnie wybierz opcję Wybierz. (Ten AMI jest oznaczony jako „Kwalifikujący się do bezpłatnego poziomu” i można go znaleźć na górze listy).
- Wybierz stronę Typ wystąpienia , wybierz typ t2.micro kwalifikujący się do bezpłatnej warstwy jako konfigurację sprzętu dla wystąpienia, a następnie wybierz Dalej: Skonfiguruj szczegóły wystąpienia .
- Konfiguruj stronę szczegółów instancji, wykonaj następujące czynności:
- W polu Liczba wystąpień wpisz 1 .
- W polu Automatycznie przypisuj publiczny adres IP wybierz Włącz .
- W roli uprawnień wybierz rolę uprawnień utworzoną w poprzedniej procedurze (na przykład EC2InstanceRole ).
- Rozwiń Szczegóły zaawansowane i w polu Dane użytkownika wprowadź następujące dane:
#!/kosz/bash
mniam-y aktualizacja
mniam zainstaluj -y rubin
mniam zainstaluj -y aws-cli
cd /home/użytkownik ec2
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./install
./zainstaluj auto
- Pozostałe elementy na stronie Krok 3: Konfiguracja szczegółów instancji pozostaw bez zmian. Wybierz Dalej: Dodaj miejsce .
- Pozostaw bez zmian Krok 4: Dodaj stronę magazynu, a następnie wybierz Dalej: Dodaj tagi.
- Wybierz Dodaj tag . W Key wprowadź Name , aw Value wprowadź MyCodePipelineDemo . Wybierz Dalej: Skonfiguruj grupę zabezpieczeń. Później utworzysz aplikację CodeDeploy, która wdraża przykładową aplikację w tym wystąpieniu. CodeDeploy wybiera wystąpienia do wdrożenia na podstawie tagów dołączonych do wystąpień.
- Skonfiguruj stronę grupy zabezpieczeń, wykonaj następujące czynności:
- Obok Przypisz grupę zabezpieczeń wybierz Utwórz nową grupę zabezpieczeń .
- W wierszu SSH , w obszarze Źródło , wybierz Mój adres IP .
- Wybierz Dodaj regułę , wybierz HTTP , a następnie w sekcji Źródło wybierz Mój adres IP
- Wybierz Przejrzyj i uruchom.
- Na stronie Uruchamianie wystąpienia recenzji wybierz opcję Uruchom. Po wyświetleniu monitu o parę kluczy wybierz „ Kontynuuj bez pary kluczy” .
- Wybierz opcję Wyświetl instancje , aby zamknąć stronę potwierdzenia i wrócić do konsoli.
- Możesz sprawdzić stan uruchomienia na stronie Instancje . Kiedy uruchamiasz instancję, jej stan początkowy jest „oczekujący”. Po uruchomieniu instancji jej stan zmienia się na „uruchomiony” i otrzymuje publiczną nazwę DNS. (Jeśli kolumna Publiczny DNS nie jest wyświetlana, wybierz ikonę Pokaż/Ukryj , a następnie wybierz Publiczny DNS .)
- Może minąć kilka minut, zanim instancja będzie gotowa do połączenia się z nią. Wyświetl informacje w kolumnie Kontrole stanu , aby sprawdzić, czy Twoja instancja przeszła pomyślnie kontrolę stanu.
Utwórz aplikację w CodeDeploy
- Utwórz rolę usługi CodeDeploy
- Otwórz konsolę uprawnień na https://console.aws.amazon.com/iam/
- Z pulpitu nawigacyjnego konsoli wybierz Role .
- Wybierz opcję Utwórz rolę .
- W sekcji Wybierz typ zaufanej jednostki wybierz usługę AWS . W obszarze Wybierz przypadek użycia wybierz CodeDeploy . W obszarze Wybierz przypadek użycia wybierz CodeDeploy. Wybierz Dalej: Uprawnienia. Zasada zarządzana AWSCodeDeployRole jest już dołączona do roli.
- Wybierz Dalej: Tagi i Dalej: Recenzja.
- Wprowadź nazwę roli (na przykład CodeDeployRole), a następnie wybierz opcję Utwórz rolę.
- Utwórz aplikację w CodeDeploy
- Otwórz konsolę CodeDeploy na https://console.aws.amazon.com/codedeploy
- Jeśli strona Aplikacje nie pojawi się, w menu wybierz Aplikacje .
- Wybierz opcję Utwórz aplikację .
- W nazwie aplikacji wpisz MyDemoApplication .
- W Compute Platform wybierz EC2/On-premises .
- Wybierz opcję Utwórz aplikację.
- Utwórz grupę wdrożeniową w CodeDeploy
- Na stronie wyświetlającej aplikację wybierz opcję Utwórz grupę wdrażania .
- W nazwie grupy wdrażania wpisz MyDemoDeploymentGroup .
- Rola w usłudze, wybierz utworzoną wcześniej rolę usługi (na przykład CodeDeployRole ).
- W obszarze Typ wdrożenia wybierz opcję Lokalne .
- W sekcji Konfiguracja środowiska wybierz Instancje Amazon EC2 . W polu Klucz wpisz Nazwa . W polu Wartość wprowadź nazwę użytą do oznaczenia instancji (na przykład MyCodePipelineDemo ).
- W obszarze Konfiguracja wdrożenia wybierz CodeDeployDefault.OneAtaTime .
- W obszarze Load Balancer upewnij się, że opcja Włącz równoważenie obciążenia nie jest zaznaczona . Dla tego przykładu nie musisz konfigurować load balancera ani wybierać grupy docelowej.
- Rozwiń sekcję Zaawansowane. W obszarze Alarmy, jeśli są wymienione jakieś alarmy, wybierz opcję Ignoruj konfigurację alarmów.
- Wybierz opcję Utwórz grupę wdrażania.
Utwórz rurociąg
- Utwórz rurociąg
- Zaloguj się do AWS Management Console i otwórz konsolę CodePipeline na http://console.aws.amazon.com/codesuite/codepipeline/home
- Otwórz konsolę CodePipeline na https://console.aws.amazon.com/codepipeline/
- Wybierz opcję Utwórz potok .
- W kroku 1 : Wybierz ustawienia potoku, w nazwie potoku wpisz MyFirstPipeline .
- W roli Usługa wybierz nową rolę usługi, aby umożliwić CodePipeline utworzenie roli usługi w uprawnieniach.
- Pozostaw domyślne ustawienia w obszarze Ustawienia zaawansowane, a następnie wybierz Dalej.
- W kroku 2 : Dodaj etap źródłowy, w dostawcy źródła wybierz CodeCommit .
W polu Nazwa repozytorium wybierz nazwę repozytorium CodeCommit utworzonego w kroku 1: Utwórz repozytorium CodeCommit. W polu Nazwa oddziału wybierz główny, a następnie wybierz Następny krok. - Po wybraniu nazwy repozytorium i gałęzi, pojawi się komunikat wyświetlający regułę zdarzeń Amazon CloudWatch, która ma zostać utworzona dla tego potoku.
- W opcjach „Zmień wykrywanie” pozostaw wartości domyślne. Dzięki temu CodePipeline może używać Amazon CloudWatch Events do wykrywania zmian w repozytorium źródłowym.
- Wybierz Dalej .
- W kroku 3 : Dodaj etap kompilacji wybierz opcję Pomiń etap kompilacji , a następnie zaakceptuj komunikat ostrzegawczy, ponownie wybierając opcję Pomiń . Wybierz Dalej .
Uwaga : w tym samouczku wdrażasz kod, który wymaga usługi bez kompilacji, więc możesz pominąć ten krok. Jeśli jednak kod źródłowy musi zostać skompilowany przed wdrożeniem w wystąpieniach, w tym kroku można skonfigurować CodeBuild.
- W kroku 4 : Dodaj etap wdrażania, w dostawcy wdrażania wybierz pozycję CodeDeploy .
W nazwie aplikacji wybierz MyDemoApplication . W grupie Deployment wybierz MyDemoDeploymentGroup , a następnie wybierz Next step . - W kroku 5 : Przejrzyj informacje, a następnie wybierz opcję Utwórz potok .
- Potok zaczyna działać po utworzeniu. Pobiera kod z repozytorium CodeCommit i tworzy wdrożenie CodeDeploy w wystąpieniu EC2. Możesz wyświetlić komunikaty o postępie, „sukcesie” i „porażce”, gdy przykład CodePipeline wdraża stronę internetową w instancji Amazon EC2 we wdrożeniu CodeDeploy.
Wszystko gotowe! Przejdź do sekcji Wdrażanie ⇒ Wdrożenia. Zobaczysz dzienniki wszystkich wdrożeń, które zakończyły się powodzeniem i tych, które zakończyły się niepowodzeniem.
Aby zweryfikować zmiany na stronie, otwórz instancję EC2, wyszukaj swój publiczny DNS, który będzie wyglądał jako: http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com .
Po jej przejrzeniu zobaczysz swoje aktywne strony.
Udało Ci się pomyślnie ukończyć automatyzację wdrażania kodu. Możesz teraz przesyłać nowe zmiany w kodzie do swojego repozytorium i automatycznie publikować je w swojej witrynie. Jeśli nadal masz jakieś problemy, możesz skomentować tutaj.