

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 故障排除 AWS HealthLake
<a name="reference-healthlake-troubleshooting"></a>

以下主题针对您在使用、或 HealthLake 控制台时可能遇到的错误和问题提供了疑难解答建议。 AWS CLI AWS SDKs如果您发现本节中未列出的问题，请使用本页右侧边栏上的 “**提供反馈**” 按钮进行举报。

**Topics**
+ [数据存储操作](#troubleshooting-data-store)
+ [导入操作](#troubleshooting-import)
+ [FHIR APIs](#troubleshooting-fhir-apis)
+ [自然语言处理集成](#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 权限。有关更多信息，请参阅 [配置要使用的 IAM 用户或角色 HealthLake （IAM 管理员）](getting-started-setting-up.md#setting-up-configure-iam)。

**问题：***使用创建 HealthLake 数据存储时 AWS SDKs，数据存储创建状态会返回异常或未知状态。*

如果您的调用`DescribeFHIRDatastore`或 `ListFHIRDatastores` API 调用返回异常或未知数据存储状态，请将您的 AWS SDK 更新到最新版本。

## 导入操作
<a name="troubleshooting-import"></a>

**问题： HealthLake ***如果我的数据不是 FHIR R4 格式，我还能使用*吗？

只有 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 配额。
+ 如果导入任务状态为`COMPLETED_WITH_ERRORS`，请查看清单文件`manifest.json`，以了解哪些文件未成功导入。
+ 如果导入任务状态为`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 授权 适用于 Python (Boto3) 的 AWS SDK，请创建一个类似于以下示例的脚本。

```
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 权限。如果用户撤销或取消了授予使用客户托管的 KMS 密钥 HealthLake 权限的授权，则 HealthLake 会返回`AccessDenied`错误。

HealthLake 必须拥有访问客户数据、加密导入到数据存储的新 FHIR 资源以及在请求时解密 FHIR 资源的权限。有关更多信息，请参阅[AWS KMS 权限疑难解答](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html)。

**问题： HealthLake ***使用 10MB 文档的 FH `POST` IR API 操作返回了错误。`413 Request Entity Too Large`*

AWS HealthLake 同步创建和更新 API 限制为 5MB，以避免延迟和超时增加。您可以使用批量导入 API 使用`Binary`资源类型提取最大 164MB 的大型文档。

## 自然语言处理集成
<a name="troubleshooting-nlp-integrations"></a>

**问题：***如何开启 HealthLake集成的自然语言处理功能？*

自 2022 年 11 月 14 日起， HealthLake 数据存储的默认行为发生了变化。

**当前数据存储**：所有当前 HealthLake 的数据存储都将停止对 base64 `DocumentReference` 编码的资源使用自然语言处理 (NLP)。这意味着不会使用 NLP 分析新资源，也不会根据资源类型中的文本生成新`DocumentReference`资源。`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 个，也会出现 A `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 托管策略`AdministratorAccess`才能将 IAM 用户或角色添加为 AWS Lake Formation 数据湖管理员。如果您的 IAM 用户或角色也包含`AWSLakeFormationDataAdmin`该操作，则操作将失败。`AWSLakeFormationDataAdmin` AWS 托管策略包含对 La AWS ke Formation API 操作的明确拒绝`PutDataLakeSetting`。即使管理员拥有 AWS 使用`AdministratorAccess`托管策略的完全访问权限，也可能受到该`AWSLakeFormationDataAdmin`策略的限制。

**问题：***如何迁移现有 HealthLake 数据存储以使用 Amazon Athen* a SQL 集成？

HealthLake 2022 年 11 月 14 日之前创建的数据存储可以正常运行，但无法在 Athena 中使用 SQL 进行查询。要使用 Athena 查询先前存在的数据存储，必须先将其迁移到新的数据存储。

**将您的 HealthLake 数据迁移到新的数据存储**

1. 创建新的数据存储。

1. 将数据从先前存在的存储桶导出到 Amazon S3 存储桶。

1. 将数据从 Amazon S3 存储桶导入到新的数据存储中。

**注意**  
将数据导出到 Amazon S3 存储桶需要支付额外费用。额外费用取决于您导出的数据的大小。

**问题：为** *SQL 集成创建新的 HealthLake 数据存储时，数据存储状态未改变`Creating`。*

如果您尝试创建新的 HealthLake 数据存储，但您的数据存储状态未从 “正在**创建**” 发生变化，则需要更新 Athena 才能使用。 AWS Glue Data Catalog有关更多信息，请参阅*亚马逊 Athena AWS 用户指南 step-by-step中的升级到 Glue* [数据目录](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)。

**问题：***将数据导入新数据存储后，Athena 控制台无法正常工作 HealthLake *

将数据导入新的 HealthLake 数据存储后，这些数据可能无法立即使用。这是为了留出时间将数据提取到 Apache Iceberg 表中。请稍后再试。

**问题：***如何将 Athena 中的搜索结果连接到其他*服务？ AWS 

 AWS 与其他服务共享来自 Athena 的搜索结果时，当您将搜索结果`json_extract[1]`用作 SQL 搜索查询的一部分时，可能会出现问题。要修复此问题，必须更新到`CATVAR`。

在尝试**创建**保存结果、**表**（静态）或**视图**（动态）时，您可能会遇到此问题。