# 调用 PutBucketPolicy 操作时出错 (MalformedPolicy)：策略长度为 X，但最大长度为 20480。

- **ID:** `aws/s3-bucket-policy-too-large`
- **领域:** aws
- **类别:** config_error
- **错误码:** `MalformedPolicy`
- **验证级别:** ai_generated
- **修复率:** 85%

## 根因

S3 存储桶策略超过 20 KB 的大小限制，包括空格和 JSON 格式。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| aws-sdk-v2 | active | — | — |
| aws-cli/2.17.0 | active | — | — |
| boto3-1.34.0 | active | — | — |

## 解决方案

1. ```
   使用工具（如 `jq -c`）压缩策略 JSON 并重试：`aws s3api put-bucket-policy --bucket my-bucket --policy "$(cat policy.json | jq -c)"`
   ```
2. ```
   将策略拆分为多个较小的策略，附加到不同资源（如 IAM 角色）上，而不是使用单个存储桶策略。
   ```

## 无效尝试

- **** — Removing comments from JSON doesn't reduce size enough; comments aren't allowed in JSON policies anyway. (60% 失败率)
- **** — Using a shorter bucket name doesn't significantly reduce policy size; the issue is the policy body. (40% 失败率)
