Amazon ParallelCluster API - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon ParallelCluster API

什么是Amazon ParallelClusterAPI?

Amazon ParallelClusterAPI 是一个无服务器应用程序,一旦部署到你的Amazon Web Services 账户将允许以编程方式访问Amazon ParallelCluster通过 API 提供的功能。

Amazon ParallelClusterAPI 以独立形式分发Amazon CloudFormation模板主要由一个Amazon API Gateway端点,暴露了Amazon ParallelCluster功能,还有Amazon Lambda函数,负责执行调用的功能。

下图显示了的高级架构图Amazon ParallelClusterAPI

Amazon ParallelClusterAPI 文档

描述了 OpenAPI 规范文件Amazon ParallelClusterAPI 可以从以下地址下载:

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

从 OpenAPI 规范文件开始,你可以为Amazon ParallelClusterAPI 使用众多可用工具之一,例如Swagger要么Redoc.

如何部署Amazon ParallelClusterAPI

部署Amazon ParallelClusterAPI 你需要成为 API 的管理员Amazon Web Services 账户.

用于部署 API 的模板可通过以下 URL 获得:

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

哪里<REGION>是Amazon Web Services 区域需要将 API 部署到的位置和<VERSION>是Amazon ParallelCluster版本(例如 3.2.1)。

这些区域有:搬运工人用于部署Amazon Lambda实施函数Amazon ParallelCluster功能可在以下网址获得:https://gallery.ecr.aws/parallelcluster/pcluster-api

警告

中的任何用户Amazon Web Services 账户,具有访问权限的Amazon Lambda或 Amazon API Gateway 服务,将自动继承管理权限Amazon ParallelClusterAPI

部署时使用Amazon CLI

配置Amazon要在 CLI 中使用的证书(如果尚未使用)。

$ aws configure

运行以下命令部署

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

自定义您的部署

API 部署可以通过使用自定义Amazon CloudFormation模板公开的参数。要在通过 CLI 部署时配置参数的值,可以使用以下选项:--parameters ParameterKey=KeyName,ParameterValue=Value.

下面记录的参数都是可选的。

  • 区域-那个Region参数可用于确定 API 是否能够控制所有资源Amazon Web Services 区域(默认)或者在单曲中Amazon Web Services 区域. 请将此值设置为正在部署 API 的区域,以限制访问权限。

  • ParallelClusterFunctionRole-这会覆盖分配给的 IAM 角色Amazon Lambda实施函数Amazon ParallelCluster功能。参数接受 IAM 角色的 ARN。需要将此类角色配置为具有Amazon Lambda作为 IAM 负责人。

  • CustomDomainName,CustomDomainCertificate,CustomDomainHostedZoneId-这些参数允许为 Amazon API Gateway 终端节点设置自定义域。CustomDomainName是要使用的域的名称。CustomDomainCertificate是的 ARNAmazon此域名的托管证书和CustomDomainHostedZoneId是 IDAmazon Route 53要在其中创建记录的托管区。

  • EnableIamAdminAccess-默认情况下Amazon Lambda函数正在执行Amazon ParallelClusterAPI 操作配置了 IAM 角色,该角色可阻止任何特权 IAM 访问 (EnableIamAdminAccess=false)。这使得 API 无法执行需要创建 IAM 角色或策略的操作。因此,只有在资源配置中提供 IAM 角色作为输入时,集群或自定义镜像的创建才能成功。

    EnableIamAdminAccess将设置为true这Amazon ParallelClusterAPI 被授予管理部署集群或生成自定义 AMI 所需的 IAM 角色创建的权限。

    警告

    将此设置为 true 会授予 IAM 管理员权限Amazon Lambda函数正在执行Amazon ParallelCluster操作。

    请参阅管理 IAM 资源的用户策略了解有关启用此模式时可以解锁的功能的更多详细信息。

  • PermissionsBoundaryPolicy-此参数接受 IAM 策略的 ARN,只能在以下情况下使用EnableIamAdminAccess将设置为true. 指定 IAM 策略时,向 API 授予的 IAM 权限Amazon Lambda函数有条件地仅限于使用给定权限边界。

    请参阅PermissionsBoundary模式了解有关此模式施加的限制的更多详细信息。

  • CreateApiUserRole-默认情况下,部署Amazon ParallelClusterAPI 包括创建 IAM 角色,该角色被设置为唯一有权调用 API 的角色。 实际上,Amazon API Gateway 终端节点配置了基于资源的策略,仅向创建的用户授予调用权限。 取消此类限制CreateApiUserRole=false然后向选定的 IAM 用户授予对 API 的访问权限。有关更多信息,请参阅针对调用 API 的访问控制Amazon API Gateway.

    警告

    CreateApiUserRole=true对 API 终端节点的访问不受Amazon API Gateway 资源策略的限制,所有 IAM 角色都不受限制execute-api:Invoke权限将能够访问Amazon ParallelCluster功能。有关更多信息,请参阅使用 API Gateway 资源策略控制对 API 的访问API Gateway 开发人员.

    警告

    这些区域有:ParallelClusterApiUserRole有权调用 allAmazon ParallelClusterAPI 操作。要限制对 API 资源子集的访问,请参阅控制谁可以使用 IAM 策略调用 API Gateway API 方法API Gateway 开发人员.

