【问题标题】:AWS Rekognition gives an InvalidS3Exeption errorAWS Rekognition 给出了 InvalidS3Exeption 错误
【发布时间】:2021-06-18 14:15:20
【问题描述】:

每次我运行命令时

aws rekognition detect-labels --image "S3Object={Bucket=BucketName,Name=picture.jpg}" --region us-east-1

我收到此错误。

InvalidS3ObjectException: An error occurred (InvalidS3ObjectException) when calling the DetectLabels operation: Unable to get image metadata from S3.  Check object key, region and/or access permissions.

我正在尝试为我正在处理的项目检索标签,但我似乎无法通过这一步。我使用我的访问密钥、秘密密钥、us-east-1 区域和 json 作为我的输出格式配置了 aws。

我也尝试了下面的代码,我收到了完全相同的错误(我正确地将 BucketName 替换为我的存储桶名称。)

import boto3

BUCKET = "BucketName"
KEY = "picture.jpg"

def detect_labels(bucket, key, max_labels=10, min_confidence=90, region="eu-west-1"):
    rekognition = boto3.client("rekognition", region)
    response = rekognition.detect_labels(
        Image={
            "S3Object": {
                "Bucket": bucket,
                "Name": key,
            }
        },
        MaxLabels=max_labels,
        MinConfidence=min_confidence,
    )
    return response['Labels']


for label in detect_labels(BUCKET, KEY):
    print "{Name} - {Confidence}%".format(**label)

我可以在我的用户帐户上看到它正在调用 Rekognition。 Image showing it being called from IAM.

似乎问题出在我的 S3 存储桶的某个地方,但我还没有找到原因。

【问题讨论】:

  • 从错误中可以明显看出您的请求正在到达 Rekognition,它无法访问存储桶中的对象。 Rekognition 不会向 S3 发出跨区域请求 - 存储桶必须位于您调用 Rekognition 的同一区域。 docs.aws.amazon.com/rekognition/latest/dg/API_S3Object.html
  • @michael-sqlbot 我的存储桶在美国俄亥俄州东部,但 URL 显示的是 us-east-1,所以我认为它在弗吉尼亚州。我修好了它。我现在工作非常感谢。
  • 我面临同样的问题,但现在 AWS 没有指定存储桶区域,因为它超出了我们的控制范围。怎么办?

标签: amazon-web-services amazon-s3 amazon-rekognition


【解决方案1】:

出于稳定性原因,S3 和 Rekognition 的区域应该相同。

更多信息:https://forums.aws.amazon.com/thread.jspa?threadID=243999

【讨论】:

  • 我面临同样的问题,但现在 AWS 没有指定存储桶区域,因为它超出了我们的控制范围。怎么办?
  • 创建桶时需要指定地域。 AWS 控制台 UI 和 CLI 都可以选择执行此操作
【解决方案2】:

请检查您的 IAM 角色策略/权限,同时检查为 lambda 函数创建的角色。最好使用 IAM Policy Checker 验证策略。

我遇到了类似的问题,这可能是由于 IAM 角色和 S3 存储桶附带的权限和策略。还需要检查 S3 存储桶中对象的元数据。

我的 S3 存储桶政策:

{
"Version": "2012-10-17",
"Id": "Policy1547200240036",
"Statement": [
    {
        "Sid": "Stmt1547200205482",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::459983601504:user/veral"
        },
        "Action": [
            "s3:GetObject",
            "s3:PutObject"
        ],
        "Resource": "arn:aws:s3:::esp32-rekognition-459983601504/*"
    }
]
}

跨域资源共享 (CORS):

[
{
    "AllowedHeaders": [
        "*"
    ],
    "AllowedMethods": [
        "PUT",
        "POST",
        "GET",
        "DELETE"
    ],
    "AllowedOrigins": [
        "*"
    ],
    "ExposeHeaders": []
}
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    相关资源
    最近更新 更多