Lambda 调用 AWS Textract - 有没有办法将 Textract 限制到特定的 S3 存储桶?

问题描述 投票:0回答:1

因此,我有一个 Lambda,它具有 IAM 角色,允许从特定 S3 存储桶进行读写访问。我正在触发

textract:DetectDocumentText
,它从这些存储桶之一读取数据。我想限制 Textract 只能访问此存储桶。我知道 Textract 没有 ServiceLinked 角色。是否有办法将 Textract 权限限制为仅此存储桶,或者它是否从 Lambda“继承”存储桶权限?

{
    "Effect": "Allow",
    "Action": [
        "textract:DetectDocumentText"
    ],
    "Resource": [
        "*"
    ]
},
{
    "Sid": "AllS3",
    "Effect": "Allow",
    "Action": [
        "s3:*"
    ],
    "Resource": [
        "arn:aws:s3:::my-foot-bucket"
    ]
}
amazon-s3 aws-lambda amazon-textract
1个回答
0
投票

由于 Textract 使用调用者的权限(在您的例子中是 Lambda 的执行角色),这并不简单。如果 Lambda 需要访问多个存储桶,我们无法使用相同的角色进行 Textract 调用。

您可以做的是创建另一个角色

TextractAccessor
,该角色有权执行 Textract 操作,并且还可以访问 Textract 可能使用的 S3 存储桶。

{
    "Effect": "Allow",
    "Action": [
        "textract:DetectDocumentText"
    ],
    "Resource": [
        "*"
    ]
},
{
    "Sid": "SingleS3Bucket",
    "Effect": "Allow",
    "Action": [
        "s3:*Object"
    ],
    "Resource": [
        "arn:aws:s3:::<textract-only-bucket>"
    ]
}

您可以授予 Lambda 执行角色权限以在

sts:AssumeRole
上调用
TextractAccessor
。然后,在您的代码中,您将承担
TextractAccessor
角色并使用 STS 返回的凭据(您可以缓存这些凭据)对 Textract 进行 API 调用。这有点烦人,但这种方式可以清楚地隔离 Textract 和 Lambda 函数其余部分之间的权限。

© www.soinside.com 2019 - 2024. All rights reserved.