기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
문제 해결 AWS HealthLake
다음 주제에서는 AWS CLI, AWS SDKs 또는 HealthLake 콘솔을 사용할 때 발생할 수 있는 오류 및 문제에 대한 문제 해결 조언을 제공합니다. 이 섹션에 나열되지 않은 문제가 발견되면이 페이지의 오른쪽 사이드바에 있는 피드백 제공 버튼을 사용하여 보고합니다.
데이터 스토어 작업
문제: HealthLake 데이터 스토어를 생성하려고 하면 다음 오류가 발생합니다.
AccessDeniedException: Insufficient Lake Formation permission(s): Required Database on Catalog
2022년 11월 14일에 HealthLake는 새 데이터 스토어를 생성하는 데 필요한 IAM 권한을 업데이트했습니다. 자세한 내용은 HealthLake를 사용하도록 IAM 사용자 또는 역할 구성(IAM 관리자) 단원을 참조하십시오.
문제: AWS SDKs를 사용하여 HealthLake 데이터 스토어를 생성할 때 데이터 스토어 생성 상태는 예외 또는 알 수 없음 상태를 반환합니다.
DescribeFHIRDatastore 또는 ListFHIRDatastores API 호출이 예외 또는 알 수 없는 데이터 스토어 상태를 반환하는 경우 AWS SDK를 최신 버전으로 업데이트합니다.
가져오기 작업
문제: 데이터가 FHIR R4 형식이 아닌 경우에도 HealthLake를 계속 사용할 수 있나요?
FHIR R4 형식의 데이터만 HealthLake 데이터 스토어로 가져올 수 있습니다. 기존 상태 데이터를 FHIR R4 형식으로 변환하는 데 도움이 될 수 있는 파트너 목록은 AWS HealthLake 파트너를 참조하세요.
문제: FHIR 가져오기 작업이 실패한 이유는 무엇입니까?
가져오기 작업이 성공하면 .ndjson 형식의 결과(출력 로그)가 있는 폴더가 생성되지만 개별 레코드를 가져오지 못할 수 있습니다. 이 경우 가져오기에 실패한 레코드 매니페스트와 함께 두 번째 FAILURE 폴더가 생성됩니다. 자세한 내용은 를 사용하여 FHIR 데이터 가져오기 AWS HealthLake 단원을 참조하십시오.
가져오기 작업이 실패한 이유를 분석하려면 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
문제: FHIR RESTful APIs에 대한 권한 부여를 구현하려면 어떻게 해야 합니까?
사용할 데이터 스토어 권한 부여 전략를 결정합니다.
를 사용하여 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.
문제: 10MB 문서를 사용하여 HealthLake에 대한 FHIR POST API 작업이 413 Request Entity Too Large 오류를 반환합니다.
AWS HealthLake 에는 지연 시간 및 제한 시간 증가를 방지하기 위해 5MB의 동기식 생성 및 업데이트 API 제한이 있습니다. 대량 가져오기 API를 사용하여 Binary 리소스 유형을 사용하여 최대 164MB의 대용량 문서를 수집할 수 있습니다.
NLP 통합
문제: 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
문제: >통합 NLP에서 처리할 수 없는 DocumentReference 리소스를 찾으려면 어떻게 해야 합니까?
DocumentReference 리소스가 유효하지 않은 경우 HealthLake는 통합 의료 NLP 출력에 제공하는 대신 검증 오류를 나타내는 확장을 제공합니다. NLP 처리 중에 검증 오류가 발생한 DocumentReference 리소스를 찾으려면 검색 키 cm-decoration-status 및 검색 값 VALIDATION_ERROR과 함께 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 통합
문제: 새 데이터 레이크 관리자를 추가할 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 데이터를 새 데이터 스토어로 마이그레이션하려면
-
새 데이터 스토어를 생성합니다.
-
기존의 데이터를 Amazon S3 버킷으로 내보냅니다.
-
Amazon S3 버킷에서 새 데이터 스토어로 데이터를 가져옵니다.
참고
Amazon S3 버킷으로 데이터를 내보내면 추가 요금이 발생합니다. 추가 요금은 내보내는 데이터의 크기에 따라 달라집니다.
문제: SQL 통합을 위한 새 HealthLake 데이터 스토어를 생성할 때 데이터 스토어 상태가에서 변경되지 않습니다Creating.
새 HealthLake 데이터 스토어를 생성하려고 하는데 데이터 스토어 상태가 생성에서 변경되지 않는 경우를 사용하도록 Athena를 업데이트해야 합니다 AWS Glue Data Catalog. 자세한 내용은 Amazon Athena 사용 설명서의 AWS Glue 데이터 카탈로그로 step-by-step 업그레이드를 참조하세요.
를 성공적으로 업그레이드 AWS Glue Data Catalog한 후 HealthLake 데이터 스토어를 생성할 수 있습니다.
이전 HealthLake 데이터 스토어를 제거하려면를 사용하여 지원 사례를 생성합니다AWS Support Center Console
문제: 데이터를 새 HealthLake 데이터 스토어로 가져온 후 Athena 콘솔이 작동하지 않음
데이터를 새 HealthLake 데이터 스토어로 가져온 후에는 데이터를 즉시 사용하지 못할 수 있습니다. 이는 데이터가 Apache Iceberg 테이블에 수집될 시간을 허용하기 위한 것입니다. 나중에 다시 시도하세요.
문제: Athena의 검색 결과를 다른 AWS 서비스에 연결하려면 어떻게 해야 하나요?
Athena의 검색 결과를 다른 AWS 서비스와 공유할 때 SQL 검색 쿼리의 json_extract[1] 일부로를 사용할 때 문제가 발생할 수 있습니다. 이 문제를 해결하려면를 로 업데이트해야 합니다CATVAR.
저장 결과, 테이블(정적) 또는 보기(동적)를 생성하려고 할 때이 문제가 발생할 수 있습니다.