Aws-cli: Passar bytes de imagem para o Rekognition sem que o S3 não funcione

Criado em 30 out. 2017  ·  3Comentários  ·  Fonte: aws/aws-cli

De acordo com a documentação , pode-se passar bytes de imagem para uma operação da API do Rekognition usando a propriedade Bytes na opção --image :

aws rekognition detect-labels --image "Bytes=blob"

Tentei inúmeras combinações, mas sem sucesso. Eu também entendo que a imagem deve ser codificada em base64. No entanto, o que quer que eu tente, acabo com a seguinte mensagem de erro.

An error occurred (InvalidImageFormatException) when calling the DetectLabels
operation: Invalid image encoding

Parece que o aws-cli pega o "blob" de entrada que você fornece e o codifica em base64 novamente. O problema é que, de fato, ele não trata a entrada como um blob. Ele o trata como uma string e tenta interpretá-lo como utf8, então você não pode realmente passar um blob a menos que por coincidência você esteja de posse de um blob que por acaso seja composto de caracteres utf8 inteiramente válidos. Mesmo se você passar JSON, ele ainda codifica o valor de Bytes para base64.

Como consequência, a única opção é fazer upload da imagem para o S3 primeiro e, em seguida, referenciá-la usando a propriedade S3Object . No entanto, isso nem sempre é desejado e a falta de suporte "Bytes=blob" parece estar em contraste com a documentação e os textos de ajuda incorporados.

Sistema/software usado:
aws-cli/1.11.175 Python/2.7.13 Linux/4.8.0-2-amd64 botocore/1.7.33

enhancement

Comentários muito úteis

@dstufft alguma notícia sobre isso?

Todos 3 comentários

No momento, isso não é possível devido à maneira como a CLI expõe essas entradas. Vou arquivar isso como um aprimoramento dessa API para permitir a passagem do diretório de bytes para o comando. Nesse meio tempo, você precisará usar a solução S3.

@dstufft alguma notícia sobre isso?

novamente alguma notícia sobre isso? Não consigo encontrar exemplos de upload de imagens como bytes.

Esta página foi útil?
0 / 5 - 0 avaliações