更新 API

使用案例 1:升级到较新的Amazon ParallelCluster版本

选项 1:通过删除相应的 API 来移除现有 APIAmazon CloudFormation堆叠并部署新的 API,如上所示。

选项 2:通过运行以下说明更新现有 API:

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

用例 2:将 API 更新为已部署的最新可用的 Docker 镜像版本Amazon ParallelCluster版本

Amazon ParallelCluster可以定期为 API 部署刷新的 Docker 镜像Amazon Lambda包含更新和补丁依赖项的函数。此类刷新后的图像不包括给定图像附带的功能的任何更改Amazon ParallelCluster版本。要将最新的 Docker 镜像用于已部署版本的 API,您可以运行以下指令:

$ 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}

这会触发一个 EC2 Image Builder 管道的构建,该管道负责获取最新的可用数据Amazon ParallelCluster部署了 Implemented 版本的 Docker 镜像。

调用Amazon ParallelClusterAPI

这些区域有:Amazon ParallelClusterAmazon API Gateway 终端节点配置为AWS_IAM授权类型,因此要求所有请求都必须使用有效的 IAM 证书签署 Sigv4 (API 参考:发出 http 请求)。

使用默认设置部署时,API 调用权限仅授予使用 API 创建的默认 IAM 用户。

要检索此类用户的 ARN,请运行:

$ 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

可以通过调用获取此类用户的临时证书STS AssumeRole.

这些区域有:Amazon ParallelCluster可通过运行以下命令获得

$ 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

这些区域有:Amazon ParallelClusterAPI 可以由任何符合 OpenAPI 规范的 HTTP 客户端调用,可以在此处找到:

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

请求需要按文档签署 Sigv4这里.

目前我们不提供任何官方的 API 客户端实现。但是,通过使用 OpenAPI 模型可以轻松生成 API 客户端OpenAPI 生成器. 生成客户端后,如果未开箱即用,则需要添加 Sigv4 签名。

可以在Amazon ParallelCluster知识库. 要了解有关如何将 Imphon API 客户端搭配使用的更多信息,请参阅使用 Amazon ParallelCluster API教程。

要实现更高级的访问控制机制,例如 Amazon Cognito 或 Lambda 授权器,或者进一步保护 APIAmazon WAF或者 API 密钥请按照Amazon API Gateway.

警告

有权调用 IAM 用户Amazon ParallelClusterAPI 将能够间接控制所有Amazon管理的资源Amazon ParallelCluster在Amazon Web Services 账户. 这包括创建Amazon由于对用户 IAM 策略的限制,IAM 用户无法直接控制的资源。例如,创建一个Amazon ParallelCluster根据其配置,集群可能包括部署 Amazon EC2 实例、Amazon Route 53、Amazon Elastic File System 文件系统、Amazon FSx 文件系统、IAM 角色和其他角色的资源Amazon Web Services使用者Amazon ParallelClusterIAM 用户可能无法直接控制这些内容。

警告

使用以下命令创建集群时AdditionalIamPolicies在配置中指定,其他策略必须匹配以下模式之一:

- !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

如果您需要其他策略:

  • 编辑DefaultParallelClusterIamAdminPolicy在:

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

    将策略添加到ArnLike/iam:PolicyARN部分。

  • 省略为以下项指定策略AdditionalIamPolicies在配置文件中,然后手动将策略添加到Amazon ParallelCluster在集群内创建实例角色。

访问 API 日志和指标

API 日志已发布到亚马逊 CloudWatch 保留期为 30 天。要检索 LogGroup 与 API 部署关联的名称运行以下命令:

$ 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

Lambda 指标、日志和Amazon X-Ray也可以通过 Lambda 控制台访问跟踪日志。要检索与 API 部署关联的 Lambda 函数的 ARN,请运行以下命令:

$ 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