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
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.
Comentários muito úteis
@dstufft alguma notícia sobre isso?