

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

# 용 외부 엔진 AWS Service Catalog
<a name="external-engine"></a>

에서 AWS Service Catalog*외부 엔진*은 `EXTERNAL` 제품 유형을 통해 표현됩니다. `EXTERNAL` 제품 유형을 사용하면 Terraform과 같은 타사 프로비저닝 엔진을 통합할 수 있습니다. 외부 엔진을 사용하여 Service Catalog의 기능을 기본 AWS CloudFormation 템플릿 이상으로 확장하여 다른 코드형 구조(IaC) 도구를 사용할 수 있습니다.

`EXTERNAL` 제품 유형을 사용하면 선택한 IaC 도구의 특정 기능과 구문을 활용하면서 Service Catalog의 친숙한 인터페이스를 사용하여 리소스를 관리하고 배포할 수 있습니다.

Service Catalog에서 `EXTERNAL` 제품 유형을 활성화하려면 계정에서 표준 리소스 세트를 정의해야 합니다. 이러한 리소스를 *엔진*이라고 합니다. Service Catalog는 아티팩트 구문 분석 및 프로비저닝 작업의 특정 지점에서 엔진에 작업을 위임합니다.

*프로비저닝 아티팩트*는 Service Catalog 내의 특정 제품 버전을 나타내며, 이를 통해 일관된 리소스를 관리하고 배포할 수 있습니다.

`EXTERNAL` 제품 유형에 대한 프로비저닝 아티팩트에 대해 AWS Service Catalog의 [DescribeProvisioningArtifact](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningArtifact.html) 또는 [DescribeProvisioningParameters](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningParameters.html) 작업을 호출하면 Service Catalog가 엔진에서 AWS Lambda 함수를 호출합니다. 이는 제공된 프로비저닝 아티팩트에서 파라미터 목록을 추출하여에 반환하는 데 필요합니다 AWS Service Catalog. 이러한 파라미터는 나중에 프로비저닝 프로세스의 일부로 사용됩니다.

[ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html)를 호출하여 `EXTERNAL` 프로비저닝 아티팩트를 프로비저닝하면 Service Catalog는 먼저 내부적으로 일부 작업을 수행한 다음 엔진의 Amazon SQS 대기열에 메시지를 보냅니다. 다음으로 엔진은 제공된 *시작 역할*(시작 제약 조건으로 제품에 할당하는 IAM 역할)을 수임하고, 제공된 프로비저닝 아티팩트를 기반으로 리소스를 프로비저닝하고, [NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html) API를 호출하여 성공 또는 실패를 보고합니다.

[UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html) 및 [TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html)에 대한 호출은 비슷하게 처리되며, 각 호출에는 고유한 대기열과 알림 APIs.
+ [NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html)
+ [NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html)
+ [NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html).

