

# 对 S3 元数据进行故障排除
问题排查

使用以下信息可协助您诊断和修复在使用 Amazon S3 元数据时可能遇到的常见问题。

## 我无法删除我的 AWS 托管式表存储桶和元数据表


在删除元数据表之前，必须先删除通用存储桶中的关联元数据表配置。有关更多信息，请参阅 [删除元数据表配置](metadata-tables-delete-configuration.md)。

在删除 AWS 托管式表存储桶之前，必须先删除与此存储桶关联的所有元数据表配置以及该存储桶中的所有元数据表。有关更多信息，请参阅[删除元数据表配置](metadata-tables-delete-configuration.md)和[删除元数据表](metadata-tables-delete-table.md)。

## 我无法设置或更改我的 AWS 托管式元数据表的加密设置


创建元数据表配置时，可以选择通过使用 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）来加密 AWS 托管式元数据表。如果您选择使用 SSE-KMS，则必须提供与通用存储桶位于同一区域的客户自主管理型 KMS 密钥。只能在创建表的过程中为表设置加密类型。创建 AWS 托管式表后，无法更改其加密设置。要为元数据表指定 SSE-KMS，您必须具有特定的权限。有关更多信息，请参阅 [SSE-KMS 的权限](metadata-tables-permissions.md#metadata-kms-permissions)。

元数据表的加密设置优先于默认的存储桶级加密设置。如果不为表指定加密，它将继承存储桶中的默认加密设置。

默认情况下，AWS 托管式表存储桶通过使用 Amazon S3 托管式密钥的服务器端加密（SSE-S3）进行加密。创建第一个元数据配置后，可以将 AWS 托管式表存储桶的默认加密设置设为使用具有 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）。有关更多信息，请参阅 [Encryption for AWS managed table buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-aws-managed-buckets.html#aws-managed-buckets-encryption) 和[在表存储桶中指定具有 AWS KMS 密钥的服务器端加密（SSE-KMS）](s3-tables-kms-specify.md)。

## 当我尝试重新创建元数据表配置时，出现错误


删除元数据表配置仅删除配置。即使您删除元数据表配置，AWS 托管式表存储桶和元数据表也仍然存在。

如果删除元数据表配置，并想为同一个通用存储桶重新创建配置，则必须先从 AWS 托管式表存储桶中手动删除旧的日记表和清单表。否则，创建新的元数据表配置将失败，因为这些表已经存在。

要删除元数据表，请参阅[删除元数据表](metadata-tables-delete-table.md)。

## 我无法在配置中启用清单表


如果您在 2025 年 7 月 15 日之前创建了 S3 元数据配置，则无法对该配置启用清单表。我们建议您删除配置并重新创建配置，以便可以创建清单表并使日记表记录过期。有关更多信息，请参阅 [对在 2025 年 7 月 15 日之前创建的元数据配置启用清单表](metadata-tables-create-configuration.md#metadata-tables-migration)。

## 我无法在配置中启用日记表记录过期


如果您在 2025 年 7 月 15 日之前创建了 S3 元数据配置，则无法对该配置启用日记表记录过期。我们建议您删除配置并重新创建配置，以便可以使日记表记录过期并创建清单表。有关更多信息，请参阅 [对在 2025 年 7 月 15 日之前创建的元数据配置启用清单表](metadata-tables-create-configuration.md#metadata-tables-migration)。

## 我无法查询元数据表


如果您无法查询元数据表，请确认以下各项：
+ 当您使用 Amazon Athena 或 Amazon Redshift 查询元数据表时，必须用引号 (`"`) 或反勾号 (```) 将元数据表命名空间名称括起来，否则查询可能无法运行。
+ 在 Amazon EMR 或其它第三方引擎上使用 Apache Spark 查询元数据表时，建议您使用 Amazon S3 表类数据存储服务 Iceberg REST 端点。如果不使用此端点，查询可能无法成功运行。有关更多信息，请参阅 [使用 Amazon S3 表类数据存储服务 Iceberg REST 端点访问表](s3-tables-integrating-open-source.md)。
+ 确保您拥有查询元数据表的适当 AWS Identity and Access Management（IAM）权限。有关更多信息，请参阅 [用于查询元数据表的权限](metadata-tables-bucket-query-permissions.md)。
+ 如果您使用的是 Amazon Athena，但在尝试运行查询时收到错误，请执行以下操作：
  + 如果您在尝试在 Athena 中运行查询时收到错误“权限不足，无法执行查询。主体对指定的资源没有任何权限”，则必须向您授予对于表的必需 Lake Formation 权限。有关更多信息，请参阅 [授予对表或数据库的 Lake Formation 权限](grant-permissions-tables.md#grant-lf-table)。
  + 如果您在尝试运行查询时收到错误“Iceberg 无法访问所请求的资源”，请转到 AWS Lake Formation 控制台，并确保您已授予自己对您创建的表存储桶目录和数据库（命名空间）的权限。授予这些权限时请勿指定表。有关更多信息，请参阅 [授予对表或数据库的 Lake Formation 权限](grant-permissions-tables.md#grant-lf-table)。

## 我在尝试使用某些 S3 元数据 AWS CLI 命令和 API 操作时收到 405 错误


对 V2 元数据表配置调用 V1 `GetBucketMetadataTableConfiguration` API 操作或使用 `get-bucket-metadata-table-configuration` AWS Command Line Interface（AWS CLI）命令会导致 HTTP `405 Method Not Allowed` 错误。同样，调用 V1 `DeleteBucketMetadataTableConfiguration` API 操作或使用 `delete-bucket-metadata-table-configuration` AWS CLI 命令也会导致 405 错误。

可以对 V1 或 V2 元数据表配置使用 V2 `GetBucketMetadataConfiguration` API 操作或 `get-bucket-metadata-configuration` AWS CLI 命令。同样，可以对 V1 或 V2 元数据表配置使用 V2 `DeleteBucketMetadataConfiguration` API 操作或 `delete-bucket-metadata-configuration` AWS CLI 命令。

我们建议更新流程以使用新的 V2 API 操作（`CreateBucketMetadataConfiguration`、`GetBucketMetadataConfiguraion` 和 `DeleteBucketMetadataConfiguration`），而不使用 V1 API 操作。有关从 S3 元数据的 V1 迁移到 V2 的更多信息，请参阅[对在 2025 年 7 月 15 日之前创建的元数据配置启用清单表](metadata-tables-create-configuration.md#metadata-tables-migration)。

要确定配置是 V1 还是 V2，可以查看 `GetBucketMetadataConfiguration` API 响应的以下属性。AWS 托管式存储桶类型 (`"aws"`) 表示 V2 配置，而客户管理的存储桶类型 (`"customer"`) 表示 V1 配置。

```
"MetadataTableConfigurationResult": {
            "TableBucketType": ["aws" | "customer"]
```

有关更多信息，请参阅 [查看元数据表配置](metadata-tables-view-configuration.md)。