API de AWS ParallelCluster - AWS ParallelCluster

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.

API de AWS ParallelCluster

¿Qué es la API de AWS ParallelCluster?

La API de AWS ParallelCluster es una aplicación sin servidor que, una vez implementada en su Cuenta de AWS, proporciona acceso programático a las características de AWS ParallelCluster a través de una API.

La API de AWS ParallelCluster se distribuye como una plantilla AWS CloudFormation independiente que incluye un punto de conexión de Amazon API Gateway, que expone las características de AWS ParallelCluster, y una función de AWS Lambda, que se encarga de procesar las características invocadas.

En la siguiente imagen se muestra un diagrama de alto nivel de la infraestructura de la API de AWS ParallelCluster.

Documentación de la API de AWS ParallelCluster

El archivo de especificaciones de OpenAPI que describe la API de AWS ParallelCluster se puede descargar desde:

https://<REGION>-aws-parallelcluster.s3.<REGION>.amazonaws.com/parallelcluster/<VERSION>/api/ParallelCluster.openapi.yaml

A partir del archivo de especificaciones de OpenAPI, puede generar documentación para la API de AWS ParallelCluster utilizando una de las muchas herramientas disponibles, como Swagger UI o Redoc.

Cómo implementar la API de AWS ParallelCluster

Para implementar la API de AWS ParallelCluster, debe ser administrador de Cuenta de AWS.

La plantilla utilizada para implementar la API está disponible en la siguiente URL:

https://<REGION>-aws-parallelcluster.s3.<REGION>.amazonaws.com/parallelcluster/<VERSION>/api/parallelcluster-api.yaml

donde <REGION> es la Región de AWS en la que se debe implementar la API y donde <VERSION> es la versión de AWS ParallelCluster (por ejemplo, 3.7.0).

AWS Lambda procesa las características invocadas por la API mediante una interfaz de capa de Lambda con API de la biblioteca Python de AWS ParallelCluster.

aviso

Cualquier usuario de la Cuenta de AWS, que tenga acceso con privilegios a los servicios de Amazon API Gateway o AWS Lambda, hereda automáticamente los permisos para administrar los recursos de la API de AWS ParallelCluster.

Implementación con AWS CLI

Configure las credenciales de AWS para usarlas con la CLI si aún no lo ha hecho.

$ aws configure

Ejecute los siguientes comandos para implementar la API:

$ REGION=<region> $ API_STACK_NAME=<stack-name>  # This can be any name $ VERSION=3.7.0 $ aws cloudformation create-stack \   --region ${REGION} \   --stack-name ${API_STACK_NAME} \   --template-url https://${REGION}-aws-parallelcluster.s3.${REGION}.amazonaws.com/parallelcluster/${VERSION}/api/parallelcluster-api.yaml \   --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND $ aws cloudformation wait stack-create-complete --stack-name ${API_STACK_NAME} --region ${REGION}

Personalización de la implementación

Puede personalizar la implementación de la API mediante los parámetros AWS CloudFormation expuestos en la plantilla. Para configurar el valor de un parámetro al implementar a través de la CLI, se puede usar la siguiente opción: --parameters ParameterKey=KeyName,ParameterValue=Value.

