Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Autorizzazioni per Beanstalk Cluster
Un ambiente Beanstalk Cluster non utilizza il profilo di istanza Amazon Elastic Compute Cloud (Amazon EC2) di Beanstalk Standard. Fornisci i ruoli IAM richiesti da Amazon EKS per il cluster e i nodi e il ruolo utilizzato da Elastic Beanstalk per pubblicare le metriche, i log e le tracce dell'ambiente. Facoltativamente, puoi fornire un ruolo applicativo per l'applicazione in esecuzione. Elastic Beanstalk utilizza un ruolo collegato ai servizi per il proprio funzionamento dell'ambiente.
Ruoli che fornisci
Un ambiente Beanstalk Cluster utilizza un ruolo del cluster, un ruolo di nodo e un ruolo di osservabilità. Quando crei un ambiente nella console Elastic Beanstalk e accetti le impostazioni predefinite di accesso al servizio, la console le crea tutte e tre per te, inserendo i nomi quando non sono già presenti nel Nome, servizio affidabile e autorizzazioni per ogni ruolo tuo account:
-
Ruolo del cluster: Amazon EKS assume questo ruolo per il cluster creato da Elastic Beanstalk. Passa il relativo ARN nell'impostazione del
cluster-rolenamespace.aws:elasticbeanstalk:eks -
Ruolo del nodo: i nodi Amazon EC2 del cluster assumono questo ruolo, che deve consentire loro di estrarre le immagini delle applicazioni da Amazon ECR. Passa il relativo ARN nell'
node-roleimpostazione del namespace.aws:elasticbeanstalk:eks -
Ruolo di osservabilità: i componenti che pubblicano le metriche, i log e le tracce dell'ambiente assumono questo ruolo tramite Amazon EKS Pod Identity. Passa il relativo ARN nell'
observability-roleimpostazione del namespace.aws:elasticbeanstalk:eks:environment
Se crei questi ruoli all'esterno della console Elastic Beanstalk, ti consigliamo vivamente di crearli esattamente come specificato in. Nome, servizio affidabile e autorizzazioni per ogni ruolo Quindi, quando crei un ambiente, passa ogni ruolo ARN nella relativa opzione di configurazione. Per un esempio funzionante, vediGuida introduttiva a Beanstalk Cluster.
Se fornisci una fonte per Elastic Beanstalk da inserire in un'immagine del contenitore, fornisci anche un ruolo di creazione dell'immagine. AWS CodeBuild presuppone che esegua la build nel tuo account. Questo ruolo appartiene alla build della versione dell'applicazione anziché all'ambiente in esecuzione. Consulta Creazione di immagini di container per ambienti Beanstalk Cluster.
È inoltre possibile fornire un ruolo applicativo opzionale, che l'applicazione in esecuzione utilizza per chiamare i servizi. AWS Consulta Autorizzazioni dell'applicazione.
Importante
Utilizzate i nomi dei ruoli nella tabella seguente. La console seleziona i ruoli esistenti per nome, quindi non seleziona un ruolo che hai creato con un nome diverso e devi scegliere quel ruolo tu stesso. I nomi sono importanti anche per il riutilizzo del cluster: Elastic Beanstalk registra i ruoli del cluster, del nodo e dell'osservabilità nel cluster che crea e un ambiente successivo sullo stesso set di sottoreti deve fornire gli stessi tre ruoli. Elastic Beanstalk rifiuta un ambiente i cui ruoli sono diversi, anziché collocarlo su un altro cluster. Consulta Raggruppamento degli ambienti.
Ogni ruolo si fida di un servizio diverso e dispone delle proprie autorizzazioni:
| Ruolo | Nome ruolo | Servizio affidabile | AWS politiche gestite |
|---|---|---|---|
| Ruolo del cluster | aws-elasticbeanstalk-eks-cluster-role |
eks.amazonaws.com |
AmazonEKSClusterPolicy, AmazonEKSNetworkingPolicy,
AmazonEKSComputePolicy, AmazonEKSBlockStoragePolicy,
AmazonEKSLoadBalancingPolicy, AWSElasticBeanstalkEKSTagging |
| ruolo del nodo | aws-elasticbeanstalk-eks-node-role |
ec2.amazonaws.com |
AmazonEKSWorkerNodeMinimalPolicy,
AmazonEC2ContainerRegistryPullOnly,
AmazonSSMManagedInstanceCore |
| Ruolo di osservabilità | aws-elasticbeanstalk-eks-observability-role |
pods.eks.amazonaws.com |
CloudWatchAgentServerPolicy,
AWSElasticBeanstalkEKSObservability |
| Ruolo di creazione dell'immagine | aws-elasticbeanstalk-eks-image-build-role |
codebuild.amazonaws.com |
AWSElasticBeanstalkEKSImageBuild |
| Ruolo dell'applicazione (opzionale) | Scegli il nome | pods.eks.amazonaws.com |
Nessuna. Concedi solo le autorizzazioni necessarie alla tua applicazione. Consulta Configura un ruolo dell'applicazione. |
Per fornire i ruoli del cluster, del nodo e dell'osservabilità
-
Se crei il tuo ambiente nella console Elastic Beanstalk, non devi preparare nulla. La console cerca i tre ruoli per nome, utilizzando i nomi nella tabella precedente, li seleziona quando sono già presenti nel tuo account e li crea quando non esistono. Corrisponde solo al nome del ruolo, non all'ARN completo e, poiché i nomi dei ruoli IAM sono univoci all'interno di un account, il percorso in cui si trova un ruolo non influisce sulla corrispondenza.
-
Se usi AWS CLI o l'API, crea prima i tre ruoli. Nessuno dei due client li crea per te. Assegna a ciascun ruolo il nome e il servizio affidabile nella tabella precedente e allega le politiche elencate. I ruoli devono essere nello stesso AWS account dell'ambiente.
-
Fornisci tutti e tre gli ARN nelle
observability-roleimpostazionicluster-rolenode-role, e quando crei l'ambiente. Fornisci il ruolo di osservabilità in modo esplicito anziché affidarti a un valore predefinito, in modo che ogni ambiente di un set di sottoreti registri gli stessi ruoli. -
Se l'applicazione chiama AWS servizi, configura il ruolo opzionale dell'applicazione come descritto in. Configura un ruolo dell'applicazione
Il set di sottoreti da solo seleziona il cluster, quindi utilizza un set di sottoreti diverso quando hai bisogno di un cluster separato con ruoli di infrastruttura diversi. Non è possibile modificare le sottoreti o i ruoli di cluster, nodo e osservabilità di un ambiente Beanstalk Cluster esistente. Consulta Raggruppamento degli ambienti. Il ruolo opzionale dell'applicazione è specifico di un ambiente e può differire da un ambiente all'altro; vedere. Configura un ruolo dell'applicazione
Autorizzazioni per creare l'ambiente
Poiché si affidano questi ruoli a Elastic Beanstalk, il responsabile che crea l'ambiente necessita dell'autorizzazione per trasferirli. Elastic Beanstalk lo verifica prima di fornire qualcosa, quindi concedi quanto segue a quel responsabile:
-
iam:GetRoleeiam:PassRoleper ogni ruolo che passi: i ruoli del cluster, del nodo e dell'osservabilità, nonché il ruolo dell'applicazione e il ruolo di creazione dell'immagine, se li usi. Ambitoiam:PassRolecon la chiaveiam:PassedToServicecondizionale. I suoi valori sono i servizi che ricevono i ruoli:eks.amazonaws.com.rproxy.govskope.caper il ruolo del cluster,ec2.amazonaws.com.rproxy.govskope.caper il ruolo del nodo,pods---eks.amazonaws.com.rproxy.govskope.caper i ruoli di osservabilità e applicazione,codebuild.amazonaws.com.rproxy.govskope.caper il ruolo di creazione dell'immagine eelasticbeanstalk.amazonaws.com.rproxy.govskope.caperché Elastic Beanstalk trasferisce questi ruoli per tuo conto. -
iam:CreateServiceLinkedRole, di cui ha bisogno il primo ambiente Beanstalk Cluster in un account per consentire a Elastic Beanstalk e Amazon EKS di creare i propri ruoli collegati ai servizi. Definiscilo con la chiave condizionale, i cui valori sono e.iam:AWSServiceNameelasticbeanstalk.amazonaws.com.rproxy.govskope.caeks.amazonaws.com
La seguente politica garantisce tutto questo. Sostituisci l'ID dell'account con il tuo, usa il nome del ruolo dell'applicazione e rimuovi qualsiasi ruolo che non superi. I nomi dei ruoli mostrati sono quelli della tabella precedente, che la console crea e seleziona.
A differenza della console, che seleziona un ruolo in base al nome, una policy corrisponde a un ruolo in base al suo ARN completo, quindi ogni Resource voce deve includere il percorso IAM del ruolo. I ruoli creati dalla console si trovano a/service-role/, come mostrato qui. Se hai creato un ruolo in un altro modo, potrebbe non avere alcun percorso, nel qual caso è arn:aws:iam:: il suo ARN. Per leggere l'ARN di un ruolo, esegui. 111122223333: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:GetRoleè in una propria dichiarazione perché la chiave di iam:PassedToService condizione esiste solo in una PassRole richiesta. Applicarlo iam:GetRole nella stessa dichiarazione impedirebbe affatto che tale autorizzazione venga concessa.
Questa politica riguarda solo il passaggio dei ruoli. Non garantisce le azioni di Elastic Beanstalk richieste dalla creazione di un'applicazione e di un ambiente.
Senza queste autorizzazioni, CreateEnvironment fallisce con un AccessDenied errore nel nominare l'azione che non è stato in grado di eseguire. Per ulteriori informazioni, consulta Concedere un'autorizzazione principale per passare un ruolo a un AWS servizio e. CreateEnvironment
Ruoli gestiti da Elastic Beanstalk
Elastic Beanstalk gestisce un ambiente Beanstalk Cluster tramite il ruolo collegato ai AWSServiceRoleForElasticBeanstalk servizi, che crea nel tuo account. Questo ruolo non viene creato, configurato o trasferito. Amazon EKS utilizza allo stesso modo il proprio ruolo collegato al servizio,. AWSServiceRoleForAmazonEKS Per sapere come Elastic Beanstalk utilizza i ruoli collegati ai servizi, consulta. Utilizzo dei ruoli collegati ai servizi per Elastic Beanstalk
Conferma i ruoli utilizzati dall'ambiente
Dopo che l'ambiente ha raggiunto lo Ready stato, leggi la sua configurazione risolta:
$ 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
Verifica che le voci del cluster, del nodo e del ruolo di osservabilità contengano gli ARN forniti durante la creazione. Se l'ambiente utilizza un ruolo applicativo, esegui il check-in dell'identità delle credenziali Configura un ruolo dell'applicazione e conferma che l'ARN restituito identifichi il ruolo selezionato. Per una versione dell'applicazione basata sui sorgenti, attendi che la versione venga segnalataPROCESSED; tale stato conferma che AWS CodeBuild potrebbe utilizzare il ruolo di compilazione e completare la creazione dell'immagine. Consulta Creazione di immagini di container per ambienti Beanstalk Cluster.
Autorizzazioni dell'applicazione
Utilizzate un ruolo dell'applicazione quando l'applicazione in esecuzione deve chiamare AWS i servizi. Configura il ruolo prima di creare l'ambiente e concedi solo le autorizzazioni richieste dall'applicazione. L'applicazione riceve il ruolo tramite Amazon EKS Pod Identity anziché tramite un profilo di istanza Amazon EC2.
Passa l'ARN del ruolo nell'application-roleimpostazione del aws:elasticbeanstalk:eks:environment namespace o seleziona il ruolo nella console Elastic Beanstalk quando crei l'ambiente.
Il ruolo dell'applicazione è anche il ruolo che legge le credenziali per un backend di osservabilità di terze parti. Se imposti un backend di osservabilità secretsmanager:DescribeSecret sucustom, concedi il ruolo dell'applicazione secretsmanager:GetSecretValue e il segreto di Secrets Manager denominato da. custom-credentials Consulta Invio di dati di osservabilità a un backend di terze parti.
Configura un ruolo dell'applicazione
Crea il ruolo dell'applicazione prima di creare l'ambiente. Assegna al ruolo solo le azioni e le risorse richieste dall'applicazione. Configura la sua politica di fiducia per Amazon EKS Pod Identity, includendo sts:AssumeRole e sts:TagSession per il principale del pods.eks.amazonaws.com servizio:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
-
Crea il ruolo con la precedente politica di fiducia.
-
Allega una policy basata sull'identità che conceda solo le azioni e le risorse di servizio richieste dall'applicazione.
-
Nella console Elastic Beanstalk, avvia il flusso di lavoro di creazione dell'ambiente ed espandi l'accesso al servizio.
-
Scegli il ruolo in Ruolo dell'applicazione - opzionale. Completa la configurazione dell'ambiente rimanente, quindi crea l'ambiente.
Con AWS CLI o l'API, scegli il ruolo aggiungendo invece l'
application-roleopzione alla tuacreate-environmentrichiesta:--option-settings \ Namespace=aws:elasticbeanstalk:eks:environment,OptionName=application-role,Value=arn:aws:iam::111122223333:role/my-application-role -
Dopo aver distribuito l'applicazione, richiama il AWS servizio richiesto dall'applicazione. Per verificare l'identità delle credenziali indipendentemente dalla politica del servizio, chiama AWS STS
GetCallerIdentitye conferma che l'ARN restituito identifichi il ruolo dell'applicazione selezionato.
Se l'applicazione riceveAccessDenied, verifica di aver selezionato il ruolo previsto durante la creazione dell'ambiente, che la sua politica di fiducia consenta Amazon EKS Pod Identity e che la sua politica basata sull'identità consenta l'azione e la risorsa richieste. Correggi la politica di attendibilità o autorizzazioni e ripeti sia il controllo dell'identità delle credenziali che la chiamata al servizio dell'applicazione. Se è stato selezionato il ruolo sbagliato, create un ambiente sostitutivo con il ruolo desiderato invece di aggiungere le autorizzazioni dell'applicazione al ruolo sbagliato. Utilizzate ruoli applicativi separati quando gli ambienti richiedono accessi diversi. Non concedere autorizzazioni applicative al ruolo del cluster o del nodo.
Diagnostica gli errori dei ruoli
Inizia con gli eventi Elastic Beanstalk per l'ambiente. Imposta operation_start il timestamp registrato immediatamente prima della richiesta non riuscita:
$ 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
- La creazione dell'ambiente rifiuta un ruolo di infrastruttura
-
Verifica che il ruolo sia nell'account di ambiente, che la politica di fiducia e le politiche allegate corrispondano alle attuali linee guida di Amazon EKS Auto Mode e che il relativo ARN sia completo. Se il set di sottorete richiesto ha già un cluster registrato, utilizza i ruoli del cluster e del nodo registrati. L'errore di operazione identifica valori richiesti e registrati in conflitto. Correggi la richiesta e crea nuovamente l'ambiente. Non è possibile sostituire questi ruoli in un ambiente esistente.
- L'immagine dell'applicazione non può essere recuperata
-
Verifica che il ruolo del nodo disponga delle autorizzazioni di recupero e della politica di fiducia documentate di Amazon ECR. Verifica anche l'URI dell'immagine e qualsiasi politica di repository che limiti l'accesso. Correggi il ruolo o la politica del repository, quindi distribuisci nuovamente la versione dell'applicazione.
- Una fonte crea report
FAILED -
Verifica il ruolo di compilazione nella configurazione di compilazione della versione dell'applicazione e controlla la diagnostica della build. Correggi la politica di attendibilità o di autorizzazione del ruolo prima di creare una nuova versione dell'applicazione. Consulta Creazione di immagini di container per ambienti Beanstalk Cluster.
- L'applicazione in esecuzione riceve
AccessDenied -
Utilizza i check-in relativi al ruolo dell'applicazione. Configura un ruolo dell'applicazione Conferma prima l'identità delle credenziali, quindi confronta l'azione e la risorsa negate nei registri e negli CloudTrail eventi dell'applicazione con la politica del ruolo.