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

如何限制调用AWS Textract的Lambda仅访问指定S3存储桶?

问题解答

首先明确:Textract 不会继承Lambda的S3权限。Lambda的角色权限仅用于Lambda自身执行时的操作,而Textract调用S3是使用它自己的服务身份,因此需要单独配置限制规则。

要实现Textract仅访问指定S3桶的需求,需完成两项配置:

  1. 细化Lambda的IAM角色中Textract调用权限:避免给textract:DetectDocumentText授予*资源权限,而是指定对应S3桶的Textract资源ARN。Textract的资源ARN格式为arn:aws:textract:你的区域:你的账号ID:document/s3-object/bucket/桶名/object/对象键,若要限制整个桶,可使用通配符:arn:aws:textract:你的区域:你的账号ID:document/s3-object/bucket/my-foot-bucket/*
  2. 给目标S3桶添加桶策略:直接允许Textract服务主体仅对该桶执行必要操作(如s3:GetObject),因为Textract是直接访问S3的,桶策略是控制其访问权限的关键。

调整后的Lambda IAM角色策略示例

[
    {
        "Effect": "Allow",
        "Action": [
            "textract:DetectDocumentText"
        ],
        "Resource": [
            "arn:aws:textract:你的区域:你的账号ID:document/s3-object/bucket/my-foot-bucket/*"
        ]
    },
    {
        "Sid": "S3AccessForLambda",
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::my-foot-bucket",
            "arn:aws:s3:::my-foot-bucket/*"
        ]
    }
]

注:将原策略中过于宽泛的s3:*权限,改为Lambda实际需要的操作(如读写所需的GetObject和PutObject),遵循最小权限原则。

S3桶策略示例(限制Textract仅访问该桶)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "textract.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-foot-bucket/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "你的账号ID"
                }
            }
        }
    ]
}

核心说明

  • Lambda的角色权限是用于让Lambda调用Textract,以及Lambda自身操作S3(如上传文件)的权限,和Textract访问S3的权限是相互独立的。
  • 结合Lambda角色中对Textract资源的限制,以及S3桶策略对Textract的授权,就能确保Textract仅能处理指定桶内的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:09:54