Los siguientes parámetros son opcionales:

  • Región: utilice el parámetro Region para especificar si la API puede controlar recursos en todas las Regiones de AWS (opción predeterminada) o en solo una Región de AWS. Establezca este valor en la Región de AWS en la que se esté implementando la API para restringir el acceso.

  • ParallelClusterFunctionRole- Esto anula la función de IAM que se asigna a la AWS Lambda función que implementa AWS ParallelCluster las funciones. El parámetro acepta el ARN de un rol de IAM. Este rol debe configurarse para que AWS Lambda sea la entidad principal de IAM.

  • CustomDomainName,CustomDomainCertificate, CustomDomainHostedZoneId - Utilice estos parámetros para configurar un dominio personalizado para el punto final de Amazon API Gateway. CustomDomainNamees el nombre del dominio que se va a utilizar, CustomDomainCertificate es el ARN de un certificado AWS administrado para este nombre de dominio y CustomDomainHostedZoneId es el ID de la zona alojada de Amazon Route 53 en la que desea crear registros.

    aviso

    Puede configurar ajustes de dominio personalizados para aplicar una versión mínima de seguridad de la capa de transporte (TLS) para la API. Para obtener más información, consulte Elección de una versión mínima de TLS para un dominio personalizado en API Gateway.

  • EnableIamAdminAccess- De forma predeterminada, la AWS Lambda función que procesa las operaciones de la AWS ParallelCluster API está configurada con una función de IAM que impide cualquier acceso de IAM privilegiado (). EnableIamAdminAccess=false Esto hace que la API no pueda procesar operaciones que requieren la creación de políticas o roles de IAM. Por este motivo, la creación de clústeres o imágenes personalizadas solo se realiza correctamente cuando se proporcionan los roles de IAM como entrada en la configuración de los recursos.

    Cuando EnableIamAdminAccess se establece en true, la API de AWS ParallelCluster concede permisos para administrar la creación de los roles de IAM necesarios para implementar clústeres o generar AMI personalizadas.

    aviso

    Si se establece en verdadero, se otorgan privilegios de administrador de IAM a las operaciones de AWS ParallelCluster de procesamiento de la función de AWS Lambda.

    Consulte AWS ParallelCluster ejemplos de políticas de usuario para administrar los recursos de IAM para obtener más información sobre las características que se pueden desbloquear al habilitar este modo.

  • PermissionsBoundaryPolicy- Este parámetro opcional acepta un ARN de política de IAM existente que se establecerá como límite de permisos para todas las funciones de IAM creadas por la infraestructura de la API de PC y como condición de los permisos administrativos de IAM, de modo que la API de PC solo pueda crear funciones con esta política.

    Consulte Modo PermissionsBoundary para obtener más información sobre las restricciones que impone este modo.

  • CreateApiUserRole- De forma predeterminada, el despliegue de la AWS ParallelCluster API incluye la creación de una función de IAM que se establece como la única función autorizada para invocar la API. El punto de enlace Amazon API Gateway está configurado con una política basada en recursos para conceder el permiso de invocación únicamente al usuario creado. Para cambiarlo, defina CreateApiUserRole=false y, a continuación, conceda el acceso a la API a los usuarios de IAM seleccionados. Para obtener más información, consulte Control del acceso para invocar una API en la Guía para desarrolladores de Amazon API Gateway.

    aviso

    Cuando el acceso de CreateApiUserRole=true al punto de conexión de la API no está restringido por las políticas de recursos de Amazon API Gateway, todos los roles de IAM que tengan permisos de execute-api:Invoke ilimitados pueden acceder a las características de AWS ParallelCluster. Para obtener más información, consulte Control del acceso a una API con las políticas de recursos de API Gateway en la Guía para desarrolladores de API Gateway.

    aviso

    El ParallelClusterApiUserRole tiene permiso para invocar todas las operaciones de la API de AWS ParallelCluster. Para restringir el acceso a un subconjunto de recursos de la API, consulte la sección Control de quién puede llamar a un método de API de API Gateway con políticas de IAM en la Guía para desarrolladores de API Gateway.

  • IAM RoleAndPolicyPrefix: este parámetro opcional acepta una cadena de 10 caracteres como máximo que se utilizará como prefijo tanto para las funciones como para las políticas de IAM creadas como parte de la infraestructura de API de PC.

Actualización de la API

Actualización a una versión más reciente de AWS ParallelCluster

Opción 1: elimine la API existente eliminando la pila de AWS CloudFormation correspondiente e implementando la nueva API, tal y como se muestra arriba.

Opción 2: actualice la API existente mediante la ejecución de los siguientes comandos:

$ REGION=<region> $ API_STACK_NAME=<stack-name>  # This needs to correspond to the existing API stack name $ VERSION=3.7.0 $ aws cloudformation update-stack \   --region ${REGION} \   --stack-name ${API_STACK_NAME} \   --template-url https://${REGION}-aws-parallelcluster.s3.${REGION}.amazonaws.com/parallelcluster/${VERSION}/api/parallelcluster-api.yaml \   --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND $ aws cloudformation wait stack-update-complete --stack-name ${API_STACK_NAME} --region ${REGION}

Invocación de la API de AWS ParallelCluster

El punto de conexión de Amazon API Gateway de AWS ParallelCluster está configurado con un tipo de autorización de AWS_IAM y requiere que todas las solicitudes estén firmadas mediante SigV4 con credenciales de IAM válidas (referencia de API: realizar solicitudes http).

Cuando se implementa con la configuración predeterminada, los permisos de invocación de la API solo se otorgan al usuario de IAM predeterminado creado con la API.

Para recuperar el ARN del usuario de IAM predeterminado, ejecute:

$ REGION=<region> $ API_STACK_NAME=<stack-name> $ aws cloudformation describe-stacks --region ${REGION} --stack-name ${API_STACK_NAME} --query "Stacks[0].Outputs[?OutputKey=='ParallelClusterApiUserRole'].OutputValue" --output text

Para obtener credenciales temporales para el usuario de IAM predeterminado, ejecute el comando STS. AssumeRole

Puede obtener el punto de conexión de la API de AWS ParallelCluster ejecutando el siguiente comando:

