

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

# 故障排除 Amazon Secrets Manager
<a name="troubleshoot"></a>

使用此处的信息可帮助您诊断和修复您在使用 Secrets Manager 时可能遇到的问题。

有关轮换的问题，请参阅 [排除 Amazon Secrets Manager 轮换故障](troubleshoot_rotation.md)。

**Topics**
+ [“访问被拒绝”消息](#troubleshoot_general_access-denied-service)
+ [对于临时安全凭证的“拒绝访问”](#troubleshoot_general_access-denied-temp-creds)
+ [并非始终立即显示我所做的更改。](#troubleshoot_general_eventual-consistency)
+ [在创建秘密时收到“Cannot generate a data key with an asymmetric KMS key”（无法使用非对称 KMS 密钥生成数据密钥）](#asymmetrical-key)
+ [Amazon CLI 或 S Amazon DK 操作无法从部分 ARN 中找到我的秘密](#ARN_secretnamehyphen)
+ [此密钥由 Amazon 服务管理，您必须使用该服务对其进行更新。](#troubleshoot-service-linked-secrets)
+ [使用 `Transform: AWS::SecretsManager-2024-09-16` 时 Python 模块导入失败](#troubleshoot-python-import)

## “访问被拒绝”消息
<a name="troubleshoot_general_access-denied-service"></a>

当你向 Secrets Manager 进行诸如 GetSecretValue 或 CreateSecret 之类的 API 调用时，你必须具有 IAM 权限才能进行该调用。当您使用控制台时，控制台会代表您进行相同的 API 调用，因此您还必须具有 IAM 权限。管理员可以通过将 IAM 策略附加到您的 IAM 用户或您所属的组来授予权限。如果授予这些权限的政策声明包含任何条件，例如 time-of-day或 IP 地址限制，则您在发送请求时也必须满足这些要求。有关查看或修改适用于 IAM 用户、组或角色的策略的信息，请参阅《IAM 用户指南》**中的[使用策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_manage.html)。有关 Secrets Manager 所需权限的信息，请参阅 [的身份验证和访问控制 Amazon Secrets Manager](auth-and-access.md)。

如果您在不使用 API 请求的情况下手动签名 [Amazon SDKs](https://www.amazonaws.cn/tools/)，请验证您是否正确[签署了请求](https://docs.amazonaws.cn/general/latest/gr/signing_aws_api_requests.html)。

## 对于临时安全凭证的“拒绝访问”
<a name="troubleshoot_general_access-denied-temp-creds"></a>

请确认用于发出请求的 IAM 用户或角色具有正确的权限。临时安全凭证的权限来自于 IAM 用户或角色。这意味着，权限仅限于为 IAM 用户或角色授予的权限。有关临时安全凭证权限的确定方式的更多信息，请参阅 *IAM 用户指南*中的[控制临时安全凭证的权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_temp_control-access.html)。

确认已正确对请求进行签名，并且请求格式正确无误。有关详细信息，请参阅所选软件开发[工具包的工具包](https://www.amazonaws.cn/tools/)文档，或者 *IAM 用户指南*中的[使用临时安全证书请求 Amazon 资源访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)。

验证您的临时安全凭证没有过期。有关更多信息，请参阅《IAM 用户指南》**中的[请求临时安全凭证](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_temp_request.html)。

有关 Secrets Manager 所需权限的信息，请参阅 [的身份验证和访问控制 Amazon Secrets Manager](auth-and-access.md)。

## 并非始终立即显示我所做的更改。
<a name="troubleshoot_general_eventual-consistency"></a>

Secrets Manager 使用名为[最终一致性](https://wikipedia.org/wiki/Eventual_consistency)的分布式计算模型。你在 Secrets Manager（或其他 Amazon 服务）中所做的任何更改都需要一段时间才能从所有可能的端点中看见。它在服务器与服务器之间、复制区域与复制区域之间，以及全球的区域与区域之间发送数据需要时间，这会造成一定的延迟。Secrets Manager 也使用缓存来提高性能，但在某些情况下，这可能会增加时间。在之前缓存的数据超时之前，更改可能不可见。

在设计全球应用程序时应考虑到这些可能的延迟。此外，确保应用程序可以按预期工作，即使在一个位置进行的更改不能立即在其他位置可见。

有关最终一致性如何影响其他一些 Amazon 服务的更多信息，请参阅：
+ *Amazon Redshift 数据库开发人员指南*中的[管理数据一致性](https://docs.amazonaws.cn/redshift/latest/dg/managing-data-consistency.html)
+ *Amazon Simple Storage Service 用户指南*中的 [Amazon S3 数据一致性模型](https://docs.amazonaws.cn/AmazonS3/latest/userguide/Introduction.html#ConsistencyModel)
+  Amazon 大数据博客中的 [Ensuring Consistency When Using Amazon S3 and Amazon EMR for ETL Workflows](https://www.amazonaws.cn/blogs/big-data/ensuring-consistency-when-using-amazon-s3-and-amazon-elastic-mapreduce-for-etl-workflows/)
+ *Amazon EC2 API 引用*中的 [Amazon EC2 最终一致性](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/query-api-troubleshooting.html#eventual-consistency)

## 在创建秘密时收到“Cannot generate a data key with an asymmetric KMS key”（无法使用非对称 KMS 密钥生成数据密钥）
<a name="asymmetrical-key"></a>

Secrets Manager 使用与密钥关联的[对称加密 KMS 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#symmetric-cmks)来为每个密钥值生成数据密钥。不能使用非对称 KMS 密钥。确认您使用的是对称加密 KMS 密钥，而不是非对称 KMS 密钥。有关说明，请参阅[识别非对称 KMS 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/find-symm-asymm.html)。

## Amazon CLI 或 S Amazon DK 操作无法从部分 ARN 中找到我的秘密
<a name="ARN_secretnamehyphen"></a>

在许多情况下，Secrets Manager 可以从不完整的 ARN 中找到密钥，而无需完整的 ARN。但如果密钥名称以连字符后跟六个字符结尾，Secrets Manager 可能无法仅从一部分 ARN 中找到密钥。我们建议您改用完整的 ARN 或密钥名称。

**更多详细信息**

Secrets Manager 会在密钥名称末尾添加六个随机字符，以帮助确保密钥 ARN 的唯一性。如果删除了原始密钥，然后使用相同的名称创建了新密钥，则 ARNs 由于这些字符，这两个密钥会有所不同。有权访问旧密钥的用户不会自动获得对新密钥的访问权限，因为两 ARNs 者不同。

Secrets Manager 可为密钥构建 ARN，其中包含区域、账户、密钥名称，后跟连字符和六个字符，如下所示：

```
arn:aws:secretsmanager:us-east-2:111122223333:secret:SecretName-abcdef
```

如果密钥名称以连字符和六个字符结尾，当您仅使用一部分 ARN 时，在 Secrets Manager 看来您似乎指定了完整的 ARN。例如，您可能具有一个名为 `MySecret-abcdef` 的密钥，其 ARN 如下：

`arn:aws:secretsmanager:us-east-2:111122223333:secret:MySecret-abcdef-nutBrk`

当您调用以下操作（此操作仅使用一部分密钥 ARN）时，Secrets Manager 可能会找不到密钥。

```
$ aws secretsmanager describe-secret --secret-id arn:aws:secretsmanager:us-east-2:111122223333:secret:MySecret-abcdef
```

## 此密钥由 Amazon 服务管理，您必须使用该服务对其进行更新。
<a name="troubleshoot-service-linked-secrets"></a>

如果您在尝试修改密钥时遇到此消息，则只能使用消息中列出的管理服务来更新密钥。有关更多信息，请参阅 [Amazon Secrets Manager 由其他 Amazon 服务管理的机密](service-linked-secrets.md)。

要确定谁管理密钥，您可以查看密钥名称。由其他服务管理的密钥以该服务的 ID 作为前缀。或者，在中 Amazon CLI，调用 d [escribe-secret](https://docs.amazonaws.cn/cli/latest/reference/secretsmanager/describe-secret.html)，然后查看该字段。`OwningService`

## 使用 `Transform: AWS::SecretsManager-2024-09-16` 时 Python 模块导入失败
<a name="troubleshoot-python-import"></a>

如果您正在使用 Transform：`AWS::SecretsManager-2024-09-16`，并且在轮换 Lambda 函数运行时遇到 Python 模块导入失败，则问题可能是由不兼容的 `Runtime` 值引起。使用此转换版本， Amazon CloudFormation 可以为您管理运行时版本、代码和共享对象文件。您无需自行管理这些内容。