Deprovision Workflow API
출처: 문서
본문
Deprovision Workflow API
워크플로가 더 이상 필요 없어지면 리소스를 디프로비저닝할 수 있어요. 리소스를 생성하는 대부분의 워크플로 스텝에는 그 작업을 되돌리는 스텝이 짝으로 마련되어 있어요. 워크플로를 위해 현재 생성된 모든 리소스를 조회하려면 Get Workflow Status API를 호출하세요. Deprovision Workflow API를 호출하면, Get Workflow Status API 응답의 resources_created 필드에 포함된 리소스가 해당 리소스를 프로비저닝했던 스텝에 대응하는 워크플로 스텝을 통해 제거돼요.
워크플로는 프로비저닝 스텝을 역순으로 실행해요. 아직 배포 중인 등록된 모델을 삭제하려는 시도처럼 리소스 의존성 때문에 실패가 발생하면, 삭제된 리소스가 하나라도 있는 한 워크플로는 실패한 스텝을 재시도해요.
데이터 손실을 막기 위해, create_index, create_search_pipeline, create_ingest_pipeline 스텝으로 생성된 리소스는 리소스 ID가 allow_delete 파라미터에 포함되어야 해요.
Endpoints
POST /_plugins/_flow_framework/workflow/{workflow_id}/_deprovision
Path 파라미터
다음 표는 사용할 수 있는 path 파라미터를 정리한 거예요.
| 파라미터 | 데이터 타입 | 설명 |
|---|---|---|
workflow_id |
String | 디프로비저닝하려는 워크플로의 ID예요. 필수 항목이에요. |
allow-delete |
String | 디프로비저닝할 리소스 ID를 쉼표로 구분한 목록이에요. index_name 또는 pipeline_id 타입의 리소스를 삭제할 때는 필수예요. |
요청 예제
POST /_plugins/_flow_framework/workflow/8xL8bowB8y25Tqfenm50/_deprovision
{% include copy-curl.html %}
응답 예제
디프로비저닝이 성공하면 OpenSearch는 요청에 사용된 것과 동일한 workflow_id로 응답해요:
{
"workflow_id" : "8xL8bowB8y25Tqfenm50"
}
디프로비저닝이 모든 리소스를 완전히 제거하지 못했다면, OpenSearch는 202 (ACCEPTED) 상태로 응답하면서 디프로비저닝되지 않은 리소스를 알려줘요:
{
"error": "Failed to deprovision some resources: [connector_id Lw7PX4wBfVtHp98y06wV]."
}
어떤 경우에는 제거되는 데 시간이 걸린 다른 의존 리소스 때문에 실패가 발생하기도 해요. 이런 경우에는 같은 요청을 다시 보내 보면 돼요. {: .tip}
디프로비저닝에 allow_delete 파라미터가 필요했다면, OpenSearch는 403 (FORBIDDEN) 상태로 응답하면서 디프로비저닝되지 않은 리소스를 알려줘요:
{
"error": "These resources require the allow_delete parameter to deprovision: [index_name my-index]."
}
에러 응답의 요약보다 더 자세한 디프로비저닝 상태를 확인하고 싶다면 Get Workflow Status API를 조회하세요.
성공하면 워크플로는 NOT_STARTED 상태로 돌아가요. 아직 제거되지 않은 리소스가 있다면 응답에 그 리소스들이 표시돼요.