【发布时间】:2019-02-22 23:55:11
【问题描述】:
我正在使用 this tutorial 将 Rekognition 结果链接到 DynamoDB 表。 它给了我这个错误:
{
"errorMessage": "Unable to get object metadata from S3. Check object key, region and/or access permissions.",
"errorType": "InvalidS3ObjectException",
"stackTrace": [
"Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27)",
"Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)",
"Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)",
"Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)",
"Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)",
"AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)",
"/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10",
"Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)",
"Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)",
"Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"
]
}
来自 GitHub 的代码是this。
我确保 lambda-bucket 和表的区域名称相同。
我是这方面的初学者,所以任何帮助将不胜感激!
谢谢!
编辑: 我做了一些修改,现在它给了我这个:
{
"errorMessage": "Requested resource not found",
"errorType": "ResourceNotFoundException",
"stackTrace": [
"Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27)",
"Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)",
"Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)",
"Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)",
"Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)",
"AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)",
"/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10",
"Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)",
"Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)",
"Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"
]
}
【问题讨论】:
-
包含对象的 S3 存储桶是否与您正在调用的 Rekognition API 端点位于同一区域?
-
@jarmod 是的 - lambda、table 和 bucket 都是 us-east-1
-
请使用文件名是一个简单单词的图像进行测试,例如 faces.jpg 而不是“test faces.jpg”。如果您使用 S3 控制台上传后一个文件,那么它将显示在您的 Lambda 函数中,键为 test+faces.jpg(空格转义为加号),Rekognition 不会找到该文件,导致原始ResourceNotFoundException。
-
@jarmod 我做了,我不认为这是问题
-
那个 github 项目在这里运行良好(在 us-east-1 中)。我按照 Medium 文章中的说明操作,确保 Lambda 的 IAM 角色同时具有 AWSLambdaFullAccess 和 AmazonRekognitionFullAccess,使用 DynamoDB 表名修改 config.js,部署代码,并将图像放入 S3 存储桶。这触发了 Lambda 函数,该函数进行了必要的 Rekognition 调用并将结果正确地保存到 DynamoDB 中。我确实 最初遇到了 ResourceNotFoundException,但那是因为我的文件名是“test faces.jpg”,如前所述。所以它确实有效。
标签: node.js amazon-web-services amazon-s3