Automatyzacja wdrażania kodu z AWS CodeCommit i CodeDeploy

Opublikowany: 2022-03-25

Automate Code Deployment with AWS CodeCommit & CodeDeploy

Jako 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:

  1. 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.
  2. Serwer EC2 : użyjemy EC2 jako naszego serwera produkcyjnego, będzie on zawierał działającą witrynę i kod dla odwiedzających Twoją witrynę.
  3. 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.
  4. 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 :

Szukasz EKSPERTÓW AWS? ZAMÓW TUTAJ

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.

  1. Utwórz użytkownika uprawnień
    1. Zezwól na dostęp do : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Tę opcję znajdziesz w zakładce „Załącz istniejące polityki bezpośrednio”.
  2. Teraz zaloguj się za pomocą tego użytkownika uprawnień.
  3. Kliknij Poświadczenia bezpieczeństwa w prawym górnym rogu.
  4. Kliknij kartę poświadczenia AWS CodeCommit .
  5. W sekcji „Poświadczenia HTTPS Git dla AWS CodeCommit” kliknij przycisk Generuj poświadczenia .
  6. 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.

  1. Przejdź do pulpitu nawigacyjnego CodeCommit od użytkownika uprawnień.
  2. W prawym górnym rogu wybierz region, w którym chcesz utworzyć repozytorium.
  3. Kliknij Utwórz repozytorium, nadaj mu nazwę, opis i kliknij Utwórz.
  4. 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

Creating a Repository in CodeCommit

Szukasz EKSPERTÓW AWS? ZAMÓW TUTAJ

Przesyłanie pliku projektu po raz pierwszy

  1. Otwórz wiersz polecenia systemu lokalnego, w którym znajduje się oryginalny kod.
  2. W wierszu polecenia przejdź do ścieżki, w której znajduje się kod.
  3. 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

Uploading your project file for the first time

  • Utwórz instancję EC2 i zainstaluj agenta CodeDeploy
  1. Utwórz rolę instancji
    1. Otwórz konsolę AWS IAM.
    2. Przejdź do zakładki Role >> Utwórz rolę.
    3. 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 .
    4. Wyszukaj i wybierz zasadę o nazwie AmazonEC2Rolefor AWSCodeDeploy , a następnie wybierz Dalej: Tagi .
    5. Wybierz Dalej: Recenzja. Wprowadź nazwę roli (na przykład EC2InstanceRole ) i kliknij Utwórz .
  2. Utwórz instancję EC2
    1. Przejdź do konsoli EC2. Kliknij Uruchom instancję.
    2. 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).
    3. 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 .
    4. Konfiguruj stronę szczegółów instancji, wykonaj następujące czynności:
      1. W polu Liczba wystąpień wpisz 1 .
      2. W polu Automatycznie przypisuj publiczny adres IP wybierz Włącz .
      3. W roli uprawnień wybierz rolę uprawnień utworzoną w poprzedniej procedurze (na przykład EC2InstanceRole ).
      4. 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

  1. Pozostałe elementy na stronie Krok 3: Konfiguracja szczegółów instancji pozostaw bez zmian. Wybierz Dalej: Dodaj miejsce .
  2. Pozostaw bez zmian Krok 4: Dodaj stronę magazynu, a następnie wybierz Dalej: Dodaj tagi.
  3. 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ń.
  4. 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
  5. Wybierz Przejrzyj i uruchom.
  6. Na stronie Uruchamianie wystąpienia recenzji wybierz opcję Uruchom. Po wyświetleniu monitu o parę kluczy wybierz „ Kontynuuj bez pary kluczy” .
  7. Wybierz opcję Wyświetl instancje , aby zamknąć stronę potwierdzenia i wrócić do konsoli.
  8. 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 .)
  9. 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.

Create an EC2 Instance

Szukasz EKSPERTÓW AWS? ZAMÓW TUTAJ

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ę.

    Create an application in CodeDeploy

  • 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.

Create a deployment group in CodeDeploy

Szukasz EKSPERTÓW AWS? ZAMÓW TUTAJ

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.

Create a Pipeline

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.

Create an Option Group

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.

Szukasz EKSPERTÓW AWS? ZAMÓW TUTAJ