Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie führe ich den CodeDeploy-Agent mit einem Benutzerprofil aus, das nicht das Stammprofil ist?
Ich möchte den AWS-CodeDeploy-Agent mit einem Benutzerprofil ausführen, das nicht das Stammprofil ist.
Lösung
Amazon Linux 2 und Amazon Linux 2023 haben das Amazon Linux 1 Amazon Machine Image (AMI) ersetzt. Du kannst Amazon Linux 1 AMIs nicht mehr als Amazon Elastic Compute Cloud (Amazon EC2)-Instance starten. Die folgende Lösung ist mit allen unterstützten RPM- und Debian-basierten Linux-Distributionen des CodeDeploy-Agent kompatibel.
Voraussetzung: Installiere den CodeDeploy-Agent auf deiner EC2-Instance oder überprüfe, ob der CodeDeploy-Agent auf der Instance ausgeführt wird.
Ändere den Benutzer in deiner CodeDeploy-Agent-Konfigurationsdatei und gewähre dem Benutzer die erforderlichen Berechtigungen
Führe die folgenden Schritte aus:
-
Verwende SSH, um eine Verbindung zu deiner EC2-Instance herzustellen.
-
Um den CodeDeploy-Host-Agent, der auf der Instance installiert ist, zu stoppen, führe den folgenden Befehl aus:
sudo service codedeploy-agent stop
-
Um den Benutzer in der Konfigurationsdatei des CodeDeploy-Agent zu ändern, führe den folgenden sed-Stream-Editor-Befehl aus:
sudo sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent
Hinweis: Ersetze ec2-user durch den Benutzernamen, mit dem der CodeDeploy-Host-Agent ausgeführt werden soll. Weitere Informationen über den Befehl sed findest du unter Einführung auf der GNU-Website.
-
Um die systemd-Konfiguration neu zu laden, führe die folgenden Befehle aus:
sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service sudo systemctl daemon-reload
-
Führe die folgenden Befehle aus, um dem neuen Benutzer Berechtigungen für die erforderlichen Verzeichnisse zu erteilen:
sudo chown ec2-user:ec2-user -R /opt/codedeploy-agent/ sudo chown ec2-user:ec2-user -R /var/log/aws/
Hinweis: Ersetze ec2-user durch den Benutzernamen, mit dem der CodeDeploy-Host-Agent ausgeführt werden soll.
-
Führe den folgenden Befehl aus, um den CodeDeploy-Agent zu starten:
sudo service codedeploy-agent start
-
Führe den folgenden Befehl aus, um zu bestätigen, dass deine Konfigurationsdatei aktualisiert wurde:
sudo service codedeploy-agent status
Beispielausgabe:
The AWS CodeDeploy agent is running as PID ####
-
Um zu überprüfen, welche Prozesse ausgeführt werden und welcher Benutzer die Prozesse ausführt, führe den folgenden Befehl aus:
ps aux | grep codedeploy-agent
Eine Startkonfigurationsvorlage und eine AWS Auto-Scaling-Gruppe erstellen, um den Prozess der Benutzeränderung zu automatisieren
Führe die folgenden Schritte aus:
-
Öffne die Amazon-EC2-Konsole.
-
Wähle im Navigationsbereich Startkonfigurationen aus.
-
Wähle Startkonfiguration erstellen aus.
-
Wähle das Amazon Linux AMI aus.
-
Wähle Weiter: Details konfigurieren aus.
-
Wähle für die IAM-Rolle eine vorkonfigurierte AWS Identity and Access Management (IAM)-Rolle aus. Die Rolle muss deiner Instance die Berechtigung gewähren, auf Amazon Simple Storage Service (Amazon S3)-Ressourcen zuzugreifen.
-
Wähle Erweiterte Details aus.
-
Gib im Abschnitt Benutzerdaten der Konfigurationsdatei des Agent die Befehle zur Installation des CodeDeploy-Agent ein. Aktualisiere dann die Datei, um einen bestimmten Benutzer zu verwenden.
Verwende für IMDSv1 das folgende Skript:#!/bin/bash REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//') yum -y update yum install ruby wget -y cd /home/ec2-user wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install chmod +x ./install ./install auto service codedeploy-agent stop #adduser username <--- this is only required if you use a username that does not already exist sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service systemctl daemon-reload chown ec2-user:ec2-user -R /opt/codedeploy-agent/ chown ec2-user:ec2-user -R /var/log/aws/ service codedeploy-agent start
Verwende für IMDSv2 das folgende Skript:
#!/bin/bash TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` REGION=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//') yum -y update yum install ruby wget -y cd /home/ec2-user wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install chmod +x ./install ./install auto service codedeploy-agent stop #adduser username <--- this is only required if you use a username that does not already exist sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service systemctl daemon-reload chown ec2-user:ec2-user -R /opt/codedeploy-agent/ chown ec2-user:ec2-user -R /var/log/aws/ service codedeploy-agent start
Hinweis: Ersetze ec2-user durch den Benutzernamen, mit dem der CodeDeploy-Host-Agent ausgeführt werden soll. Der vorangehende Beispielcode wird automatisch ausgeführt, wenn du eine neue Instance startest, die die definierte Startkonfiguration verwendet.
-
Führe die restlichen Schritte im Launch Wizard aus. Wähle dann Startkonfiguration erstellen aus.
-
Wähle Mit dieser Startkonfiguration eine AWS Auto-Scaling-Gruppe erstellen aus.
-
Gib unter Gruppenname einen Namen für deine Auto-Scaling-Gruppe ein.
-
Gib für Subnetz ein Subnetz ein, das deiner Instance den Zugriff auf das Internet ermöglicht.
-
Wähle Weiter: Skalierungsrichtlinien konfigurieren und dann eine Richtlinie aus.
-
Führe die restlichen Schritte des Startassistenten aus und wähle dann AWS Auto-Scaling-Gruppe erstellen aus.
Überprüfen, ob der CodeDeploy-Agent installiert ist und mit dem richtigen Benutzer auf einer neuen Instance ausgeführt wird
Zunächst musst du sicherstellen, dass deine Instance ausgeführt wird. Führe danach die folgenden Schritte aus:
- Verwende SSH, um eine Verbindung zu deiner Instance herzustellen.
- Um zu überprüfen, ob der CodeDeploy-Agent auf der Instance ausgeführt wird, führe den folgenden Befehl aus:
Wenn der Befehl einen Fehler zurückgibt, hast du den CodeDeploy-Agent nicht installiert. Installiere den CodeDeploy-Agent.sudo service codedeploy-agent status
- Um zu überprüfen, ob der CodeDeploy-Agent mit dem richtigen Benutzernamen ausgeführt wird, führe den folgenden Befehl aus:
Beispielausgabe:ps aux | grep codedeploy-agent
The AWS CodeDeploy agent is running as PID ####
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren