

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

# 문제 해결 AWS HealthLake
<a name="reference-healthlake-troubleshooting"></a>

다음 주제에서는 AWS CLI, AWS SDKs 또는 HealthLake 콘솔을 사용할 때 발생할 수 있는 오류 및 문제에 대한 문제 해결 조언을 제공합니다. 이 섹션에 나열되지 않은 문제가 발견되면이 페이지의 오른쪽 사이드바에 있는 **피드백 제공** 버튼을 사용하여 보고합니다.

**Topics**
+ [데이터 스토어 작업](#troubleshooting-data-store)
+ [가져오기 작업](#troubleshooting-import)
+ [FHIR APIs](#troubleshooting-fhir-apis)
+ [NLP 통합](#troubleshooting-nlp-integrations)
+ [SQL 통합](#troubleshooting-sql-integrations)

## 데이터 스토어 작업
<a name="troubleshooting-data-store"></a>

**문제:** * HealthLake 데이터 스토어를 생성하려고 하면 다음 오류가 발생합니다*.

```
AccessDeniedException: Insufficient Lake Formation permission(s): Required Database on Catalog
```

2022년 11월 14일에 HealthLake는 새 데이터 스토어를 생성하는 데 필요한 IAM 권한을 업데이트했습니다. 자세한 내용은 [HealthLake를 사용하도록 IAM 사용자 또는 역할 구성(IAM 관리자)](getting-started-setting-up.md#setting-up-configure-iam) 단원을 참조하십시오.

**문제: ** * AWS SDKs를 사용하여 HealthLake 데이터 스토어를 생성할 때 데이터 스토어 생성 상태는 예외 또는 알 수 없음 상태를 반환합니다.*

`DescribeFHIRDatastore` 또는 `ListFHIRDatastores` API 호출에서 예외 또는 알 수 없는 데이터 스토어 상태가 반환되는 경우 AWS SDK를 최신 버전으로 업데이트합니다.

## 가져오기 작업
<a name="troubleshooting-import"></a>

**문제: ** *데이터가 FHIR R4 형식이 아닌 경우에도 HealthLake를 계속 사용할 수 있나요?*

FHIR R4 형식의 데이터만 HealthLake 데이터 스토어로 가져올 수 있습니다. 기존 상태 데이터를 FHIR R4 형식으로 변환하는 데 도움이 될 수 있는 파트너 목록은 [AWS HealthLake 파트너를](https://docs.aws.amazon.com/healthlake/partners/) 참조하세요.

**문제:** *FHIR 가져오기 작업이 실패한 이유는 무엇입니까?*

가져오기 작업이 성공하면 `.ndjson` 형식의 결과(출력 로그)가 있는 폴더가 생성되지만 개별 레코드를 가져오지 못할 수 있습니다. 이 경우 가져오기에 실패한 레코드 매니페스트와 함께 두 번째 `FAILURE` 폴더가 생성됩니다. 자세한 내용은 [를 사용하여 FHIR 데이터 가져오기 AWS HealthLake](importing-fhir-data.md) 단원을 참조하십시오.

가져오기 작업이 실패한 이유를 분석하려면 `DescribeFHIRImportJob` API를 사용하여 JobProperties를 분석합니다. 다음은 권장됩니다.
+ 상태가 `FAILED` 이고 메시지가 있는 경우 실패는 입력 데이터 크기 또는 HealthLake 할당량을 초과하는 입력 파일 수와 같은 작업 파라미터와 관련이 있습니다.
+ 가져오기 작업 상태가 인 경우 매니페스트 파일에서 성공적으로 가져오지 못한 파일에 `manifest.json`대한 정보를 `COMPLETED_WITH_ERRORS`확인합니다.
+ 가져오기 작업 상태가 `FAILED` 이고 메시지가 없는 경우 작업 출력 위치로 이동하여 매니페스트 파일에 액세스합니다`manifest.json`.

 각 입력 파일에 대해 가져오기에 실패한 리소스에 대한 입력 파일 이름이 있는 실패 출력 파일이 있습니다. 응답에는 입력 데이터의 위치에 해당하는 줄 번호(lineId), FHIR 응답 객체(UpdateResourceResponse) 및 응답의 상태 코드(statusCode)가 포함됩니다.

샘플 출력 파일은 다음과 유사할 수 있습니다.

```
{"lineId":3, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"1 validation error detected: Value 'Patient123' at 'resourceType' failed to satisfy constraint: Member must satisfy regular expression pattern: [A-Za-z]{1,256}"}]}, "statusCode":400}
{"lineId":5, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"This property must be an simple value, not a com.google.gson.JsonArray","location":["/EffectEvidenceSynthesis/name"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@telecom'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@gender'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@birthDate'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@address'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@maritalStatus'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@multipleBirthBoolean'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@communication'","location":["/EffectEvidenceSynthesis"]},{"severity":"warning","code":"processing","diagnostics":"Name should be usable as an identifier for the module by machine processing applications such as code generation [name.matches('[A-Z]([A-Za-z0-9_]){0,254}')]","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.status': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.population': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.exposure': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.exposureAlternative': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.outcome': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"information","code":"processing","diagnostics":"Unknown extension http://synthetichealth.github.io/synthea/disability-adjusted-life-years","location":["EffectEvidenceSynthesis.extension[3]"]},{"severity":"information","code":"processing","diagnostics":"Unknown extension http://synthetichealth.github.io/synthea/quality-adjusted-life-years","location":["EffectEvidenceSynthesis.extension[4]"]}]}, "statusCode":400}
{"lineId":7, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"2 validation errors detected: Value at 'resourceId' failed to satisfy constraint: Member must satisfy regular expression pattern: [A-Za-z0-9-.]{1,64}; Value at 'resourceId' failed to satisfy constraint: Member must have length greater than or equal to 1"}]}, "statusCode":400}
{"lineId":9, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"Missing required id field in resource json"}]}, "statusCode":400}
{"lineId":15, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"Invalid JSON found in input file"}]}, "statusCode":400}
```

위 예제는 입력 파일의 해당 입력 행에서 3, 4, 7, 9, 15행에 오류가 있음을 보여줍니다. 이러한 각 줄에 대한 설명은 다음과 같습니다.
+ 3행에서 응답은 입력 파일의 3행에 `resourceType` 제공된가 유효하지 않다고 설명합니다.
+ 5행에서 응답은 입력 파일의 5행에 FHIR 검증 오류가 있음을 설명합니다.
+ 7행에서 응답은 입력으로 `resourceId` 제공된에 검증 문제가 있음을 설명합니다.
+ 9행에서 응답은 입력 파일에 유효한 리소스 ID가 포함되어야 한다고 설명합니다.
+ 15행에서 입력 파일의 응답은 파일이 유효한 JSON 형식이 아니라는 것입니다.

## FHIR APIs
<a name="troubleshooting-fhir-apis"></a>

**문제: ***FHIR RESTful APIs에 대한 권한 부여를 구현하려면 어떻게 해야 합니까?*

사용할 [데이터 스토어 권한 부여 전략](getting-started-concepts.md#concept-data-store-authorization-strategy)를 결정합니다.

를 사용하여 SigV4 권한 부여를 생성하려면 다음 예제와 유사한 스크립트를 AWS SDK for Python (Boto3)생성합니다.

```
import boto3
import requests
import json
from requests_auth_aws_sigv4 import AWSSigV4
 
# Set the input arguments
data_store_endpoint = 'https://healthlake.us-east-1.amazonaws.com/datastore/<datastore id>/r4//'
resource_path = "Patient"
requestBody = {"resourceType": "Patient", "active": True, "name": [{"use": "official","family": "Dow","given": ["Jen"]},{"use": "usual","given": ["Jen"]}],"gender": "female","birthDate": "1966-09-01"}
region = 'us-east-1'
 
#Frame the resource endpoint
resource_endpoint = data_store_endpoint+resource_path
session = boto3.session.Session(region_name=region)
client = session.client("healthlake")
 
# Frame authorization
auth = AWSSigV4("healthlake", session=session)
 
# Call data store FHIR endpoint using SigV4 auth

r = requests.post(resource_endpoint, json=requestBody, auth=auth, )
print(r.json())
```

**문제: ** *고객 관리형 KMS 키로 암호화된 데이터 스토어에 FHIR RESTful APIs를 사용할 때 `AccessDenied` 오류가 발생하는 이유는 무엇입니까?*

사용자 또는 역할이 데이터 스토어에 액세스하려면 고객 관리형 키와 IAM 정책 모두에 대한 권한이 필요합니다. 사용자는 고객 관리형 키를 사용하는 데 필요한 IAM 권한이 있어야 합니다. 사용자가 HealthLake에 고객 관리형 KMS 키를 사용할 수 있는 권한을 부여하는 권한을 취소하거나 사용 중지한 경우 HealthLake는 `AccessDenied` 오류를 반환합니다.

HealthLake에는 고객 데이터에 액세스하고, 데이터 스토어로 가져온 새 FHIR 리소스를 암호화하고, 요청 시 FHIR 리소스를 복호화할 수 있는 권한이 있어야 합니다. 자세한 내용은 [권한 문제 해결을 참조하세요 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html).

**문제: ** *10MB 문서를 사용하여 HealthLake에 대한 FHIR `POST` API 작업이 `413 Request Entity Too Large` 오류를 반환합니다.*

AWS HealthLake 에는 지연 시간 및 제한 시간 증가를 방지하기 위해 5MB의 동기식 생성 및 업데이트 API 제한이 있습니다. 대량 가져오기 API를 사용하여 `Binary` 리소스 유형을 사용하여 최대 164MB의 대용량 문서를 수집할 수 있습니다.

## NLP 통합
<a name="troubleshooting-nlp-integrations"></a>

**문제: ** * HealthLake의 통합 자연어 처리 기능을 켜려면 어떻게 해야 합니까?*

2022년 11월 14일부터 HealthLake 데이터 스토어의 기본 동작이 변경되었습니다.

**현재 데이터 스토어**: 현재 모든 HealthLake 데이터 스토어는 base64 인코딩 `DocumentReference` 리소스에서 자연어 처리(NLP) 사용을 중단합니다. 즉, 새 `DocumentReference` 리소스는 NLP를 사용하여 분석되지 않으며 리소스 유형의 텍스트를 기반으로 새 `DocumentReference` 리소스가 생성되지 않습니다. 기존 `DocumentReference` 리소스의 경우 NLP를 통해 생성된 데이터 및 리소스는 남아 있지만 2023년 2월 20일 이후에는 업데이트되지 않습니다.

**새 데이터 스토어**: 2023년 2월 20일 이후에 생성된 HealthLake 데이터 스토어는 base64 인코딩 `DocumentReference` 리소스에서 자연어 처리(NLP)를 수행하지 *않습니다*.

HealthLake NLP 통합을 켜려면를 사용하여 지원 사례를 생성합니다[AWS Support Center Console](https://console.aws.amazon.com/support/home#/). 사례를 생성하려면에 로그인 AWS 계정한 다음 **사례 생성을** 선택합니다. 사례 및 사례 관리 생성에 대한 자세한 내용은 *지원 사용 설명서*의 [지원 사례 및 사례 관리 생성을](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html) 참조하세요.

**문제:** *>통합 NLP에서 처리할 수 없는 `DocumentReference` 리소스를 찾으려면 어떻게 해야 합니까?*

`DocumentReference` 리소스가 유효하지 않은 경우 HealthLake는 통합 의료 NLP 출력에 제공하는 대신 검증 오류를 나타내는 확장을 제공합니다. NLP 처리 중에 검증 오류가 발생한 `DocumentReference` 리소스를 찾으려면 검색 키 **cm-decoration-status** 및 검색 값 **VALIDATION\$1ERROR**과 함께 HealthLake의 FHIR `search` 함수를 사용할 수 있습니다. 이 검색에는 오류의 특성을 설명하는 오류 메시지와 함께 검증 오류가 발생한 모든 `DocumentReference` 리소스가 나열됩니다. 검증 오류가 있는 `DocumentReference` 리소스의 확장 필드 구조는 다음 예제와 유사합니다.

```
"extension": [
          {
              "extension": [
                  {
                      "url": "http://healthlake.amazonaws.com/aws-cm/status/",
                      "valueString": "VALIDATION_ERROR"
                  },
                  {
                      "url": "http://healthlake.amazonaws.com/aws-cm/message/",
                      "valueString": "Resource led to too many nested objects after NLP operation processed the document. 10937 nested objects exceeds the limit of 10000."
                  }
              ],
              "url": "http://healthlake.amazonaws.com/aws-cm/"
          }
    ]
```

**참고**  
NLP 데코레이션이 10,000개 이상의 중첩 객체를 생성하는 경우에도가 발생할 `VALIDATION_ERROR` 수 있습니다. 이 경우 처리 전에 문서를 더 작은 문서로 분할해야 합니다.

## SQL 통합
<a name="troubleshooting-sql-integrations"></a>

**문제: ** *새 데이터 레이크 관리자를 추가할 `permissions error: lakeformation:PutDataLakeSettings` 때 Lake Formation을 받는 이유는 무엇입니까?*

IAM 사용자 또는 역할에 `AWSLakeFormationDataAdmin` AWS 관리형 정책이 포함된 경우 새 데이터 레이크 관리자를 추가할 수 없습니다. 다음을 포함하는 오류가 발생합니다.

```
User arn:aws:sts::111122223333:assumed-role/lakeformation-admin-user is not authorized to perform: lakeformation:PutDataLakeSettings on resource: arn:aws:lakeformation:us-east-2:111122223333:catalog:111122223333 with an explicit deny in an identity-based policy
```

 AWS 관리형 정책은 IAM 사용자 또는 역할을 AWS Lake Formation 데이터 레이크 관리자로 추가하는 데 `AdministratorAccess` 필요합니다. IAM 사용자 또는 역할에도 `AWSLakeFormationDataAdmin` 작업이 포함된 경우 작업이 실패합니다. `AWSLakeFormationDataAdmin` AWS 관리형 정책에는 AWS Lake Formation API 작업에 대한 명시적 거부가 포함되어 있습니다`PutDataLakeSetting`. `AdministratorAccess` 관리형 정책을 AWS 사용하여에 대한 전체 액세스 권한이 있는 관리자도 `AWSLakeFormationDataAdmin` 정책에 의해 제한될 수 있습니다.

**문제: ** * Amazon Athena SQL 통합을 사용하도록 기존 HealthLake 데이터 스토어를 마이그레이션하려면 어떻게 해야 합니까?*

2022년 11월 14일 이전에 생성된 HealthLake 데이터 스토어는 작동하지만 SQL을 사용하여 Athena에서 쿼리할 수 없습니다. Athena를 사용하여 기존 데이터 스토어를 쿼리하려면 먼저 새 데이터 스토어로 마이그레이션해야 합니다.

**HealthLake 데이터를 새 데이터 스토어로 마이그레이션하려면**

1. 새 데이터 스토어를 생성합니다.

1. 기존의 데이터를 Amazon S3 버킷으로 내보냅니다.

1. Amazon S3 버킷에서 새 데이터 스토어로 데이터를 가져옵니다.

**참고**  
Amazon S3 버킷으로 데이터를 내보내면 추가 요금이 발생합니다. 추가 요금은 내보내는 데이터의 크기에 따라 달라집니다.

**문제: ** *SQL 통합을 위한 새 HealthLake 데이터 스토어를 생성할 때 데이터 스토어 상태가에서 변경되지 않습니다`Creating`.*

새 HealthLake 데이터 스토어를 생성하려고 하는데 데이터 스토어 상태가 **생성**에서 변경되지 않는 경우를 사용하도록 Athena를 업데이트해야 합니다 AWS Glue Data Catalog. 자세한 내용은 *Amazon Athena 사용 설명서*[의 AWS Glue 데이터 카탈로그로 step-by-step 업그레이드를](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) 참조하세요.

를 성공적으로 업그레이드 AWS Glue Data Catalog한 후 HealthLake 데이터 스토어를 생성할 수 있습니다.

이전 HealthLake 데이터 스토어를 제거하려면를 사용하여 지원 사례를 생성합니다[AWS Support Center Console](https://console.aws.amazon.com/support/home#/). 사례를 생성하려면에 로그인한 AWS 계정다음 **사례 생성을** 선택합니다. 자세한 내용은 *지원 사용 설명서*의 [지원 사례 및 사례 관리 생성을](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html) 참조하세요.

**문제: ** 데이터를 *새 HealthLake 데이터 스토어로 가져온 후 Athena 콘솔이 작동하지 않음*

데이터를 새 HealthLake 데이터 스토어로 가져온 후에는 데이터를 즉시 사용하지 못할 수 있습니다. 이는 데이터가 Apache Iceberg 테이블로 수집될 시간을 허용하기 위한 것입니다. 나중에 다시 시도하세요.

**문제: ** *Athena의 검색 결과를 다른 AWS 서비스에 연결하려면 어떻게 해야 하나요?*

Athena의 검색 결과를 다른 AWS 서비스와 공유할 때 SQL 검색 쿼리의 `json_extract[1]` 일부로를 사용할 때 문제가 발생할 수 있습니다. 이 문제를 해결하려면를 로 업데이트해야 합니다`CATVAR`.

저장 결과, **테이블**(정적) 또는 **보기**(동적)를 **생성**하려고 할 때이 문제가 발생할 수 있습니다.