我正在运行一个lambda,它将通过使用boto3自动触发理解工作。
但是,由于某种原因,我的 IAM 无法正常工作!我对此工作的角色具有以下权限:
- IAMFullAccess
- AmazonS3FullAccess
- 理解完全访问
- AWSLambdaExecute
但是,在理解中创建作业时,它会立即失败并显示以下错误消息:
NO_WRITE_ACCESS_TO_OUTPUT: The provided data access role does not have write access to the output S3 URI.
关于如何解决这个问题的任何想法?我已授予角色完全 S3 权限?
你能检查一下你的角色的信任策略,看看理解是否可信吗?
此处的信任策略示例 - https://docs.aws.amazon.com/comprehend/latest/dg/access-control-managing-permissions.html
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "comprehend.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
所有 IAM API 调用都是异步的。因此,如果您通过 boto3 创建角色和策略并立即承担它们并运行 comphend,它们可能无法正常工作。您可以通过睡眠几秒钟来等待,也可以使用重试机制。这就是我解决这个问题的方式。