Jef*_*ker 6 amazon-web-services node.js amazon-sns amazon-rekognition
运行一些nodejs aws rekognition来检测mp4视频中的标签,但完成后不会发布到指定的SNS主题。使用主题/角色 arns 提交请求时,我没有收到任何权限错误。
const AWS = require('aws-sdk');
AWS.config.update(
{
region: 'us-west-2',
accessKeyId: "asdfadsf",
secretAccessKey: "asdfasdfasdfasd1234123423"
}
);
const params = {
Video: {
S3Object: {
Bucket: 'myvidebucket',
Name: '5d683b81760ec59c2015.mp4'
}
},
NotificationChannel: {
RoleArn: 'arn:aws:iam::xxxxxxxxxxxxx:role/AmazonRekognitionSNSSuccessFeedback',
SNSTopicArn: 'arn:aws:sns:us-west-2:xxxxxxxxxxxxx:recoknize',
},
MinConfidence: 60
};
rekognition.startLabelDetection(params).promise().then(data => {
console.log(JSON.stringify(data));
}).catch(error => {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
该代码执行时没有错误,并且我得到了作业 ID。我的 SNS 主题订阅已确认,并且应该发布到我的 HTTPS 端点。但什么也没有到达,并且 AWS 控制台中的任何位置都没有与此相关的错误日志。
当我通过 jobid 手动访问重新识别时,数据正常返回,因此我知道它正确完成。IAM 权限肯定发生了一些奇怪的事情。
我已经成功地审查并测试了你的nodejs代码,我没有发现它有任何问题。
由于代码成功返回 AWS Rekognition“JobId”,您可以检查您的 SNS 配置并检查它是否与以下内容匹配:
1.在您的SNS 主题( 'arn:aws:sns:us-west-2:xxxxxxxxxxxx:recoknize' ) 上,导航到访问策略并检查是否有类似于以下内容的策略:
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"Service": "rekognition.amazonaws.com"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
"SNS:AddPermission",
"SNS:RemovePermission",
"SNS:DeleteTopic",
"SNS:Subscribe",
"SNS:ListSubscriptionsByTopic",
"SNS:Publish",
"SNS:Receive"
],
"Resource": "arn:aws:sns:us-west-2:XXXXXXXXXXXX:AmazonRekognitionTopic"
}
]
}
Run Code Online (Sandbox Code Playgroud)
2.在您的IAM 角色 ('arn:aws:iam::xxxxxxxxxxxxx:role/AmazonRekognitionSNSSuccessFeedback')上,确保以下各项:
(i)您的角色的“信任关系”有以下声明:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service":"rekognition.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Run Code Online (Sandbox Code Playgroud)
(ii)该角色有一份类似于以下的附加政策文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:publish"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
从 Amazon Rekognition 成功发布到 SNS 主题的消息应输出类似以下内容的内容:
"JobId":"8acd9edd6edfb0e4985f8cd269e4863e54f7fcd451af6aafe10b32996dedbdba","Status":"SUCCEEDED","API":"StartLabelDetection","Timestamp":1568544553927,"Video":{"S3ObjectName":"final.mp4","S3Bucket":"syumak-rekognition"}}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1199 次 |
| 最近记录: |