$ REGION=<region> $ API_STACK_NAME=<stack-name> $ aws cloudformation describe-stacks --region ${REGION} --stack-name ${API_STACK_NAME} --query "Stacks[0].Outputs[?OutputKey=='ParallelClusterApiInvokeUrl'].OutputValue" --output text

Cualquier cliente HTTP que cumpla con las especificaciones de OpenAPI que se encuentran a continuación puede invocar la API de AWS ParallelCluster:

https://<REGION>-aws-parallelcluster.s3.<REGION>.amazonaws.com/parallelcluster/<VERSION>/api/ParallelCluster.openapi.yaml

Las solicitudes deben estar firmadas mediante SigV4, tal y como se indica aquí.

En este momento, no ofrecemos ninguna implementación de cliente de API oficial. Sin embargo, los clientes de API se pueden generar fácilmente a partir del modelo OpenAPI mediante OpenAPI Generator. Una vez generado el cliente, es necesario añadir la firma SigV4 si no se proporciona lista para usar.

Puede encontrar una implementación de referencia para un cliente de API de Python en el repositorio de AWS ParallelCluster. Para obtener más información sobre cómo puede utilizar el cliente de API de Python, consulte el tutorial Uso de la API AWS ParallelCluster.

Para implementar mecanismos de control de acceso más avanzados, como Amazon Cognito o Lambda Authorizers, o para proteger aún más la API con claves de API o AWS WAF, consulte la documentación de Amazon API Gateway.

aviso

Un usuario de IAM que esté autorizado a invocar la API de AWS ParallelCluster puede controlar indirectamente todos los recursos de AWS administrados por AWS ParallelCluster en la Cuenta de AWS. Esto incluye la creación de recursos de AWS que el usuario no puede controlar directamente debido a las restricciones de la política de IAM del usuario. Por ejemplo, la creación de un clúster de AWS ParallelCluster, según su configuración, puede incluir la implementación de instancias de Amazon EC2, Amazon Route 53, sistemas de archivos Amazon Elastic File System, sistemas de archivos Amazon FSx, roles de IAM y recursos de otros Servicios de AWS utilizados por AWS ParallelCluster sobre los que el usuario podría no tener control directo.

aviso

Al crear un clúster con las AdditionalIamPolicies especificadas en la configuración, las políticas adicionales deben coincidir con uno de los siguientes patrones:

- !Sub arn:${AWS::Partition}:iam::${AWS::AccountId}:policy/parallelcluster* - !Sub arn:${AWS::Partition}:iam::${AWS::AccountId}:policy/parallelcluster/* - !Sub arn:${AWS::Partition}:iam::aws:policy/CloudWatchAgentServerPolicy - !Sub arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore - !Sub arn:${AWS::Partition}:iam::aws:policy/AWSBatchFullAccess - !Sub arn:${AWS::Partition}:iam::aws:policy/AmazonS3ReadOnlyAccess - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSBatchServiceRole - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole - !Sub arn:${AWS::Partition}:iam::aws:policy/EC2InstanceProfileForImageBuilder - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Si necesita otras políticas adicionales, puede elegir una de las siguientes opciones:

  • Edite la DefaultParallelClusterIamAdminPolicy en:

    https://<REGION>-aws-parallelcluster.s3.<REGION>.amazonaws.com/parallelcluster/<VERSION>/api/parallelcluster-api.yaml

    Agregue la política en la sección ArnLike/iam:PolicyARN.

  • Omita especificar políticas para AdditionalIamPolicies en el archivo de configuración y añada políticas manualmente al rol de instancia de AWS ParallelCluster creado en el clúster.

Acceso a registros y métricas de API

Los registros de API se publican en Amazon CloudWatch con una retención de 30 días. Para recuperar el LogGroup nombre asociado a una implementación de API, ejecuta el siguiente comando:

$ REGION=<region> $ API_STACK_NAME=<stack-name> $ aws cloudformation describe-stacks --region ${REGION} --stack-name ${API_STACK_NAME} --query "Stacks[0].Outputs[?OutputKey=='ParallelClusterLambdaLogGroup'].OutputValue" --output text

También se puede acceder a las métricas, los registros y los registros rastreo AWS X-Ray de Lambda a través de la consola Lambda. Para recuperar el ARN de la función de Lambda asociada a una implementación de API, ejecute el siguiente comando:

$ REGION=<region> $ API_STACK_NAME=<stack-name> $ aws cloudformation describe-stacks --region ${REGION} --stack-name ${API_STACK_NAME} --query "Stacks[0].Outputs[?OutputKey=='ParallelClusterLambdaArn'].OutputValue" --output text