本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon ParallelCluster API
什么是Amazon ParallelClusterAPI?
Amazon ParallelClusterAPI 是一种无服务器应用程序,一旦部署到您的Amazon Web Services 账户,提供编程访问权限Amazon ParallelCluster通过 API 提供的功能。
Amazon ParallelClusterAPI 以独立形式分发Amazon CloudFormation包含的模板亚马逊 API 网关端点,它暴露了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 ParallelCluster使用众多可用工具之一进行 API,例如Swagger 用户界面
如何部署Amazon ParallelClusterAPI
要部署Amazon ParallelClusterAPI 你需要成为 API 的管理员Amazon Web Services 账户。
用于部署 API 的模板可在以下 URL 中找到:
https://
<REGION>
-aws-parallelcluster.s3.<REGION>
.amazonaws.com/parallelcluster/<VERSION>
/api/parallelcluster-api.yaml
哪里
是Amazon Web Services 区域需要将 API 部署到何处以及<REGION>
是Amazon ParallelCluster版本(例如 3.7.0)。<VERSION>
Amazon Lambda使用 Lambda 层接口处理 API 调用的功能Amazon ParallelClusterPython 函数库。
警告
中的任何用户Amazon Web Services 账户,具有访问权限的特权Amazon Lambda或 Amazon API Gateway 服务,会自动继承管理权限Amazon ParallelClusterAPI 资源。
使用部署Amazon CLI
配置Amazon要用于 CLI 的证书(如果您尚未这样做)。
$
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}
自定义您的部署
您可以使用自定义 API 部署Amazon CloudFormation模板公开的参数。要在通过 CLI 部署时配置参数的值,可以使用以下选项:--parameters
ParameterKey=KeyName,ParameterValue=Value
。
以下参数是可选的:
-
区域-使用
Region
参数,用于指定 API 是否能够控制所有资源Amazon Web Services 区域(默认)或单个Amazon Web Services 区域。将此值设置为Amazon Web Services 区域正在将 API 部署到以限制访问。 -
ParallelClusterFunctionRole-这会覆盖分配给的 IAM 角色Amazon Lambda函数实现Amazon ParallelCluster特征。该参数接受 IAM 角色的 ARN。需要将此类角色配置为具有Amazon Lambda作为 IAM 委托人。
-
CustomDomainName,CustomDomainCertificate,CustomDomainHostedZoneId-使用这些参数为 Amazon API 网关终端节点设置自定义域。
CustomDomainName
是要使用的域名,CustomDomainCertificate
是 A 的 ARNAmazon此域名的托管证书以及CustomDomainHostedZoneId
是的 ID亚马逊 53 号公路您要在其中创建记录的托管区域。警告
您可以配置自定义域设置,以强制执行 API 的最低传输层安全 (TLS) 版本。有关更多信息,请参阅在 API 网关中为自定义域选择最低的 TLS 版本。
-
EnableIamAdminAccess-默认情况下Amazon Lambda函数处理Amazon ParallelClusterAPI 操作配置了 IAM 角色,该角色可阻止任何特权 IAM 访问 (
EnableIamAdminAccess=false
)。这使得 API 无法处理需要创建 IAM 角色或策略的操作。因此,只有在资源配置中提供 IAM 角色作为输入时,才能成功创建集群或自定义映像。什么时候
EnableIamAdminAccess
设置为true
这Amazon ParallelClusterAPI 被授予管理部署集群或生成自定义 AMI 所需的 IAM 角色创建的权限。警告
将其设置为 true 会授予 IAM 管理员权限Amazon Lambda函数处理Amazon ParallelCluster操作。
请参阅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 的访问权限在亚马逊 API 网关开发者指南。警告
什么时候
CreateApiUserRole=true
对 API 终端节点的访问不受亚马逊 API 网关资源策略的限制,所有 IAM 角色都不受限制execute-api:Invoke
权限可以访问Amazon ParallelCluster特征。有关更多信息,请参阅使用 API 网关资源策略控制 API 的访问权限在API 网关开发者指南。警告
的
ParallelClusterApiUserRole
有权调用全部Amazon ParallelClusterAPI 操作。要限制对一部分 API 资源的访问权限,请参阅使用 IAM 策略控制谁可以调用 API 网关 API 方法在API 网关开发者指南。
更新 API
升级到更新的版本Amazon ParallelCluster版本
选项 1:通过删除相应的 API 来移除现有 APIAmazon CloudFormation堆叠并部署新的 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}
正在调用Amazon ParallelClusterAPI
的Amazon ParallelCluster亚马逊 API 网关终端节点配置为AWS_IAM
授权类型,并且要求所有请求都必须使用有效的 IAM 证书进行 Sigv4 签名 (API 参考:发出 http 请求)。
使用默认设置部署时,仅向使用 API 创建的默认 IAM 用户授予 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
要获取默认 IAM 用户的临时证书,请运行STS AssumeRole
你可以检索Amazon 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
的Amazon ParallelClusterAPI 可以由任何符合 OpenAPI 规范的 HTTP 客户端调用,可以在此处找到:
https://
<REGION>
-aws-parallelcluster.s3.<REGION>
.amazonaws.com/parallelcluster/<VERSION>
/api/ParallelCluster.openapi.yaml
请求需要按照文档进行 Sigv4 签名这里。
目前,我们不提供任何官方 API 客户端实现。但是,通过使用以下方法,可以轻松地从 OpenAPI 模型生成 API 客户端OpenAPI 生成器
Python API 客户端的参考实现可以在中找到Amazon ParallelCluster知识库
实施更高级的访问控制机制,例如 Amazon Cognito 或 Lambda 授权者,或者使用以下命令进一步保护 APIAmazon WAF或者 API 密钥,请按照亚马逊 API 网关文档。
警告
有权调用 IAM 用户Amazon ParallelClusterAPI,可以间接控制所有Amazon资源由Amazon ParallelCluster在Amazon Web Services 账户。这包括创建Amazon由于用户 IAM 策略的限制,用户无法直接控制这些资源。例如,创建一个Amazon ParallelCluster根据其配置,集群可能包括部署 Amazon EC2 实例、Amazon Route 53、亚马逊弹性文件系统文件系统、Amazon fSx 文件系统、IAM 角色和其他资源Amazon Web Services由Amazon 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
在配置文件中,然后手动将策略添加到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