J'ai une galerie et des modèles de pièces jointes. Une galerie has_many pièces jointes et essentiellement toutes les pièces jointes sont des images référencées dans l'attribut ': content' de la pièce jointe.Récupère un objet AWS S3 à utiliser dans Rekognition lorsqu'il est chargé via Carrierwave
Les images sont téléchargées en utilisant Carrierwave gem et sont stockées dans Aws S3 via fog-aws gem. Cela fonctionne bien. Cependant, je voudrais effectuer une reconnaissance d'image pour les images téléchargées avec Amazon Rekognition.
J'ai installé aws-sdk gem et je suis capable d'instancier Rekognition sans problème jusqu'à ce que j'appelle la méthode detect_labels
à quel point j'ai été incapable d'utiliser mes images attachées comme arguments de cette méthode.
si gros que je l'ai essayé:
@attachement = Attachment.first
client = Aws::Rekognition::Client.new
resp = client.detect_labels(
image: @attachment
)
# I GET expected params[:image] to be a hash... and got class 'Attachment' instead
J'ai essayé d'utiliser:
client.detect_labels(image: { @attachment })
client.detect_labels(image: { @attachment.content.url })
client.detect_labels(image: { @attachment.content })
Tous avec la même erreur. Je me demande comment puis-je récupérer la forme d'objet s3 @attachment et, même si je pouvais le faire, comment pourrais-je l'utiliser comme argument dans detect_labels
.
J'ai essayé aussi aller chercher directement l'objet s3 essayer ce dernier bit:
s3 = AWS:S3:Client.new
s3_object = s3.list_objects(bucket: 'my-bucket-name').contents[0]
# and then
client.detect_labels(image: { s3_object })
Toujours pas de succès ...
Des conseils?