Blog

Jenkins Pipeline - Automatisierung von ECS- und RDS-Vorgängen mit Groovy

Bild von Iveta Paneva
Iveta Paneva
DevOps- und Cloud-Ingenieur
18.01.2024
Lesezeit: 3 Minuten.
Zuletzt aktualisiert am: 17.09.2025

Inhaltsübersicht

 Dieser Blogbeitrag führt Sie durch die Erstellung einer Jenkins-Pipeline zur Automatisierung von AWS ECS- (Elastic Container Service) und RDS- (Relational Database Service) Vorgängen. Das Pipeline-Skript ist in Groovy geschrieben, der Sprache, die in Jenkins häufig verwendet wird.

Heute demonstrieren wir eine der besten Vorgehensweisen für die Automatisierung des Prozesses der Initiierung eines ECS-Containers und einer RDS-Instanz, einschließlich einer E-Mail-Benachrichtigung im Falle eines Job-Fehlers. Wir werden die Schritte einzeln untersuchen und mit dem besten Ansatz abschließen.

Die Pipeline stellt sicher, dass Ihre ECS-Service-Updates und RDS-Instanzprüfungen konsistent ausgeführt werden, wodurch manuelle Fehler vermieden und ein nahtloser Bereitstellungsprozess gefördert wird.

Hier finden Sie den vollständigen Pipeline-Code und die Erklärung der einzelnen Schritte, die Sie ausführen werden:

pipeline {
    agent any
    environment {
       AWSRegion='ca-central-1'
    }
    stages {
        stage('Starting --> ') {
            steps{
                script {
                        sh "aws ecs update-service --cluster my-ecs-cluster-name --service my-ecs-service-name --profile my-aws-profile-name --region ${AWSRegion} --desired-count 1 | grep desiredCount"                        
                        sh(script: '''#!/bin/bash
                            aws rds describe-db-instances --profile my-aws-profile-name --db-instance-identifier my-db-name --region ${AWSRegion} | grep available
                            if [ $? == 0 ];then
                                echo "RDS instance has already started!"
                            else
                                aws rds start-db-instance --profile my-aws-profile-name --db-instance-identifier my-db-name --region ${AWSRegion} | grep DBInstanceStatus
                            fi
                            '''.stripIndent())

                    }
                }
            }
        }
    }
    post{
        failure{
            mail to: 'my-email-address@email.com',
            subject: "Jenkins build:${currentBuild.currentResult}: ${env.JOB_NAME}",
            body: "${currentBuild.currentResult}: Job ${env.JOB_NAME}\nMore info can be found here: ${env.BUILD_URL}"
        }
    }
}

Tipps: Wenn Sie den ECS und RDS stoppen möchten, ersetzen Sie einfach " -desired-count 1" anstelle von 1, um auf 0 gesetzt zu werden, und für den RDS anstelle von "start-db-instance" ersetzen Sie es durch "stop-db-instance"

Lassen Sie uns nun die einzelnen Schritte der Pipeline aufschlüsseln:

  • Die Pipeline ist so konfiguriert, dass sie auf jedem verfügbaren Agenten läuft.
pipeline {
    agent any
  • Verwendung von Umgebungsvariablen:

Die AWS-Region wird zur einfachen Konfiguration als Umgebungsvariable festgelegt.

environment {9
   AWSRegion='ca-central-1'  (you can replace it with the region you want)
}
  • Die Pipeline hat eine einzige Stufe mit der Bezeichnung "Start" und entsprechenden Schritten.
stages {
    stage('Starting --> ') {
        steps {
            // Pipeline steps go here
        }
    }
}
  • Aktualisieren Sie die Anzahl der ECS-Dienste:

Die Pipeline beginnt mit der Aktualisierung eines ECS-Dienstes, indem die Anzahl der gewünschten Aufgaben auf 1 gesetzt wird (was bedeutet, dass der Container gestartet wird).

Hierfür werden AWS CLI-Befehle verwendet:

sh "aws ecs update-service --cluster my-ecs-cluster-name --service my-ecs-service-name --profile my-aws-profile-name --region ${AWSRegion} --desired-count 1 | grep desiredCount"
  • Starten Sie die RDS-Instanz:

Als nächstes prüft die Pipeline den Status einer RDS-Instanz. Wenn die Instanz bereits verfügbar ist, gibt sie eine Meldung aus. Andernfalls startet sie die RDS-Instanz mithilfe der AWS-CLI.

sh(script: '''
    aws rds describe-db-instances --profile my-aws-profile-name --db-instance-identifier my-db-name --region ${AWSRegion} | grep available
    if [ $? == 0 ];then
        echo "RDS instance has already started!"
    else
        aws rds start-db-instance --profile my-aws-profile-name --db-instance-identifier my-db-name --region ${AWSRegion} | grep DBInstanceStatus
    fi
'''.stripIndent())
  • Aktionen nach dem Bau:

Im Falle eines Build-Fehlers wird eine E-Mail-Benachrichtigung an die angegebene E-Mail-Adresse gesendet:

post {

    failure {

        mail to: 'my-email-address@email.com',

        subject: "Jenkins build:${currentBuild.currentResult}: ${env.JOB_NAME}",

        body: "${currentBuild.currentResult}: Job ${env.JOB_NAME}\nMore info can be found here: ${env.BUILD_URL}"

    }

}

Beispiel für eine E-Mail:

Thema: Jenkins build:FAILURE: OPERATIONS/Multi-Instanz-Stop

FEHLER: Job OPERATIONS/Multi-Instanz-Stop

Weitere Informationen finden Sie hier: https://X.X.X.X/job/PATH/TO/THE/JOB/Start-my-instances

Tipps: Einer der besten Aspekte eines solchen Jobs ist, dass Sie das Ausführungsdatum/die Ausführungszeit und die Dienste, die gestartet oder gestoppt werden können, beeinflussen können. Durch die Einstellung des Cron in Jenkins können Sie den Arbeitsablauf minimieren, um Ihre monatlichen Ausgaben nicht zu erhöhen.

Zusammenfassend lässt sich sagen, dass das Groovy-Skript und die AWS CLI-Befehle leicht anpassbar sind, sodass Sie die Pipeline an Ihre AWS-Umgebung und Ihre spezifischen Anforderungen anpassen können.

Im Grunde genommen ist diese Pipeline Ihre Eintrittskarte zu einer stressfreien und festlichen AWS-Bereitstellung. 

Überlassen Sie Jenkins die Routineaufgaben der Aktualisierung von ECS-Diensten und der Überprüfung von RDS-Instanzen. 

Kein manuelles Eingreifen erforderlich - einstellen und vergessen!

Entdecken Sie die Dienstleistungen von ITGix und erfahren Sie mehr über unser Know-how.

Eine Antwort hinterlassen

Mehr Beiträge

Die ITGix AWS Landing Zone wird kontinuierlich weiterentwickelt, wobei ein klares Ziel im Vordergrund steht: Unternehmen sollen in die Lage versetzt werden, sichere, konforme und skalierbare AWS-Umgebungen mit geringerem Betriebsaufwand aufzubauen. In den jüngsten Versionen (v1.2.0...
Lesen
In früheren Artikeln haben wir uns mit der Migration von Repositorys aus der Bitbucket Cloud, der sicheren Aktualisierung von Projektabhängigkeiten und der Modernisierung von CI/CD-Workflows durch die Umstellung von Jenkins- und Bash-basierten Pipelines auf GitHub Actions befasst. Auf dieser Grundlage...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.