

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS ParallelCluster API
<a name="api-reference-v3"></a>

** AWS ParallelCluster API とは**

AWS ParallelCluster API はサーバーレスアプリケーションであり、 にデプロイされると AWS アカウント、 API を介して AWS ParallelCluster 機能へのプログラムによるアクセスを提供します。

AWS ParallelCluster API は、Amazon API Gateway エンドポイントを含む自己完結型[CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)テンプレートとして配布されます。Amazon API Gateway エンドポイントは、 AWS ParallelCluster 機能を公開し、 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)関数は、呼び出した機能を処理します。 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 

次の図は、 AWS ParallelCluster API インフラストラクチャの概要アーキテクチャ図を示しています。

 ![\[a high-level architecture diagram of the ParallelCluster API infrastructure\]](http://docs.aws.amazon.com/ja_jp/parallelcluster/latest/ug/images/API-Architecture-r2.png) 

## AWS ParallelCluster API ドキュメント
<a name="api-reference-documentation-v3"></a>

 AWS ParallelCluster API を記述する OpenAPI 仕様ファイルは、以下からダウンロードできます。

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

OpenAPI 仕様ファイルから、[Swagger UI ](https://swagger.io/tools/swagger-ui/)や [Redoc](https://github.com/Redocly/redoc) などの多くの利用可能なツールのいずれかを使用して、 AWS ParallelCluster API のドキュメントを生成できます。

** AWS ParallelCluster API をデプロイする方法**

 AWS ParallelCluster API をデプロイするには、 の管理者である必要があります AWS アカウント。

API のデプロイに使用したテンプレートは、以下の URL から入手できます。

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

ここで、 `<REGION>` は API をデプロイする必要がある AWS リージョン で、 `<VERSION>`は AWS ParallelCluster バージョン (例: 3.15.0) です。

AWS Lambda は、 で Lambda レイヤーインターフェイス[AWS ParallelCluster Python ライブラリ API](pc-py-library-v3.md)を使用して API で呼び出された機能を処理します。

**警告**  
 AWS Lambda または Amazon API Gateway サービスへの特権アクセスを持つ のユーザーは AWS アカウント、 AWS ParallelCluster API リソースを管理するアクセス許可を自動的に継承します。

# を使用して AWS ParallelCluster API をデプロイする AWS CLI
<a name="api-reference-deploy-v3"></a>

このセクションでは、 を使用してデプロイする方法について説明します AWS CLI。

CLI AWS で使用する認証情報をまだ設定していない場合は、設定します。

```
$ aws configure
```

以下のコマンドを実行して、API をデプロイします。

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

**デプロイのカスタマイズ**

テンプレートによって公開されている CloudFormation パラメータを使用して、API デプロイをカスタマイズできます。CLI を使用してデプロイするときにパラメータの値を設定するには、次のオプションを使用できます： `--parameters ParameterKey=KeyName,ParameterValue=Value`。

以下のパラメータはオプションです。
+ **リージョン**  `Region` - パラメータを使用して、API が all AWS リージョン (デフォルト) または 1 つの でリソースを制御できるかどうかを指定します AWS リージョン。アクセスを制限するために AWS リージョン 、この値を API がデプロイされている に設定します。
+ **ParallelClusterFunctionRole** - 機能を実装する AWS Lambda 関数に割り当てられた IAM ロールを上書きします AWS ParallelCluster 。パラメータは、IAM ロールの ARN を受け取ります。このロールは、IAM プリンシパル AWS Lambda として を持つように設定する必要があります。また、このロールは API Lambda 関数のデフォルトロールを置き換えるため、 にリストされている API に必要なデフォルトのアクセス許可が少なくとも必要です[AWS ParallelCluster `pcluster` ユーザーポリシーの例](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies)。
+ **ParallelClusterFunctionAdditionalPolicies** - AWS ParallelCluster API 関数ロールにアタッチされる追加の IAM ポリシーの ARN。指定できるポリシーは 1 つだけです。
+ **CustomDomainName, CustomDomainCertificate, CustomDomainHostedZoneId** - これらのパラメータを使用して、Amazon API Gateway のエンドポイントにカスタムドメインを設定することができます。`CustomDomainName` は使用するドメインの名前、`CustomDomainCertificate` はこのドメイン名に対する AWS マネージド証明書の ARN、`CustomDomainHostedZoneId` はレコードを作成する [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ホストゾーンの ID です。
**警告**  
API に最低限の Transport Layer Security (TLS) バージョンを強制適用するようにカスタムドメイン設定を構成できます。詳細については、「[API Gateway におけるカスタムドメインの TLS の最小バージョンの選択](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-custom-domain-tls-version.html)」を参照してください。
+ **EnableIamAdminAccess** - デフォルトでは、 AWS Lambda AWS ParallelCluster API オペレーションを処理する関数には、特権 IAM アクセス () を禁止する IAM ロールが設定されています`EnableIamAdminAccess=false`。このため、IAM ロールやポリシーの作成を必要とするオペレーションを API で処理することができません。このため、クラスターやカスタムイメージの作成は、IAM ロールがリソース構成のインプットの場合にのみ可能です。

  が API `EnableIamAdminAccess` に `true` 設定されている場合、 AWS ParallelCluster クラスターのデプロイまたはカスタム AMIs。
**警告**  
これを true に設定すると、 AWS ParallelCluster オペレーションを処理する AWS Lambda 関数に IAM 管理者権限が付与されます。

  このモードを有効にするときにロック解除できる機能の詳細については、[AWS ParallelCluster IAM リソースを管理するためのユーザーポリシーの例](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-user-policy-manage-iam) 「」を参照してください。
+ **PermissionsBoundaryPolicy** - このオプションのパラメータは、PC API インフラストラクチャで作成するすべての IAM ロールのアクセス許可の境界として、および管理 IAM アクセス許可の条件として、設定される既存の IAM ポリシー ARN を受け入れ、このポリシーを持つロールのみを PC API によって作成できるようにします。

  このモードによる制限の詳細については、「[`PermissionsBoundary` モード](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-permissionsboundary-mode)」を参照してください。
+ **CreateApiUserRole** - デフォルトでは、 AWS ParallelCluster API のデプロイには、API の呼び出しを許可された唯一のロールとして設定された IAM ロールの作成が含まれます。Amazon API Gateway  エンドポイントには  、作成されたユーザーのみに呼び出しアクセス許可を付与するようにリソースベースのポリシーが設定されています。これ を変更するには、 を設定し `CreateApiUserRole=false` 、選択した IAM ユーザーに API アクセスを付与します。詳細については、*Amazon API Gateway * [ API Gateway デベロッパーガイド」の「API を呼び出すためのアクセスを制御する](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html)」を参照してください。
**警告**  
API `CreateApiUserRole=true` エンドポイントへのアクセスが Amazon API Gateway リソースポリシーによって制限されていない場合、制約 `execute-api:Invoke` のないアクセス許可を持つ すべての IAM ロールが AWS ParallelCluster 機能にアクセスできます。詳細については、[「 API Gateway デベロッパーガイド」の「API Gateway リソースポリシーを使用した API へのアクセスの制御](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies.html)」を参照してください。 **
**警告**  
`ParallelClusterApiUserRole` は、すべての AWS ParallelCluster API オペレーションに対する呼び出し権限を有しています。API リソースのサブセットへのアクセスを制限するには、[「API Gateway デベロッパーガイド」の「IAM ポリシーを使用して API Gateway API メソッドを呼び出すことができるユーザーを制御する](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html#api-gateway-who-can-invoke-an-api-method-using-iam-policies)」を参照してください。 **
+ **IAMRoleAndPolicyPrefix** - このオプションパラメータは、PC API インフラストラクチャの一部として作成された IAM ロールとポリシーの両方のプレフィックスとして使用される最大 10 文字の文字列を受け入れます。

# API の更新
<a name="api-reference-update-v3"></a>

このセクションでは、使用可能な 2 つのオプションのいずれかを使用して API を更新する方法について説明します。

**新しい AWS ParallelCluster バージョンへのアップグレード**

オプション 1: 既存の API を削除するには、対応する CloudFormation スタックを削除し、上記のように新しい API をデプロイします。

オプション 2: 既存の API を更新するには、次のコマンドを実行します。

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

# AWS ParallelCluster API の呼び出し
<a name="api-reference-invoke-v3"></a>

 AWS ParallelCluster Amazon API Gateway エンドポイントは[`AWS_IAM`認可タイプ](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html#api-gateway-control-access-iam-permissions-model-for-calling-api)に設定されているため、すべてのリクエストに有効な IAM 認証情報による SigV4 署名が必要となります ([API リファレンス: http リクエストの作成](https://docs.aws.amazon.com/apigateway/api-reference/making-http-requests/))。

デフォルトの設定でデプロイされた場合、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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html) コマンドを実行します。

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

[ここ](https://docs.aws.amazon.com/apigateway/api-reference/signing-requests)のドキュメントにある通り、リクエストには SigV4 署名が必要です。

現時点では、公式な API クライアントの実装はありません。ただし、[OpenAPI Generator](https://openapi-generator.tech/) を使用して、OpenAPI モデルから API OpenAPI クライアントを簡単に生成できます。クライアントが生成されたら、すぐに提供されない場合は SigV4 署名を追加する必要があります。

Python API クライアントのリファレンス実装は、[AWS ParallelCluster のリポジトリ](https://github.com/aws/aws-parallelcluster/tree/develop/api/client/src)にあります。Python API クライアントの使い方については、「[AWS ParallelCluster API の使用](tutorials_06_API_use.md) チュートリアル」を参照してください。

Amazon Cognito や Lambda オーソライザーなどのより高度なアクセスコントロールメカニズムを実装したり、 AWS WAF または API キーを使用して API をさらに保護したりするには、[Amazon API Gateway のドキュメント](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html)に従ってください。

**警告**  
 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 ParallelCluster ユーザーが直接制御できない他の AWS のサービス のリソースのデプロイが含まれる場合があります。

**警告**  
設定で`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 ログとメトリクスへのアクセス
<a name="api-reference-access-v3"></a>

API ログは Amazon 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 のメトリクス、ログ、[AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) トレースログは 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
```