You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置S3策略时出现MalformedPolicy: Policy has invalid action错误的原因?

报错根本原因

你把Kinesis服务专属的操作声明写到了S3桶策略中,S3桶策略仅支持识别s3:*格式的S3服务相关操作,你添加的kinesis:DescribeStream、kinesis:GetShardIterator、kinesis:GetRecords、kinesis:ListShards都属于Kinesis数据流服务的专属操作,S3无法识别这类非S3操作,因此直接返回Policy has invalid action的格式错误。

核心混淆点

官方文档给出的完整权限策略是Kinesis Data Firehose绑定的IAM服务角色的权限策略,并非用于S3桶的资源策略,两类策略的适用范围完全不同:

  • Firehose的IAM角色权限:需要覆盖所有关联服务的操作权限,包括S3、Kinesis数据流、KMS、CloudWatch Logs、Lambda等,这部分权限直接附加给Firehose使用的IAM角色即可,不需要写到S3桶策略里。
  • S3桶策略:仅需要开放Firehose角色对当前桶的S3操作权限,不需要包含其他服务的操作声明。

正确配置方案

  1. 先为Firehose创建专属的IAM服务角色,将官方给出的全量权限策略附加到该角色上,替换策略中所有区域、账号ID、资源名占位符为你的实际资源值。
  2. S3桶策略仅保留S3相关的权限声明即可,参考配置如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::${account_id}:role/你的Firehose服务角色名称"
            },
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::你的S3桶名",
                "arn:aws:s3:::你的S3桶名/*"
            ]
        }
    ]
}

如果你不是当前S3桶的所有者,还需要在Action列表中额外添加s3:PutObjectAcl,给桶所有者开放投递对象的完全访问权限。


内容的提问来源于stack exchange,提问作者johncosta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:15:03