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
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
esRegión de AWS donde se debe implementar la API y<REGION>
es laAWS ParallelCluster versión (por ejemplo, 3.5.0). <VERSION>
La imagen de Docker
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=
# This can be any name<stack-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: el
Region
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.
CustomDomainName
es 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.Cuando
EnableIamAdminAccess
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 cuando
EnableIamAdminAccess
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, defina
CreateApiUserRole=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 el
CreateApiUserRole=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 ParallelClusterApiUserRole
Tiene 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=
# This needs to correspond to the existing API stack name<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
Puede encontrar una implementación de referencia para un cliente de API de Python en el AWS ParallelClusterrepositorio
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.
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.
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:
-
Edita
DefaultParallelClusterIamAdminPolicy
la entrada:https://
<REGION>
-aws-parallelcluster.s3.<REGION>
.amazonaws.com/parallelcluster/<VERSION>
/api/parallelcluster-api.yamlAñada la política en la
ArnLike/iam:PolicyARN
sección. -
Omita la especificación de políticas
AdditionalIamPolicies
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