无法从S3获取对象元数据。检查aws重新登录中的对象密钥、区域和/或访问权限

2024-04-19 10:55:12 发布

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

import boto3

if __name__ == "__main__":

    bucket='MyBucketName'
sourceFile='pic1.jpg'
targetFile='pic2.jpg'

client=boto3.client('rekognition','us-east-1')

response=client.compare_faces(SimilarityThreshold=70,
                              SourceImage={'S3Object':{'Bucket':bucket,'Name':sourceFile}},
                              TargetImage={'S3Object':{'Bucket':bucket,'Name':targetFile}})

for faceMatch in response['FaceMatches']:
    position = faceMatch['Face']['BoundingBox']
    confidence = str(faceMatch['Face']['Confidence'])
    print('The face at ' +
           str(position['Left']) + ' ' +
           str(position['Top']) +
           ' matches with ' + confidence + '% confidence')

我试图比较存储桶中的两个图像,但无论选择哪个区域,都会出现以下错误:

botocore.errorfactory.InvalidS3ObjectException:调用CompareFaces操作时发生错误(InvalidS3ObjectException):无法从S3获取对象元数据。检查对象密钥、区域和/或访问权限。

我的bucket区域是us-east-1,我在代码中配置了相同的区域。 我做错什么了?


Tags: client区域bucketresponsepositionboto3jpgus
3条回答

我也有同样的问题。我要做的是重新整理我的桶和文件夹。确保您的图像直接在您的桶中,而不是在您的桶中的文件夹中。还要仔细检查图像的名称是否正确,并且一切都正确。

在我看来,你没有足够的权限访问密钥和机密密钥!如果凭据是IAM用户的,请确保IAM用户有权执行重新识别比较面读取操作和s3读取操作!还要检查s3源和目标对象键是否正确。 最好创建具有所需权限的角色,并假定该角色请求临时安全凭据,而不是使用永久访问密钥。

编译之前,请确保脚本中的AWS环境变量配置AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY

相关问题 更多 >