Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Berechtigungen für Beanstalk Cluster
Eine Beanstalk-Cluster-Umgebung verwendet nicht das Amazon Elastic Compute Cloud (Amazon EC2) -Instanzprofil von Beanstalk Standard. Sie geben die IAM-Rollen an, die Amazon EKS für seine Cluster und Knoten benötigt, und die Rolle, die Elastic Beanstalk verwendet, um die Metriken, Protokolle und Traces der Umgebung zu veröffentlichen. Sie können optional eine Anwendungsrolle für die laufende Anwendung angeben. Elastic Beanstalk verwendet eine dienstgebundene Rolle für den eigenen Betrieb der Umgebung.
Rollen, die Sie bereitstellen
Eine Beanstalk Cluster-Umgebung verwendet eine Clusterrolle, eine Knotenrolle und eine Observability-Rolle. Wenn Sie in der Elastic Beanstalk-Konsole eine Umgebung erstellen und die Standardeinstellungen für den Servicezugriff akzeptieren, erstellt die Konsole alle drei Einstellungen für Sie, mit den Namen inName, vertrauenswürdiger Dienst und Berechtigungen für jede Rolle, sofern sie nicht bereits in Ihrem Konto vorhanden sind:
-
Cluster-Rolle — Amazon EKS übernimmt diese Rolle für den Cluster, den Elastic Beanstalk erstellt. Übergeben Sie seinen ARN in der
cluster-roleEinstellung des Namespaces.aws:elasticbeanstalk:eks -
Knotenrolle — Die Amazon EC2-Knoten des Clusters übernehmen diese Rolle, sodass sie Anwendungsbilder aus Amazon ECR abrufen können. Übergeben Sie seinen ARN in der
node-roleEinstellung des Namespaces.aws:elasticbeanstalk:eks -
Rolle der Beobachtbarkeit — Die Komponenten, die die Metriken, Protokolle und Traces der Umgebung veröffentlichen, übernehmen diese Rolle über Amazon EKS Pod Identity. Übergeben Sie seinen ARN in der
observability-roleEinstellung desaws:elasticbeanstalk:eks:environmentNamespaces.
Wenn Sie diese Rollen außerhalb der Elastic Beanstalk-Konsole erstellen, empfehlen wir Ihnen dringend, sie genau wie unter angegeben zu erstellen. Name, vertrauenswürdiger Dienst und Berechtigungen für jede Rolle Wenn Sie dann eine Umgebung erstellen, übergeben Sie den ARN jeder Rolle in ihrer Konfigurationsoption. Ein funktionierendes Beispiel finden Sie unterErste Schritte mit Beanstalk Cluster.
Wenn Sie die Quelle angeben, die Elastic Beanstalk in ein Container-Image integrieren soll, geben Sie auch eine Image-Build-Rolle an. AWS CodeBuild geht davon aus, dass der Build in Ihrem Konto ausgeführt wird. Diese Rolle gehört eher zum Build der Anwendungsversion als zur laufenden Umgebung. Siehe Erstellen von Container-Images für Beanstalk Cluster-Umgebungen.
Sie können auch eine optionale Anwendungsrolle angeben, die Ihre laufende Anwendung zum Aufrufen AWS von Diensten verwendet. Siehe Berechtigungen für die Anwendung.
Wichtig
Verwenden Sie die Rollennamen in der folgenden Tabelle. Die Konsole wählt vorhandene Rollen nach Namen aus, sodass keine Rolle ausgewählt wird, die Sie unter einem anderen Namen erstellt haben, und Sie müssen diese Rolle selbst auswählen. Namen spielen auch bei der Wiederverwendung von Clustern eine Rolle: Elastic Beanstalk registriert die Cluster-, Knoten- und Observability-Rollen bei dem Cluster, das es erstellt, und eine spätere Umgebung in derselben Subnetzgruppe muss dieselben drei Rollen bereitstellen. Elastic Beanstalk lehnt eine Umgebung ab, deren Rollen sich unterscheiden, und platziert sie nicht in einem anderen Cluster. Siehe Gruppierung der Umgebung.
Jede Rolle vertraut einem anderen Dienst und hat ihre eigenen Berechtigungen:
| Rolle | Rollenname | Vertrauenswürdiger Dienst | AWS verwaltete Richtlinien |
|---|---|---|---|
| Cluster--Rolle | aws-elasticbeanstalk-eks-cluster-role |
eks.amazonaws.com |
AmazonEKSClusterPolicy, AmazonEKSNetworkingPolicy,
AmazonEKSComputePolicy, AmazonEKSBlockStoragePolicy,
AmazonEKSLoadBalancingPolicy, AWSElasticBeanstalkEKSTagging |
| Rolle des Knotens | aws-elasticbeanstalk-eks-node-role |
ec2.amazonaws.com |
AmazonEKSWorkerNodeMinimalPolicy,
AmazonEC2ContainerRegistryPullOnly,
AmazonSSMManagedInstanceCore |
| Rolle der Beobachtbarkeit | aws-elasticbeanstalk-eks-observability-role |
pods.eks.amazonaws.com |
CloudWatchAgentServerPolicy,
AWSElasticBeanstalkEKSObservability |
| Rolle beim Erstellen von Images | aws-elasticbeanstalk-eks-image-build-role |
codebuild.amazonaws.com |
AWSElasticBeanstalkEKSImageBuild |
| Anwendungsrolle (optional) | Sie wählen den Namen | pods.eks.amazonaws.com |
Keine. Sie gewähren nur die Berechtigungen, die Ihre Anwendung benötigt. Siehe Konfigurieren Sie eine Anwendungsrolle. |
Um die Cluster-, Knoten- und Observability-Rollen bereitzustellen
-
Wenn Sie Ihre Umgebung in der Elastic Beanstalk-Konsole erstellen, müssen Sie nichts vorbereiten. Die Konsole sucht anhand des Namens nach den drei Rollen und verwendet dabei die Namen in der vorherigen Tabelle. Sie wählt sie aus, wenn sie bereits in Ihrem Konto vorhanden sind, und erstellt sie, wenn sie nicht vorhanden sind. Die Übereinstimmung erfolgt nur anhand des Rollennamens, nicht anhand des vollständigen ARN, und da IAM-Rollennamen innerhalb eines Kontos eindeutig sind, hat der Pfad, auf dem sich eine Rolle befindet, keinen Einfluss auf die Übereinstimmung.
-
Wenn Sie die AWS CLI oder die API verwenden, erstellen Sie zuerst die drei Rollen. Keiner der Kunden erstellt sie für Sie. Geben Sie jeder Rolle den Namen und den vertrauenswürdigen Dienst aus der obigen Tabelle und fügen Sie die aufgelisteten Richtlinien hinzu. Die Rollen müssen sich im selben AWS Konto wie die Umgebung befinden.
-
Geben Sie beim Erstellen der
cluster-roleUmgebung alle drei ARNs in denobservability-roleEinstellungennode-role, und an. Geben Sie die Observability-Rolle explizit an, anstatt sich auf eine Standardeinstellung zu verlassen, sodass jede Umgebung in einer Subnetzgruppe dieselben Rollen registriert. -
Wenn Ihre Anwendung AWS Dienste aufruft, konfigurieren Sie die optionale Anwendungsrolle wie unter beschrieben. Konfigurieren Sie eine Anwendungsrolle
Die Subnetzgruppe allein wählt den Cluster aus. Verwenden Sie daher eine andere Subnetzgruppe, wenn Sie einen separaten Cluster mit unterschiedlichen Infrastrukturrollen benötigen. Sie können die Subnetze oder die Cluster-, Knoten- und Observability-Rollen einer vorhandenen Beanstalk-Cluster-Umgebung nicht ändern. Siehe Gruppierung der Umgebung. Die optionale Anwendungsrolle ist umgebungsspezifisch und kann je nach Umgebung unterschiedlich sein; siehe. Konfigurieren Sie eine Anwendungsrolle
Berechtigungen zum Erstellen der Umgebung
Da Sie diese Rollen an Elastic Beanstalk übergeben, benötigt der Principal, der die Umgebung erstellt, die Erlaubnis, sie zu vergeben. Elastic Beanstalk überprüft dies, bevor es etwas bereitstellt. Erteilen Sie diesem Principal also Folgendes:
-
iam:GetRoleundiam:PassRolefür jede Rolle, die Sie übergeben: die Cluster-, Knoten- und Observability-Rollen sowie die Anwendungsrolle und die Image-Build-Rolle, falls Sie sie verwenden. Umfangiam:PassRolemit demiam:PassedToServiceBedingungsschlüssel. Seine Werte sind die Dienste, die die Rollen erhalten:eks.amazonaws.com.rproxy.govskope.cafür die Cluster-Rolle,ec2.amazonaws.com.rproxy.govskope.cafür die Node-Rolle,pods---eks.amazonaws.com.rproxy.govskope.cafür die Observability- und Anwendungsrollen,codebuild.amazonaws.com.rproxy.govskope.cafür die Image-Build-Rolle undelasticbeanstalk.amazonaws.com.rproxy.govskope.caweil Elastic Beanstalk diese Rollen in Ihrem Namen weitergibt. -
iam:CreateServiceLinkedRole, die die erste Beanstalk-Cluster-Umgebung in einem Konto benötigt, damit Elastic Beanstalk und Amazon EKS ihre serviceverknüpften Rollen erstellen können. Verwenden Sie deniam:AWSServiceNameBedingungsschlüssel, dessen Werte und sind.elasticbeanstalk.amazonaws.com.rproxy.govskope.caeks.amazonaws.com
Die folgende Richtlinie gewährt all dies. Ersetzen Sie die Konto-ID durch Ihre eigene, verwenden Sie den Namen Ihrer Anwendungsrolle und entfernen Sie alle Rollen, die Sie nicht bestehen. Die angezeigten Rollennamen sind die in der vorherigen Tabelle, die von der Konsole erstellt und ausgewählt wird.
Im Gegensatz zur Konsole, die eine Rolle anhand des Namens auswählt, ordnet eine Richtlinie einer Rolle ihren vollständigen ARN zu, sodass jeder Resource Eintrag den IAM-Pfad der Rolle enthalten muss. Die Rollen, die die Konsole erstellt, befinden sich/service-role/, wie hier gezeigt. Wenn Sie eine Rolle auf andere Weise erstellt haben, hat sie möglicherweise keinen Pfad. In diesem Fall lautet ihr ARNarn:aws:iam::. Um den ARN einer Rolle zu lesen, führen Sie den Befehl aus111122223333:role/role-nameaws iam get-role --role-name
.role-name --query Role.Arn --output text
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InspectTheRoles", "Effect": "Allow", "Action": "iam:GetRole", "Resource": [ "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-cluster-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-node-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-observability-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-image-build-role", "arn:aws:iam::111122223333:role/my-application-role" ] }, { "Sid": "PassTheRolesToBeanstalk", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-cluster-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-node-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-observability-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-image-build-role", "arn:aws:iam::111122223333:role/my-application-role" ], "Condition": { "StringEquals": { "iam:PassedToService": [ "eks.amazonaws.com", "ec2.amazonaws.com", "pods.eks.amazonaws.com", "codebuild.amazonaws.com", "elasticbeanstalk.amazonaws.com" ] } } }, { "Sid": "CreateServiceLinkedRolesOnFirstEnvironment", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::111122223333:role/aws-service-role/*", "Condition": { "StringEquals": { "iam:AWSServiceName": [ "elasticbeanstalk.amazonaws.com", "eks.amazonaws.com" ] } } } ] }
iam:GetRolebefindet sich in einer eigenen Anweisung, da der iam:PassedToService Bedingungsschlüssel nur in einer PassRole Anforderung existiert. Wenn Sie ihn iam:GetRole in derselben Anweisung anwenden, würde dies verhindern, dass diese Genehmigung überhaupt erteilt wird.
Diese Richtlinie bezieht sich nur auf die Weitergabe der Rollen. Sie gewährt nicht die Elastic Beanstalk-Aktionen, die für die Erstellung einer Anwendung und einer Umgebung erforderlich sind.
Ohne diese Berechtigungen schlägt es CreateEnvironment fehl und es wird ein AccessDenied Fehler angezeigt, der die Aktion benennt, die nicht ausgeführt werden konnte. Weitere Informationen finden Sie unter Erteilen der Berechtigung eines Hauptbenutzers, eine Rolle an einen AWS Dienst zu übergeben, und CreateEnvironment.
Rollen, die Elastic Beanstalk verwaltet
Elastic Beanstalk betreibt eine Beanstalk-Cluster-Umgebung über die AWSServiceRoleForElasticBeanstalk serviceverknüpfte Rolle, die es in Ihrem Konto erstellt. Sie erstellen, konfigurieren oder übergeben diese Rolle nicht. Amazon EKS verwendet ebenfalls seine eigene serviceverknüpfte Rolle,AWSServiceRoleForAmazonEKS. Informationen darüber, wie Elastic Beanstalk serviceverknüpfte Rollen verwendet, finden Sie unter. Servicegebundene Rollen für Elastic Beanstalk verwenden
Bestätigen Sie die Rollen, die in der Umgebung verwendet werden
Wenn die Umgebung den Ready Status erreicht hat, lesen Sie die aufgelöste Konfiguration:
$ aws elasticbeanstalk describe-configuration-settings \
--application-name my-app \
--environment-name my-cluster-env \
--query "ConfigurationSettings[0].OptionSettings[?OptionName=='cluster-role' || OptionName=='node-role' || OptionName=='observability-role'].[Namespace,OptionName,Value]" \
--output table
Vergewissern Sie sich, dass die Cluster-, Knoten- und Observability-Rolleneinträge die bei der Erstellung angegebenen ARNs enthalten. Wenn die Umgebung eine Anwendungsrolle verwendet, führen Sie die Überprüfung der Anmeldeinformationen durch Konfigurieren Sie eine Anwendungsrolle und stellen Sie sicher, dass der zurückgegebene ARN die ausgewählte Rolle identifiziert. Warten Sie bei einer quellenbasierten Anwendungsversion, bis die Version gemeldet wird. Dieser Status bestätigtPROCESSED, dass die Build-Rolle verwendet und der AWS CodeBuild Image-Build abgeschlossen werden kann. Siehe Erstellen von Container-Images für Beanstalk Cluster-Umgebungen.
Berechtigungen für die Anwendung
Verwenden Sie eine Anwendungsrolle, wenn die ausgeführte Anwendung AWS Dienste aufrufen muss. Konfigurieren Sie die Rolle, bevor Sie die Umgebung erstellen, und gewähren Sie nur die für die Anwendung erforderlichen Berechtigungen. Die Anwendung erhält die Rolle über Amazon EKS Pod Identity und nicht über ein Amazon EC2-Instance-Profil.
Übergeben Sie den ARN der Rolle in der application-role Einstellung des aws:elasticbeanstalk:eks:environment Namespaces, oder wählen Sie die Rolle in der Elastic Beanstalk-Konsole aus, wenn Sie die Umgebung erstellen.
Die Anwendungsrolle ist auch die Rolle, die die Anmeldeinformationen für ein Observability-Backend eines Drittanbieters liest. Wenn Sie ein Observability-Backend auf setzencustom, weisen Sie der Anwendung die Rolle secretsmanager:GetSecretValue und das Secrets Manager-Geheimnis mit secretsmanager:DescribeSecret dem Namen von zu. custom-credentials Siehe Senden von Observability-Daten an ein Backend eines Drittanbieters.
Konfigurieren Sie eine Anwendungsrolle
Erstellen Sie die Anwendungsrolle, bevor Sie die Umgebung erstellen. Gewähren Sie der Rolle nur die Aktionen und Ressourcen, die die Anwendung benötigt. Konfigurieren Sie die Vertrauensrichtlinie für Amazon EKS Pod Identity, einschließlich sts:AssumeRole und sts:TagSession für den pods.eks.amazonaws.com Service Principal:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
-
Erstellen Sie die Rolle mit der vorherigen Vertrauensrichtlinie.
-
Fügen Sie eine identitätsbasierte Richtlinie hinzu, die nur die Dienstaktionen und Ressourcen gewährt, die von der Anwendung benötigt werden.
-
Starten Sie in der Elastic Beanstalk-Konsole den Workflow zur Umgebungserstellung und erweitern Sie den Servicezugriff.
-
Wählen Sie die Rolle unter Anwendungsrolle — optional aus. Vervollständigen Sie die verbleibende Umgebungskonfiguration und erstellen Sie dann die Umgebung.
Wählen Sie mit der AWS CLI oder der API die Rolle aus, indem Sie stattdessen die
application-roleOption zu Ihrercreate-environmentAnfrage hinzufügen:--option-settings \ Namespace=aws:elasticbeanstalk:eks:environment,OptionName=application-role,Value=arn:aws:iam::111122223333:role/my-application-role -
Rufen Sie nach der Bereitstellung der Anwendung den erforderlichen AWS Dienst von der Anwendung aus auf. Um die Identität der Anmeldeinformationen unabhängig von der Dienstrichtlinie zu überprüfen, rufen Sie auf AWS STS
GetCallerIdentityund bestätigen Sie, dass der zurückgegebene ARN die ausgewählte Anwendungsrolle identifiziert.
Wenn die Anwendung sie empfängtAccessDenied, stellen Sie sicher, dass Sie bei der Erstellung der Umgebung die gewünschte Rolle ausgewählt haben, dass die Vertrauensrichtlinie Amazon EKS Pod Identity zulässt und dass die identitätsbasierte Richtlinie die angeforderte Aktion und Ressource zulässt. Korrigieren Sie die Vertrauens- oder Berechtigungsrichtlinie und wiederholen Sie sowohl die Überprüfung der Anmeldeinformationsidentität als auch den Anwendungsdienstaufruf. Wenn die falsche Rolle ausgewählt wurde, erstellen Sie eine Ersatzumgebung mit der gewünschten Rolle, anstatt der falschen Rolle Anwendungsberechtigungen hinzuzufügen. Verwenden Sie separate Anwendungsrollen, wenn Umgebungen unterschiedliche Zugriffsrechte erfordern. Gewähren Sie der Cluster- oder Knotenrolle keine Anwendungsberechtigungen.
Diagnostizieren Sie Rollenfehler
Beginnen Sie mit den Elastic Beanstalk-Ereignissen für die Umgebung. Auf den Zeitstempel setzenoperation_start, der unmittelbar vor der fehlgeschlagenen Anfrage aufgezeichnet wurde:
$ operation_start='timestamp-recorded-before-the-request'
$ aws elasticbeanstalk describe-events \
--environment-name my-cluster-env \
--severity ERROR \
--start-time "$operation_start" \
--max-items 20
- Bei der Erstellung der Umgebung wird eine Infrastrukturrolle abgelehnt
-
Vergewissern Sie sich, dass sich die Rolle im Umgebungskonto befindet, dass die Vertrauensrichtlinie und die zugehörigen Richtlinien den aktuellen Richtlinien für den automatischen Modus von Amazon EKS entsprechen und dass ihr ARN vollständig ist. Wenn die angeforderte Subnetzgruppe bereits über einen registrierten Cluster verfügt, verwenden Sie die zugehörigen Cluster- und Knotenrollen. Der Betriebsfehler identifiziert widersprüchliche angeforderte und registrierte Werte. Korrigieren Sie die Anfrage und erstellen Sie die Umgebung erneut. Sie können diese Rollen in einer vorhandenen Umgebung nicht ersetzen.
- Das Anwendungsabbild kann nicht abgerufen werden
-
Stellen Sie sicher, dass die Node-Rolle über die dokumentierten Amazon ECR-Abrufberechtigungen und die Vertrauensrichtlinie verfügt. Überprüfen Sie auch die Image-URI und alle Repository-Richtlinien, die den Zugriff einschränken. Korrigieren Sie die Rollen- oder Repository-Richtlinie und stellen Sie die Anwendungsversion dann erneut bereit.
- Ein Quell-Build meldet
FAILED -
Überprüfen Sie die Build-Rolle in der Build-Konfiguration der Anwendungsversion und überprüfen Sie die Build-Diagnose. Korrigieren Sie die Vertrauens- oder Berechtigungsrichtlinie für Rollen, bevor Sie eine neue Anwendungsversion erstellen. Siehe Erstellen von Container-Images für Beanstalk Cluster-Umgebungen.
- Die laufende Anwendung erhält
AccessDenied -
Verwenden Sie das Einchecken der Anwendungsrolle. Konfigurieren Sie eine Anwendungsrolle Bestätigen Sie zuerst die Identität der Anmeldeinformationen und vergleichen Sie dann die verweigerte Aktion und Ressource in den Anwendungsprotokollen und im CloudTrail Ereignis mit der Rollenrichtlinie.