本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS ParallelCluster API
什么是 AWS ParallelCluster API?
AWS ParallelCluster API 是一种无服务器应用程序,一旦部署到您的应用程序 AWS 账户,便可通过 API 提供对 AWS ParallelCluster 功能的编程访问。
AWS ParallelCluster API 以独立AWS CloudFormation模板的形式分发,其中包括一个公开 AWS ParallelCluster 功能的 Amazon API Gateway 终端节点和一个负责处理所调用AWS Lambda功能的函数。
下图显示了 AWS ParallelCluster API 基础架构的高级架构图。
AWS ParallelCluster API 文档
描述该 API 的 OpenAPI 规范文件可以从以下网址下载: AWS ParallelCluster
https://
<REGION>
-aws-parallelcluster.s3.<REGION>
.amazonaws.com/parallelcluster/<VERSION>
/api/ParallelCluster.openapi.yaml
从 OpenAPI 规范文件开始,你可以使用 Swagger
如何部署 AWS ParallelCluster API
要部署 AWS ParallelCluster API,你需要成为 API 的管理员 AWS 账户。
用于部署 API 的模板可在以下 URL 中找到:
https://
<REGION>
-aws-parallelcluster.s3.<REGION>
.amazonaws.com/parallelcluster/<VERSION>
/api/parallelcluster-api.yaml
哪里
是需要部署 API AWS 区域 的地方,<REGION>
是 AWS ParallelCluster 版本(例如 3.7.0)。<VERSION>
AWS Lambda 通过使用带有 Lambda 层接口来处理 API 调用的功能。AWS ParallelCluster Python 库 API
警告
中任何有权访问我们的 AWS 账户 Amazon API Gateway 服务的用户都会自动继承管理 AWS ParallelCluster API 资源的权限。 AWS Lambda
使用部署 AWS CLI
如果您尚未配置要与 CLI 一起使用的 AWS 凭证,请执行此操作。
$
aws configure
运行以下命令以部署 API:
$
REGION=
<region>
$
API_STACK_NAME=
# This can be any name<stack-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}
自定义部署
您可以使用模板公开的 AWS CloudFormation 参数自定义 API 部署。在通过 CLI 进行部署时,要配置某个参数的值,可以使用以下选项:--parameters
ParameterKey=KeyName,ParameterValue=Value
。
以下参数为可选参数:
-
区域-使用
Region
参数指定 API 是能够控制全部资源 AWS 区域 (默认)还是单个资源 AWS 区域。将此值设置 AWS 区域 为要部署的 API 以限制访问权限。 -
ParallelClusterFunctionRole-这会覆盖分配给实现 AWS Lambda AWS ParallelCluster 功能的函数的 IAM 角色。该参数接受 IAM 角色的 ARN。需要将此类角色配置为 AWS Lambda 作为 IAM 委托人。
-
CustomDomainName,CustomDomainCertificate,CustomDomainHostedZoneId-使用这些参数为 Amazon API Gateway 终端节点设置自定义域。
CustomDomainName
是要使用的域名,CustomDomainCertificate
是该域名的 AWS 托管证书的 ARN,CustomDomainHostedZoneId
也是您要在其中创建记录的 A mazon Route 53 托管区域的 ID。警告
您可以配置自定义域设置,以对 API 强制使用最低版本的传输层安全性协议 (TLS)。有关更多信息,请参阅在 API Gateway 中为自定义域选择最低 TLS 版本。
-
EnableIamAdminAccess-默认情况下, AWS Lambda 函数处理 AWS ParallelCluster API 操作配置为阻止任何特权 IAM 访问的 IAM 角色 (
EnableIamAdminAccess=false
)。这使得 API 无法处理需要创建 IAM 角色或策略的操作。因此,只有在资源配置过程中提供 IAM 角色作为输入时,才能成功创建集群或自定义映像。当设置
EnableIamAdminAccess
为true
时, AWS ParallelCluster API 将获得管理部署集群或生成自定义 AMI 所需的 IAM 角色创建的权限。警告
将其设置为 true 可授予 IAM 管理员对 AWS Lambda 函数处理 AWS ParallelCluster 操作的权限。
有关启用此模式后可以解锁的功能的更多详细信息,请参阅AWS ParallelCluster 用于管理 IAM 资源的用户示例策略。
-
PermissionsBoundaryPolicy-此可选参数接受现有 IAM 策略 ARN,该策略将被设置为 PC API 基础设施创建的所有 IAM 角色的权限边界,并设置为管理 IAM 权限的条件,因此 PC API 只能创建具有此策略的角色。
有关此模式施加的限制的更多详细信息,请参阅 PermissionsBoundary 模式。
-
CreateApiUserRole-默认情况下, AWS ParallelCluster API 的部署包括创建 IAM 角色,该角色被设置为唯一有权调用 API 的角色。 Amazon API Gateway 终端节点配置了基于资源的策略,仅向创建的用户授予调用权限。 要更改此设置,请设置
CreateApiUserRole=false
并向选定的 IAM 用户授予 API 访问权限。有关更多信息,请参阅 Amazon API Gateway 开发人员指南 中的针对调用 API 的访问控制。警告
如果
CreateApiUserRole=true
对 API 终端节点的访问不受到 Amazon API Gateway 资源策略的限制,则所有拥有不受限制execute-api:Invoke
权限的 IAM 角色都可以访问 AWS ParallelCluster 功能。有关更多信息,请参阅 API Gateway 开发人员指南 中的使用 API Gateway 资源策略控制对 API 的访问。警告
ParallelClusterApiUserRole
有权调用所有 AWS ParallelCluster API 操作。要限制对一部分 API 资源的访问,请参阅 API Gateway 开发人员指南 中的控制谁可以使用 IAM 策略调用 API Gateway API 方法。 -
IAM RoleAndPolicyPrefix-此可选参数接受最多 10 个字符的字符串,该字符串将用作作为 PC API 基础设施一部分创建的 IAM 角色和策略的前缀。
更新 API
升级到新 AWS ParallelCluster 版本
选项 1:如上所示,通过删除相应的 AWS CloudFormation 堆栈并部署新 API 来移除现有 API。
选项 2:通过运行以下命令更新现有 API:
$
REGION=
<region>
$
API_STACK_NAME=
# This needs to correspond to the existing API stack name<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}
正在调用 API AWS ParallelCluster
AWS ParallelCluster Amazon API Gateway 终端节点配置了AWS_IAM
授权类型,要求所有请求都必须使用有效的 IAM 凭证进行 Sigv4 签名(API 参考:发出 http 请求)。
使用默认设置进行部署时,API 调用权限仅授予给使用 API 创建的默认 IAM 用户。
要检索默认 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
要获取默认 IAM 用户的临时证书,请运行 STS AssumeRole
您可以通过运行以下命令来检索 AWS ParallelCluster API 端点:
$
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
该 AWS ParallelCluster API 可以由任何符合 OpenAPI 规范的 HTTP 客户端调用,可以在此处找到:
https://
<REGION>
-aws-parallelcluster.s3.<REGION>
.amazonaws.com/parallelcluster/<VERSION>
/api/ParallelCluster.openapi.yaml
请求必须按照此处所述进行 SigV4 签名。
目前,我们不提供任何官方 API 客户端实现。不过,通过使用 OpenAPI Generator
可以在 AWS ParallelCluster 存储库
警告
有权调用 AWS ParallelCluster API 的 IAM 用户可以间接控制 AWS ParallelCluster 中管理的所有 AWS 资源 AWS 账户。这包括创建由于用户 IAM 策略的限制而导致用户无法直接控制的 AWS 资源。例如,根据集群的配置,创建 AWS ParallelCluster 集群可能包括部署 Amazon EC2 实例、Amazon Route 53、Amazon Elastic File System 文件系统、Amazon FSx 文件系统、IAM 角色以及用户可能无法直接控制的其他 AWS 服务 资源。 AWS ParallelCluster
警告
使用配置中指定的 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
指定策略,并手动向在集群中创建的 AWS ParallelCluster 实例角色添加策略。
访问 API 日志和数据记录
API 日志发布到亚马逊 CloudWatch ,保留期为 30 天。要检索与 API 部署关联的 LogGroup 名称,请运行以下命令:
$
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 控制台访问 Lambda 数据记录、日志和 AWS X-Ray 跟踪日志。要检索与 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