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é esAWS ParallelCluster la API?

AWS ParallelClusterLa API es una aplicación sin servidor que, una vez implementada,Cuenta de AWS permitirá el acceso programático aAWS ParallelCluster las funciones a través de la API.

AWS ParallelClusterLa API se distribuye como una AWS CloudFormationplantilla autónoma que consiste principalmente en un punto final de Amazon API Gateway, que exponeAWS ParallelCluster las funciones, y una AWS Lambdafunción, que se encarga de ejecutar las funciones invocadas.

La siguiente imagen muestra un diagrama de arquitectura de alto nivel de la infraestructura deAWS ParallelCluster API.

AWS ParallelClusterDocumentación de la API

El archivo de especificaciones de OpenAPI que describe laAWS ParallelCluster API 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 laAWS ParallelCluster API mediante una de las muchas herramientas disponibles, como Swagger UI o Redoc.

Cómo implementar laAWS ParallelCluster API

Para implementarAWS ParallelCluster la API, debe ser administrador deCuenta 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

dónde<REGION> esRegión de AWS donde se debe implementar la API y<VERSION> es laAWS ParallelCluster versión (por ejemplo, 3.5.0).

La imagen de Docker utilizada para implementar lasAWS LambdaAWS ParallelCluster funciones de implementación está disponible en: https://gallery.ecr.aws/parallelcluster/pcluster-api

aviso

Cualquier usuario de Amazon API Gateway que tenga acceso privilegiado a losAWS Lambda servicios de Amazon API Gateway hereda automáticamente los permisos para administrar los recursos de laAWS ParallelCluster API.Cuenta de AWS

Despliegue conAWS CLI

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

$ aws configure

Ejecute los comandos siguientes para implementar la API

$ REGION=<region> $ API_STACK_NAME=<stack-name>  # This can be any name $ VERSION=3.5.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}

Personalice su implementación

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

Los parámetros que se documentan a continuación son todos opcionales.

  • Región: elRegion parámetro se puede usar para determinar si la API puede controlar los recursos en todosRegiones de AWS (predeterminado) o en uno soloRegión de AWS. Establezca este valor enRegión de AWS la API en la que se está implementando para restringir el acceso.

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

  • CustomDomainName,CustomDomainCertificate,CustomDomainHostedZoneId - Utilice estos parámetros para configurar un dominio personalizado para el endpoint de Amazon API Gateway. CustomDomainNamees el nombre del dominio que se va a utilizar,CustomDomainCertificate es el ARN de un certificadoAWS gestionado para este nombre de dominio yCustomDomainHostedZoneId 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 Transport Layer Security (TLS) para la API. Para obtener más información, consulte el tema Elección de una versión mínima de TLS para un dominio personalizado en API Gateway.

  • EnableIamAdminAccess- De forma predeterminada, laAWS Lambda función que ejecuta las operaciones de laAWS ParallelCluster API está configurada con un rol de IAM que impide cualquier acceso privilegiado a IAM (EnableIamAdminAccess=false). Esto hace que la API no pueda ejecutar operaciones que requieran la creación de funciones o políticas de IAM. Por ello, la creación de clústeres o imágenes personalizadas solo se realiza correctamente cuando las funciones de IAM se proporcionan como entrada como parte de la configuración de los recursos.

    CuandoEnableIamAdminAccess se establece entrue laAWS ParallelCluster API, se otorgan permisos para gestionar la creación de las funciones de IAM necesarias para implementar clústeres o generar AMI personalizadas.

    aviso

    Si se establece en true, se otorgan privilegios de administrador de IAM a laAWS Lambda función que ejecutaAWS ParallelCluster las operaciones.

    ConsulteAWS ParallelClusterejemplos de políticas de usuario para administrar los recursos de IAM para obtener más información sobre las funciones que se pueden desbloquear al habilitar este modo.

  • PermissionsBoundaryPolicy- Este parámetro acepta el ARN de una política de IAM y solo se puede usar cuandoEnableIamAdminAccess está configurado entrue. Cuando se especifica una política de IAM, los permisos de IAM concedidos a laAWS Lambda función de API se restringen condicionalmente al uso del límite de permisos determinado.

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

  • CreateApiUserRole- De forma predeterminada, el despliegue de laAWS ParallelCluster API incluye la creación de un rol de IAM que se establece como el único rol autorizado para invocar la API. De hecho, el punto de enlace de Amazon API Gateway está configurado con una política basada en recursos para conceder el permiso de invocación únicamente al usuario creado. Para eliminar dicha restricción, definaCreateApiUserRole=false y, a continuación, conceda acceso a la API a los usuarios de IAM seleccionados. Para obtener más información, consulte el tema Control del acceso para invocar una API en la Guía para desarrolladores de Amazon API Gateway.

    aviso

    Cuando las políticas de recursos de Amazon API Gateway no restrinjan elCreateApiUserRole=true acceso al punto final de la API, todas las funciones de IAM que tenganexecute-api:Invoke permisos ilimitados podrán acceder aAWS ParallelCluster las funciones. Para obtener más información, consulte Controlar el acceso a una API con las políticas de recursos de API Gateway en la Guía para desarrolladores de API Gateway.

    aviso

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

