python boto3:AWS Rekognition无法访问S3 bu

2024-06-16 09:38:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试上传图像到S3,然后让AWS Rekognition从S3获取它用于人脸检测,但Rekognition无法做到这一点。你知道吗

这是我的代码-上传然后检测:

import boto3

s3 = boto3.client('s3')
s3.put_object(
    ACL='public-read',
    Body=open('/Users/1111/Desktop/kitten800300/kitten.jpeg', 'rb'),
    Bucket='mobo2apps',
    Key='kitten_img.jpeg'
)

rekognition = boto3.client('rekognition')

response = rekognition.detect_faces(
    Image={
        'S3Object': {
            'Bucket': 'mobo2apps',
            'Name': 'kitten_img.jpeg',
        }
    }

)

这会产生一个错误:

Unable to get object metadata from S3. Check object key, region and/or access permissions.

为什么?你知道吗

关于权限:我被授权使用AWS根访问密钥,因此我可以完全访问所有资源。你知道吗


Tags: 图像clientawsimgobjects3bucketboto3
2条回答

你必须等待一段时间,图像上传完成。你知道吗

代码看起来运行平稳,因此您的jpeg开始上传,甚至在上传完成之前,Rekognition开始从图像中检测人脸。由于在代码运行时上载尚未完成,因此无法从S3中找到对象。稍微等一下。你知道吗

以下是您可以做的几件事:

  1. 确保S3 bucket的区域与Recognition相同。否则,就行不通了。S3服务是全局的,但每个bucket都是在特定的区域中创建的。AWS客户端应使用相同的区域。你知道吗
  2. 确保资源的访问密钥具有正确的权限集。你知道吗
  3. 确保文件已实际上载。你知道吗
  4. 确保没有应用撤消访问的bucket策略。你知道吗
  5. 您可以在S3存储桶上启用日志记录以查看错误。你知道吗
  6. 确保bucket没有版本控制。如果已版本化,请指定对象版本。你知道吗
  7. 确保对象定义了正确的ACL集。你知道吗
  8. 如果对象已加密,请确保您有权使用该KMS密钥解密对象。你知道吗

相关问题 更多 >