**Topics**
+ [고려 사항](#external-engine-considerations)
+ [파라미터 구문 분석](#external-engine-parameters)
+ [프로비저닝](#external-engine-provisioning)
+ [업데이트 중](#external-engine-updating)
+ [종료](#external-engine-terminating)
+ [태그 지정](#external-engine-tagging)

## 고려 사항
<a name="external-engine-considerations"></a>

**허브 계정당 외부 엔진 1개의 제한**

Service Catalog 허브 계정당 `EXTERNAL` 하나의 프로비저닝 엔진만 사용할 수 있습니다. Service Catalog *hub-and-spoke* 모델을 사용하면 허브 계정이 기준 제품을 생성하고 포트폴리오를 공유하는 반면 스포크 계정은 포트폴리오를 가져오고 제품을 활용할 수 있습니다.

이 제한은가 계정의 엔진 하나로만 라우팅될 `EXTERNAL` 수 있기 때문입니다. 관리자가 여러 개의 외부 엔진을 보유하려는 경우 관리자는 다른 허브 계정에 외부 엔진( 포트폴리오 및 제품 포함)을 설정해야 합니다.

**외부 엔진은 시작 제약 조건이 있는 시작 역할만 지원합니다.**

`EXTERNAL` 프로비저닝 아티팩트는 시작 *제약 조건을* 사용하여 지정된 시작 역할을 사용한 프로비저닝만 지원합니다. 시작 제약 조건은 최종 사용자가 제품을 시작, 업데이트 또는 종료할 때 Service Catalog가 수임하는 IAM 역할을 지정합니다. 시작 제약 조건에 대한 자세한 내용은 [AWS Service Catalog 시작 제약 조건을 참조하세요](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html).

## 파라미터 구문 분석
<a name="external-engine-parameters"></a>

`EXTERNAL` 프로비저닝 아티팩트는 모든 형식일 수 있습니다. 즉, `EXTERNAL` 제품 유형을 생성할 때 엔진은 제공된 프로비저닝 아티팩트에서 파라미터 목록을 추출하여 Service Catalog로 반환해야 합니다. 이는 계정에서 다음 요청 형식을 수락하고, 프로비저닝 아티팩트를 처리하고, 다음 응답 형식을 반환할 수 있는 Lambda 함수를 생성하여 수행됩니다.

**중요**  
Lambda 함수의 이름은 이어야 합니다`ServiceCatalogExternalParameterParser`.

**요청 구문:**

```
{
    "artifact": {
        "path": "string",
        "type": "string"
    },
    "launchRoleArn": "string"
}
```


****  

| **필드** | **유형** | **필수** | **설명** | 
| --- | --- | --- | --- | 
| 아티팩트 | 객체 | 예 | 구문 분석할 아티팩트에 대한 세부 정보입니다. | 
| 아티팩트/경로 | 문자열 | 예 | 파서가 아티팩트를 다운로드하는 위치입니다. 예를 들어의 경우 Amazon S3 URIAWS\$1S3입니다. | 
| 아티팩트/유형 | 문자열 | 예 | 아티팩트의 유형입니다. 허용되는 값: AWS\$1S3. | 
| launchRole | 문자열 | No | 아티팩트를 다운로드할 때 수임할 시작 역할의 Amazon 리소스 이름(ARN)입니다. 시작 역할이 제공되지 않으면 Lambda의 실행 역할이 사용됩니다. | 

**응답 구문:**

```
{
    "parameters": [
        {
            "key": "string"
            "defaultValue": "string",
            "type": "string",
            "description": "string",
            "isNoEcho": boolean
        },
    ]
}
```


****  

| **필드** | **유형** | **필수** | **설명** | 
| --- | --- | --- | --- | 
| parameters | 목록 | 예 | 제품을 프로비저닝하거나 프로비저닝된 제품을 업데이트할 때 Service Catalog가 최종 사용자에게 제공하도록 요청하는 파라미터 목록입니다. 아티팩트에 파라미터가 정의되지 않은 경우 빈 목록이 반환됩니다. | 
| 키 | 문자열 | 예 | 파라미터 키입니다. | 
| defaultValue | 문자열 | No | 최종 사용자가 값을 제공하지 않는 경우 파라미터의 기본값입니다. | 
| type | 문자열 | 예 | 엔진에 대한 파라미터 값의 예상 유형입니다. 예를 들어 문자열, 부울 또는 맵입니다. 허용되는 값은 각 엔진마다 다릅니다. Service Catalog는 각 파라미터 값을 엔진에 문자열로 전달합니다. | 
| description | 문자열 | No | 파라미터에 대한 설명입니다. 사용자 친화적인 것이 좋습니다. | 
| isNoEcho | 부울 | 아니요 | 파라미터 값이 로그에서 에코되지 않는지 여부를 결정합니다. 기본값은 false입니다(파라미터 값이 에코됨). | 

## 프로비저닝
<a name="external-engine-provisioning"></a>

[ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html) 작업의 경우 Service Catalog는 엔진에 리소스의 실제 프로비저닝을 위임합니다. 엔진은 선택한 IaC 솔루션(예: Terraform)과 인터페이스하여 아티팩트에 정의된 대로 리소스를 프로비저닝하는 역할을 합니다. 또한 엔진은 Service Catalog에 결과를 알릴 책임이 있습니다.

Service Catalog는 모든 프로비저닝 요청을 계정의 Amazon SQS 대기열로 보냅니다`ServiceCatalogExternalProvisionOperationQueue`.

**요청 구문:**

```
{
    "token": "string",
    "operation": "string",
    "provisionedProductId": "string",
    "provisionedProductName": "string",
    "productId": "string",
    "provisioningArtifactId": "string",
    "recordId": "string",
    "launchRoleArn": "string",
    "artifact": {
        "path": "string",
        "type": "string"
    },
    "identity": {
        "principal": "string",
        "awsAccountId": "string",
        "organizationId": "string"
    },
    "parameters": [
        {
            "key": "string",
            "value": "string"
        }
    ],
    "tags": [
        {
            "key": "string",
            "value": "string"
        }
    ]
}
```


****  

| **필드** | **유형** | **필수** | **설명** | 
| --- | --- | --- | --- | 
| token | 문자열 | 예 | 이 작업을 식별하는 토큰입니다. 실행 결과를 알리려면 토큰을 Service Catalog에 반환해야 합니다. | 
| 작업 | 문자열 | 예 | 이 작업을 PROVISION\$1PRODUCT 수행하려면이 필드가 여야 합니다. | 
| provisionedProductId | 문자열 | 예 | 프로비저닝된 제품의 ID입니다. | 
| provisionedProductName | 문자열 | 예 | 프로비저닝된 제품의 이름입니다. | 
| productId | 문자열 | 예 | 제품의 ID입니다. | 
| provisioningArtifactId | 문자열 | 예 | 프로비저닝 아티팩트의 ID입니다. | 
| recordId | 문자열 | 예 | 이 작업에 대한 Service Catalog 레코드의 ID입니다. | 
| launchRoleArn | 문자열 | 예 | 리소스를 프로비저닝하는 데 사용할 IAM 역할의 Amazon 리소스 이름(ARN)입니다. | 
| 아티팩트 | 객체 | 예 | 리소스 프로비저닝 방법을 정의하는 아티팩트에 대한 세부 정보입니다. | 
| 아티팩트/경로 | 문자열 | 예 | 엔진이 아티팩트를 다운로드하는 위치입니다. 예를 들어의 경우 Amazon S3 URIAWS\$1S3입니다. | 
| 아티팩트/유형 | 문자열 | 예 | 아티팩트의 유형입니다. 허용되는 값: AWS\$1S3. | 
| identity | 문자열 | No | 필드는 현재 사용되지 않습니다. | 
| parameters | 목록 | 예 | 사용자가이 작업에 대한 입력으로 Service Catalog에 입력한 파라미터 키-값 페어 목록입니다. | 
| tags | 목록 | 예 | key-value-pairs합니다. | 

**워크플로 결과 알림:**

API 세부 정보 페이지에 지정된 응답 객체를 사용하여 [NotifyProvisionProductEngineWorkflowResult ](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult .html) API를 호출합니다.

## 업데이트 중
<a name="external-engine-updating"></a>

[UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html) 작업의 경우 Service Catalog는 실제 리소스 업데이트를 엔진에 위임합니다. 엔진은 선택한 IaC 솔루션(예: Terraform)과 아티팩트에 정의된 대로 리소스를 업데이트하는 작업을 담당합니다. 또한 엔진은 Service Catalog에 결과를 알릴 책임이 있습니다.

Service Catalog는 모든 업데이트 요청을 계정의 Amazon SQS 대기열로 보냅니다`ServiceCatalogExternalUpdateOperationQueue`.

**요청 구문:**

```
{
    "token": "string",
    "operation": "string",
    "provisionedProductId": "string",
    "provisionedProductName": "string",
    "productId": "string",
    "provisioningArtifactId": "string",
    "recordId": "string",
    "launchRoleArn": "string",
    "artifact": {
        "path": "string",
        "type": "string"
    },
    "identity": {
        "principal": "string",
        "awsAccountId": "string",
        "organizationId": "string"
    },
    "parameters": [
        {
            "key": "string",
            "value": "string"
        }
    ],
    "tags": [
        {
            "key": "string",
            "value": "string"
        }
    ]
}
```


****  

| **필드** | **유형** | **필수** | **설명** | 
| --- | --- | --- | --- | 
| token | 문자열 | 예 | 이 작업을 식별하는 토큰입니다. 실행 결과를 알리려면 토큰을 Service Catalog에 반환해야 합니다. | 
| 작업 | 문자열 | 예 | 이 작업을 UPDATE\$1PROVISION\$1PRODUCT 수행하려면이 필드가 여야 합니다. | 
| provisionedProductId | 문자열 | 예 | 프로비저닝된 제품의 ID입니다. | 
| provisionedProductName | 문자열 | 예 | 프로비저닝된 제품의 이름입니다. | 
| productId | 문자열 | 예 | 제품의 ID입니다. | 
| provisioningArtifactId | 문자열 | 예 | 프로비저닝 아티팩트의 ID입니다. | 
| recordId | 문자열 | 예 | 이 작업에 대한 Service Catalog 레코드의 ID입니다. | 
| launchRoleArn | 문자열 | 예 | 리소스를 프로비저닝하는 데 사용할 IAM 역할의 Amazon 리소스 이름(ARN)입니다. | 
| 아티팩트 | 객체 | 예 | 리소스 프로비저닝 방법을 정의하는 아티팩트에 대한 세부 정보입니다. | 
| 아티팩트/경로 | 문자열 | 예 | 엔진이 아티팩트를 다운로드하는 위치입니다. 예를 들어의 경우 Amazon S3 URIAWS\$1S3입니다. | 
| 아티팩트/유형 | 문자열 | 예 | 아티팩트의 유형입니다. 허용되는 값: AWS\$1S3. | 
| identity | 문자열 | No | 필드는 현재 사용되지 않습니다. | 
| parameters | 목록 | 예 | 사용자가이 작업에 대한 입력으로 Service Catalog에 입력한 파라미터 키-값 페어의 목록입니다. | 
| tags | 목록 | 예 | key-value-pairs합니다. | 

**워크플로 결과 알림:**

API 세부 정보 페이지에 지정된 응답 객체를 사용하여 [NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html) API를 호출합니다.

## 종료
<a name="external-engine-terminating"></a>

[TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html) 작업의 경우 Service Catalog는 리소스의 실제 종료를 엔진에 위임합니다. 엔진은 선택한 IaC 솔루션(예: Terraform)과 인터페이스하여 아티팩트에 정의된 대로 리소스를 종료하는 역할을 합니다. 또한 엔진은 Service Catalog에 결과를 알릴 책임이 있습니다.

Service Catalog는 모든 종료 요청을 계정의 Amazon SQS 대기열로 보냅니다`ServiceCatalogExternalTerminateOperationQueue`.

**요청 구문:**

```
{
    "token": "string",
    "operation": "string",
    "provisionedProductId": "string",
    "provisionedProductName": "string",
    "recordId": "string",
    "launchRoleArn": "string",
    "identity": {
        "principal": "string",
        "awsAccountId": "string",
        "organizationId": "string"
    }
}
```


****  

| **필드** | **유형** | **필수** | **설명** | 
| --- | --- | --- | --- | 
| token | 문자열 | 예 | 이 작업을 식별하는 토큰입니다. 실행 결과를 알리려면 토큰을 Service Catalog에 반환해야 합니다. | 
| 작업 | 문자열 | 예 | 이 작업을 TERMINATE\$1PROVISION\$1PRODUCT 수행하려면이 필드가 여야 합니다. | 
| provisionedProductId | 문자열 | 예 | 프로비저닝된 제품의 ID입니다. | 
| provisionedProductName | 문자열 | 예 | 프로비저닝된 제품의 이름입니다. | 
| recordId | 문자열 | 예 | 이 작업에 대한 Service Catalog 레코드의 ID입니다. | 
| launchRoleArn | 문자열 | 예 | 리소스를 프로비저닝하는 데 사용할 IAM 역할의 Amazon 리소스 이름(ARN)입니다. | 
| identity | 문자열 | No | 필드는 현재 사용되지 않습니다. | 

**워크플로 결과 알림:**

API 세부 정보 페이지에 지정된 응답 객체를 사용하여 [NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html) API를 호출합니다.

## 태그 지정
<a name="external-engine-tagging"></a>

Resource Groups를 통해 태그를 관리하려면 시작 역할에 다음과 같은 추가 권한 문이 필요합니다.

```
{
    "Effect": "Allow",
    "Action": [
        "resource-groups:CreateGroup",
        "resource-groups:ListGroupResources"
    ],
    "Resource": "*"
},
{
    "Effect": "Allow",
    "Action": [
        "tag:GetResources",
        "tag:GetTagKeys",
        "tag:GetTagValues",
        "tag:TagResources",
        "tag:UntagResources"
    ],
    "Resource": "*"
}
```

**참고**  
시작 역할에는와 같은 아티팩트의 특정 리소스에 대한 태그 지정 권한도 필요합니다`ec2:CreateTags`.