Actualización de la API

Caso de uso 1: actualización a unaAWS ParallelCluster versión más reciente

Opción 1: Elimine la API existente eliminando laAWS CloudFormation pila correspondiente e implemente la nueva API como se muestra arriba.

Opción 2: Actualice la API existente ejecutando las siguientes instrucciones:

$ REGION=<region> $ API_STACK_NAME=<stack-name>  # This needs to correspond to the existing API stack name $ VERSION=3.5.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}

Caso de uso 2: actualizar la API a la última compilación de imágenes de Docker disponible para laAWS ParallelCluster versión implementada

AWS ParallelClusterpuede implementar periódicamente imágenes de Docker actualizadas para laAWS Lambda función de API que contengan dependencias actualizadas y parcheadas. Estas imágenes actualizadas no incluyen ningún cambio en cuanto a las funciones incluidas en laAWS ParallelCluster versión dada. Para utilizar la imagen de Docker más reciente para la versión implementada de la API, puede ejecutar las siguientes instrucciones:

$ REGION=<region> $ API_STACK_NAME=<stack-name> $ DOCKER_UPDATE_IMAGE_PIPELINE=$(aws cloudformation describe-stacks --region ${REGION} --stack-name ${API_STACK_NAME} --query "Stacks[0].Outputs[?OutputKey=='ParallelClusterDockerUpdateImagePipeline'].OutputValue" --output text) $ aws imagebuilder start-image-pipeline-execution --region ${REGION} --image-pipeline-arn ${DOCKER_UPDATE_IMAGE_PIPELINE}

Esto desencadena la creación de una canalización de EC2 Image Builder que se encarga de obtener la última imagen deAWS ParallelCluster Docker disponible para la versión de API implementada.

AWS ParallelClusterAPI de invocación

El punto final deAWS ParallelCluster Amazon API Gateway está configurado con un tipo deAWS_IAM autorización, por lo que todas las solicitudes deben estar firmadas en Sigv4 con credenciales de IAM válidas (referencia a la 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 de dicho usuario, 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

Las credenciales temporales para dicho usuario se pueden obtener con una llamada a STS AssumeRole.

El punto final deAWS ParallelCluster API se puede obtener 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

LaAWS ParallelCluster API puede ser invocada por cualquier cliente HTTP que cumpla con las especificaciones de OpenAPI que se encuentran aquí:

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

Las solicitudes deben estar firmadas por SigV4 como se documenta aquí.

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

Puede encontrar una implementación de referencia para un cliente de API de Python en el AWS ParallelClusterrepositorio. Para obtener más información sobre cómo puedes usar el cliente de API de Python, consulta elUso de la API AWS ParallelCluster tutorial.

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 conAWS WAF nuestras claves de API, consulte la documentación de Amazon API Gateway.

aviso

Un usuario de IAM autorizado a invocar laAWS ParallelCluster API podrá controlar indirectamente todos losAWS recursosAWS ParallelCluster gestionados porCuenta de AWS. Esto incluye la creación deAWS recursos 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 unAWS ParallelCluster clúster, según su configuración, puede incluir el despliegue de instancias de Amazon EC2, Amazon Route 53, los sistemas de archivos Amazon Elastic File System, los sistemas de archivos Amazon FSx, las funciones de IAM y los recursos de otrosServicios de AWS utilizados por el usuario sobre losAWS ParallelCluster que el usuario podría no tener control directo.

aviso

Al crear un clúster con loAdditionalIamPolicies especificado 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 seguir uno de estos pasos:

  • EditaDefaultParallelClusterIamAdminPolicy la entrada:

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

    Añada la política en laArnLike/iam:PolicyARN sección.

  • Omita la especificación de políticasAdditionalIamPolicies en el archivo de configuración y añada políticas manualmente al rol deAWS ParallelCluster instancia creado en el clúster.

Acceso a los 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, 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=='ParallelClusterLambdaLogGroup'].OutputValue" --output text

También se puede acceder a las métricas, registros y registros de AWS X-Rayseguimiento de Lambda a través de la consola de Lambda. Para recuperar el ARN de la función 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