

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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

** AWS ParallelCluster API란 무엇입니까?**

AWS ParallelCluster API는에 배포되면 API를 통해 AWS ParallelCluster 기능에 AWS 계정프로그래밍 방식으로 액세스할 수 있는 서버리스 애플리케이션입니다.

AWS ParallelCluster API는 기능을 노출하는 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 엔드포인트와 호출된 AWS ParallelCluster 기능을 처리하는 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 기능을 포함하는 독립형 [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 템플릿으로 배포됩니다.

다음 이미지는 AWS ParallelCluster API 인프라의 상위 수준 아키텍처 다이어그램을 보여줍니다.

 ![\[a high-level architecture diagram of the ParallelCluster API infrastructure\]](http://docs.aws.amazon.com/ko_kr/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가 모든 AWS 리전 (기본값) 또는 단일에서 리소스를 제어할 수 있는지 여부를 지정합니다 AWS 리전. 액세스를 제한하려면이 값을 API AWS 리전 가 배포 중인 로 설정합니다.
+ **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입니다. 하나의 정책만 지정할 수 있습니다.
+ 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에 최소 버전의 전송 계층 보안(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`. 이로 인해 API는 IAM 역할 또는 정책 생성이 필요한 작업을 처리할 수 없게 됩니다. 따라서 IAM 역할이 리소스 구성의 일부로 입력으로 제공되는 경우에만 클러스터 또는 사용자 지정 이미지를 성공적으로 생성할 수 있습니다.

  를 API로 `true` 설정하면 `EnableIamAdminAccess` 클러스터를 AWS ParallelCluster 배포하거나 사용자 지정 AMIs를 생성하는 데 필요한 IAM 역할 생성을 관리할 수 있는 권한이 부여됩니다.
**주의**  
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 역할에 대한 권한 경계로 설정되고 이 정책의 역할만 PC API에서 생성할 수 있도록 관리 IAM 권한의 조건으로 설정되는 기존 IAM 정책 ARN을 허용합니다.

  이 모드에서 부과되는 제한에 대한 자세한 내용은 [`PermissionsBoundary` 모드](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-permissionsboundary-mode)를 참조하세요.
+ **CreateApiUserRole** - 기본적으로 AWS ParallelCluster API 배포에는 API를 호출할 수 있는 유일한 역할로 설정된 IAM 역할 생성이 포함됩니다.  Amazon API Gateway 엔드포인트는 생성된 사용자에게만 호출 권한을 부여하도록 리소스 기반 정책 으로 구성됩니다. 이를 변경하려면 선택한 IAM 사용자에게 API 액세스 권한을 설정한 `CreateApiUserRole=false` 다음 부여합니다. 자세한 내용은 *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).
**주의**  
Amazon API Gateway 리소스 정책에 의해 API 엔드포인트에 대한 액세스가 제한되지 않는 경우 `CreateApiUserRole=true` 제약 `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>

이 섹션에서는 사용 가능한 두 옵션 중 하나를 사용하여 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로 생성한 기본 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](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 생성](https://openapi-generator.tech/)기를 사용하여 OpenAPI 모델에서 API 클라이언트를 쉽게 생성할 수 있습니다. 클라이언트가 생성되면 즉시 제공되지 않는 경우 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 클러스터 생성에는 구성에 따라 사용자가 직접 제어할 수 없는에서 AWS 서비스 사용하는 다른의 Amazon EC2 인스턴스, Amazon Route 53, Amazon Elastic File System 파일 시스템, Amazon FSx 파일 시스템, IAM 역할 및 리소스의 배포 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 로그 및 지표에 액세스
<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
```