如果 AWS API 请求失败,我该如何调试我需要的权限?
Given a failed AWS API request, how can I debug what permissions I need?
我正在使用 Terraform 在 AWS 上配置一些资源。 运行 Terraform 的 "plan" 步骤失败并出现以下模糊错误(例如):
Error: Error loading state: AccessDenied: Access Denied
status code: 403, request id: ABCDEF12345678, host id: SOMELONGBASE64LOOKINGSTRING===
给定一个请求 ID 和一个主机 ID 是否可以更深入地了解哪里出了问题?
设置 TF_LOG=DEBUG(或其他级别)似乎有帮助,但我很好奇是否有 CLI 命令可以从 CloudTrail 或其他东西获取更多信息。
谢谢!
Terraform 不会有任何关于拒绝访问的特权信息,但 AWS 有。因为您提到 S3 是问题所在,所以我的回答基于查找 S3 请求 ID。您有几个选项可以在 AWS 中找到给定请求 ID 的请求。
- 创建 trail in AWS CloudTrail。默认情况下,CloudTrail 将在存储桶级别记录 API 次调用(包括请求 ID)。如果请求针对特定对象,则需要在创建跟踪时启用 S3 数据事件。
- 开启S3 server access logs。
您可以在 S3 的日志文件中手动搜索请求 ID 或使用 Athena。对于 CloudTrail,您还可以配置 CloudWatch Logs 并在通过搜索栏创建的日志组中进行搜索。
CloudTrail 记录来自所有服务的 API 调用,而不仅仅是 S3。除了与 S3 相关的问题之外,它可能是诊断问题的有用工具。请注意,日志出现在 CloudTrail 中可能会有长达 15 分钟的延迟。
我正在使用 Terraform 在 AWS 上配置一些资源。 运行 Terraform 的 "plan" 步骤失败并出现以下模糊错误(例如):
Error: Error loading state: AccessDenied: Access Denied
status code: 403, request id: ABCDEF12345678, host id: SOMELONGBASE64LOOKINGSTRING===
给定一个请求 ID 和一个主机 ID 是否可以更深入地了解哪里出了问题?
设置 TF_LOG=DEBUG(或其他级别)似乎有帮助,但我很好奇是否有 CLI 命令可以从 CloudTrail 或其他东西获取更多信息。
谢谢!
Terraform 不会有任何关于拒绝访问的特权信息,但 AWS 有。因为您提到 S3 是问题所在,所以我的回答基于查找 S3 请求 ID。您有几个选项可以在 AWS 中找到给定请求 ID 的请求。
- 创建 trail in AWS CloudTrail。默认情况下,CloudTrail 将在存储桶级别记录 API 次调用(包括请求 ID)。如果请求针对特定对象,则需要在创建跟踪时启用 S3 数据事件。
- 开启S3 server access logs。
您可以在 S3 的日志文件中手动搜索请求 ID 或使用 Athena。对于 CloudTrail,您还可以配置 CloudWatch Logs 并在通过搜索栏创建的日志组中进行搜索。
CloudTrail 记录来自所有服务的 API 调用,而不仅仅是 S3。除了与 S3 相关的问题之外,它可能是诊断问题的有用工具。请注意,日志出现在 CloudTrail 中可能会有长达 15 分钟的延迟。