Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Permisos para Beanstalk Cluster
Un entorno de Beanstalk Cluster no utiliza el perfil de instancia de Amazon Elastic Compute Cloud (Amazon EC2) de Beanstalk Standard. Usted proporciona las funciones de IAM que Amazon EKS requiere para su clúster y sus nodos, y la función que Elastic Beanstalk utiliza para publicar las métricas, los registros y los seguimientos del entorno. Si lo desea, puede proporcionar un rol de aplicación para la aplicación en ejecución. Elastic Beanstalk usa un rol vinculado a un servicio para su propio funcionamiento del entorno.
Funciones que usted proporciona
Un entorno de Beanstalk Cluster utiliza un rol de clúster, un rol de nodo y un rol de observabilidad. Cuando creas un entorno en la consola de Elastic Beanstalk y aceptas la configuración predeterminada de acceso a los servicios, la consola crea los tres automáticamente, con los nombres escritosNombre, servicio de confianza y permisos para cada rol, cuando aún no existen en tu cuenta:
-
Función de clúster: Amazon EKS asume esta función para el clúster que crea Elastic Beanstalk. Pase su ARN a la
cluster-roleconfiguración del espacio de nombres.aws:elasticbeanstalk:eks -
Función de nodo: los nodos de Amazon EC2 del clúster asumen esta función, que debe permitirles extraer imágenes de aplicaciones de Amazon ECR. Pase su ARN a la
node-roleconfiguración del espacio de nombres.aws:elasticbeanstalk:eks -
Función de observabilidad: los componentes que publican las métricas, los registros y los seguimientos del entorno asumen esta función a través de Amazon EKS Pod Identity. Pase su ARN a la
observability-roleconfiguración del espacio de nombres.aws:elasticbeanstalk:eks:environment
Si crea estos roles fuera de la consola de Elastic Beanstalk, le recomendamos encarecidamente que los cree exactamente como se especifica en. Nombre, servicio de confianza y permisos para cada rol A continuación, cuando cree un entorno, transfiera el ARN de cada rol a su opción de configuración. Para ver un ejemplo práctico, consultePrimeros pasos con Beanstalk Cluster.
Si proporciona una fuente para que Elastic Beanstalk la incorpore en una imagen de contenedor, también proporciona una función de creación de imágenes. AWS CodeBuild lo asume para ejecutar la compilación en tu cuenta. Esta función pertenece a la versión de compilación de la aplicación y no al entorno en ejecución. Consulte Creación de imágenes de contenedores para entornos de Beanstalk Cluster.
También puede proporcionar un rol de aplicación opcional, que la aplicación en ejecución utiliza para llamar AWS a los servicios. Consulte Permisos de aplicación.
importante
Usa los nombres de los roles de la tabla siguiente. La consola selecciona los roles existentes por nombre, por lo que no selecciona un rol que hayas creado con un nombre diferente, sino que tienes que elegir ese rol tú mismo. Los nombres también son importantes a la hora de reutilizar los clústeres: Elastic Beanstalk registra los roles de clúster, nodo y observabilidad en el clúster que crea, y un entorno posterior del mismo conjunto de subredes debe proporcionar los mismos tres roles. Elastic Beanstalk rechaza un entorno cuyas funciones son diferentes, en lugar de colocarlo en otro clúster. Consulte Agrupación de entornos.
Cada rol confía en un servicio diferente y tiene sus propios permisos:
| Rol | Nombre del rol | Servicio de confianza | AWS políticas administradas |
|---|---|---|---|
| Rol de del clúster | aws-elasticbeanstalk-eks-cluster-role |
eks.amazonaws.com |
AmazonEKSClusterPolicy, AmazonEKSNetworkingPolicy,
AmazonEKSComputePolicy, AmazonEKSBlockStoragePolicy,
AmazonEKSLoadBalancingPolicy, AWSElasticBeanstalkEKSTagging |
| Función de nodo | aws-elasticbeanstalk-eks-node-role |
ec2.amazonaws.com |
AmazonEKSWorkerNodeMinimalPolicy,
AmazonEC2ContainerRegistryPullOnly,
AmazonSSMManagedInstanceCore |
| Función de observabilidad | aws-elasticbeanstalk-eks-observability-role |
pods.eks.amazonaws.com |
CloudWatchAgentServerPolicy,
AWSElasticBeanstalkEKSObservability |
| Función de creación de imágenes | aws-elasticbeanstalk-eks-image-build-role |
codebuild.amazonaws.com |
AWSElasticBeanstalkEKSImageBuild |
| Función de aplicación (opcional) | Tú eliges el nombre | pods.eks.amazonaws.com |
Ninguna. Solo concedes los permisos que necesita tu aplicación. Consulte Configura un rol de aplicación. |
Para proporcionar las funciones de clúster, nodo y observabilidad
-
Si crea su entorno en la consola de Elastic Beanstalk, no necesita preparar nada. La consola busca los tres roles por nombre, utilizando los nombres de la tabla anterior, los selecciona cuando ya existen en su cuenta y los crea cuando no existen. Coincide solo en el nombre del rol, no en el ARN completo, y dado que los nombres de los roles de IAM son únicos en una cuenta, la ruta en la que se encuentra un rol no afecta a la coincidencia.
-
Si utiliza la API AWS CLI o la API, cree primero los tres roles. Ninguno de los clientes los crea por ti. Asigne a cada rol el nombre y el servicio de confianza de la tabla anterior y adjunte las políticas enumeradas. Los roles deben estar en la misma AWS cuenta que el entorno.
-
Proporcione los tres ARN en la
cluster-roleobservability-roleconfiguración y al crear el entorno.node-roleProporcione el rol de observabilidad de forma explícita en lugar de confiar en un valor predeterminado, de modo que todos los entornos de un conjunto de subredes registren los mismos roles. -
Si su aplicación llama a AWS servicios, configure el rol de aplicación opcional tal y como se describe en. Configura un rol de aplicación
El conjunto de subredes por sí solo selecciona el clúster, por lo que debe usar un conjunto de subredes diferente cuando necesite un clúster independiente con diferentes funciones de infraestructura. No puede cambiar las subredes ni las funciones de clúster, nodo y observabilidad de un entorno de Beanstalk Cluster existente. Consulte Agrupación de entornos. El rol de aplicación opcional es específico de un entorno y puede diferir de un entorno a otro; consulte. Configura un rol de aplicación
Permisos para crear el entorno
Dado que estas funciones se transfieren a Elastic Beanstalk, el director que crea el entorno necesita permiso para transferirlas. Elastic Beanstalk lo verifica antes de aprovisionar nada, por lo que debe conceder lo siguiente a ese director:
-
iam:GetRoleyiam:PassRoleen cada rol que transfiera: los roles de clúster, nodo y observabilidad, y también el rol de aplicación y el rol de creación de imágenes, si los usa. Alcanceiam:PassRolecon la clave deiam:PassedToServicecondición. Sus valores son los servicios que reciben las funciones:eks.amazonaws.com.rproxy.govskope.capara la función de clúster,ec2.amazonaws.com.rproxy.govskope.capara la función de nodo,pods---eks.amazonaws.com.rproxy.govskope.capara las funciones de observabilidad y aplicación,codebuild.amazonaws.com.rproxy.govskope.capara la función de creación de imágenes yelasticbeanstalk.amazonaws.com.rproxy.govskope.caporque Elastic Beanstalk transfiere estas funciones en su nombre. -
iam:CreateServiceLinkedRole, que el primer entorno de Beanstalk Cluster de una cuenta necesita para que Elastic Beanstalk y Amazon EKS puedan crear sus funciones vinculadas a servicios. Limítelo con la clave de condición, cuyos valores son yiam:AWSServiceName.elasticbeanstalk.amazonaws.com.rproxy.govskope.caeks.amazonaws.com
La siguiente política garantiza todo esto. Sustituye el identificador de la cuenta por el tuyo, usa el nombre del rol de la aplicación y elimina cualquier rol que no hayas aprobado. Los nombres de los roles que se muestran son los de la tabla anterior, que la consola crea y selecciona.
A diferencia de la consola, que selecciona un rol por su nombre, una política relaciona un rol por su ARN completo, por lo que cada Resource entrada debe incluir la ruta de IAM del rol. Los roles que crea la consola son /service-role/ los siguientes: Si creaste un rol de otra forma, es posible que no tenga ninguna ruta, en cuyo caso su ARN esarn:aws:iam::. Para leer el ARN de un rol, ejecuta. 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:GetRoleestá en su propia sentencia porque la clave de iam:PassedToService condición solo existe en una PassRole solicitud. Aplicarlo iam:GetRole en la misma declaración impediría en absoluto que se concediera ese permiso.
Esta política cubre únicamente la transferencia de funciones. No otorga las acciones de Elastic Beanstalk que requiere la creación de una aplicación y un entorno.
Sin estos permisos, CreateEnvironment produce un AccessDenied error al asignar un nombre a la acción que no pudo realizar. Para obtener más información, consulte Otorgar un permiso principal para transferir un rol a un AWS servicio y CreateEnvironment.
Funciones que administra Elastic Beanstalk
Elastic Beanstalk opera un entorno de Beanstalk Cluster a través del rol vinculado al AWSServiceRoleForElasticBeanstalk servicio, que crea en su cuenta. Este rol no se crea, se configura ni se transfiere. Amazon EKS también utiliza su propia función vinculada a un servicio. AWSServiceRoleForAmazonEKS Para saber cómo Elastic Beanstalk usa los roles vinculados a servicios, consulte. Uso de roles vinculados a servicios para Elastic Beanstalk
Confirme las funciones que usa el entorno
Cuando el entorno alcance el Ready estado, lea su configuración resuelta:
$ 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
Confirme que las entradas de clúster, nodo y rol de observabilidad contengan los ARN proporcionados durante la creación. Si el entorno usa un rol de aplicación, ejecute la verificación de credenciales e identidad Configura un rol de aplicación y confirme que el ARN devuelto identifica el rol seleccionado. En el caso de una versión de aplicación basada en el código fuente, espere a que aparezca la versiónPROCESSED; ese estado confirma que AWS CodeBuild podría usar el rol de compilación y completar la creación de la imagen. Consulte Creación de imágenes de contenedores para entornos de Beanstalk Cluster.
Permisos de aplicación
Utilice un rol de aplicación cuando la aplicación en ejecución deba llamar a AWS los servicios. Configure el rol antes de crear el entorno y conceda solo los permisos que requiere la aplicación. La aplicación recibe el rol a través de Amazon EKS Pod Identity y no a través de un perfil de instancia de Amazon EC2.
Pase el ARN del rol a la application-role configuración del espacio de aws:elasticbeanstalk:eks:environment nombres o seleccione el rol en la consola de Elastic Beanstalk al crear el entorno.
El rol de la aplicación también es el rol que lee las credenciales de un backend de observabilidad externo. Si configuras cualquier backend de observabilidad encustom, otorga la función a la aplicación secretsmanager:GetSecretValue y secretsmanager:DescribeSecret al secreto de Secrets Manager nombrado por. custom-credentials Consulte Enviar datos de observabilidad a un backend de terceros.
Configura un rol de aplicación
Cree el rol de la aplicación antes de crear el entorno. Otorgue al rol solo las acciones y los recursos que requiere la aplicación. Configure su política de confianza para Amazon EKS Pod Identity, incluida sts:AssumeRole y sts:TagSession para el principal del pods.eks.amazonaws.com servicio:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
-
Cree el rol con la política de confianza anterior.
-
Adjunte una política basada en la identidad que otorgue solo las acciones de servicio y los recursos que requiere la aplicación.
-
En la consola de Elastic Beanstalk, inicie el flujo de trabajo de creación del entorno y amplíe el acceso al servicio.
-
Elija el rol en Rol de aplicación: opcional. Complete la configuración restante del entorno y, a continuación, cree el entorno.
Con la API AWS CLI o la API, elija el rol; en su lugar, añada la
application-roleopción a sucreate-environmentsolicitud:--option-settings \ Namespace=aws:elasticbeanstalk:eks:environment,OptionName=application-role,Value=arn:aws:iam::111122223333:role/my-application-role -
Una vez implementada la aplicación, llama al AWS servicio requerido desde la aplicación. Para verificar la identidad de las credenciales independientemente de la política de servicio, llame AWS STS
GetCallerIdentityy confirme que el ARN devuelto identifica el rol de la aplicación seleccionado.
Si la aplicación lo recibeAccessDenied, comprueba que has seleccionado el rol deseado durante la creación del entorno, que su política de confianza permite la identidad de los pods de Amazon EKS y que su política basada en la identidad permite la acción y el recurso solicitados. Corrija la política de confianza o de permisos y repita la comprobación de identidad y credenciales y la llamada al servicio de la solicitud. Si se seleccionó el rol incorrecto, cree un entorno de reemplazo con el rol deseado en lugar de agregar permisos de aplicación al rol incorrecto. Utilice funciones de aplicación independientes cuando los entornos requieran un acceso diferente. No conceda permisos de aplicación al rol de clúster o nodo.
Diagnostique errores de rol
Comience con los eventos de Elastic Beanstalk para el entorno. operation_startEstablezca la marca de tiempo registrada inmediatamente antes de la solicitud fallida:
$ 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 creación de un entorno rechaza una función de infraestructura
-
Confirme que el rol esté en la cuenta de entorno, que su política de confianza y las políticas adjuntas coincidan con las directrices actuales del modo automático de Amazon EKS y que su ARN esté completo. Si el conjunto de subredes solicitado ya tiene un clúster registrado, utilice sus funciones de clúster y nodo registrados. El error de operación identifica valores conflictivos entre los valores solicitados y registrados. Corrija la solicitud y vuelva a crear el entorno. No puede reemplazar estas funciones en un entorno existente.
- No se puede recuperar la imagen de la aplicación
-
Compruebe que el rol de nodo cuente con la política de confianza y permisos de recuperación de Amazon ECR documentada. Compruebe también el URI de la imagen y cualquier política de repositorio que restrinja el acceso. Corrija la política del rol o del repositorio y, a continuación, vuelva a implementar la versión de la aplicación.
- Una fuente genera informes
FAILED -
Verifique el rol de compilación en la configuración de compilación de la versión de la aplicación e inspeccione los diagnósticos de compilación. Corrija la política de permisos o confianza del rol antes de crear una nueva versión de la aplicación. Consulte Creación de imágenes de contenedores para entornos de Beanstalk Cluster.
- La aplicación en ejecución recibe
AccessDenied -
Utilice el rol de la aplicación para registrarse. Configura un rol de aplicación Confirme primero la identidad de la credencial y, a continuación, compare la acción y el recurso denegados en los registros de la aplicación y el CloudTrail evento con la política de roles.