Я пытаюсь использовать распознавание лиц AWS из потокового Kinesis, но застрял на шаге создания потокового процессора с ошибкой:
err AccessDeniedException: код состояния: 400, идентификатор запроса: 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)
}