我试图通过流媒体Kinesis使用AWS的人脸识别,但却陷入了创建流处理器步骤的错误:
错误AccessDeniedException:状态代码:400,请求ID:d871329b-4553-11e9-9d9b-bf3e1c3a90d6
我有配置: IAM政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kinesisanalytics:*",
"kinesisvideo:*",
"kinesis:*",
"rekognition:*"
],
"Resource": "*"
}
]
}
该角色有2个附加策略,AmazonRekognitionServiceRole及以上自定义策略。
Role's Trust relationships:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "rekognition.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
测试代码(Golang):
func createStreamProcessor() {
sess, err := session.NewSession(&aws.Config{
Region: aws.String("ap-southeast-2"),
//Credentials: credentials.NewSharedCredentials("", "default"),
})
fmt.Println(err)
reko := rekognition.New(sess)
result, err := reko.ListCollections(&rekognition.ListCollectionsInput{
MaxResults: aws.Int64(100),
})
fmt.Println(result)
fmt.Println(err)
input := rekognition.CreateStreamProcessorInput{
Name: aws.String("RdsStreamProcessor"),
Input: &rekognition.StreamProcessorInput{
KinesisVideoStream: &rekognition.KinesisVideoStream{
Arn: aws.String("arn:aws:kinesisvideo:ap-southeast-2:nnnnnnnnn:stream/redisys-stream/1552295399763"),
},
},
Output: &rekognition.StreamProcessorOutput{
KinesisDataStream: &rekognition.KinesisDataStream{
Arn: aws.String("arn:aws:kinesis:ap-southeast-2:nnnnnnnnn:stream/rds-face-recognition-stream"),
},
},
RoleArn: aws.String("arn:aws:iam::nnnnnnnnn:role/rds_recognition_role"),
Settings: &rekognition.StreamProcessorSettings{
FaceSearch: &rekognition.FaceSearchSettings{
CollectionId: aws.String("rds_customers"),
FaceMatchThreshold: aws.Float64(90),
},
},
}
fmt.Println(input)
outPut, err := reko.CreateStreamProcessor(&input)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(outPut)
}
截至2019年3月27日,Rekognition直播仅在4个地区提供,us-east-1,us-west-2,eu-west-1和ap-northeast-1