2017-05-03 4 views
0

Cette opération a probablement été explorée plusieurs fois sur SO, mais je n'arrive toujours pas à comprendre le flux ici. Quelqu'un peut-il aider à jeter un peu de lumière ici sur ce que je pourrais manquer!Génération d'URL pré-signées pour l'accès à AWS S3 à partir de l'application mobile

Je construis une application de messagerie mobile, avec le serveur de discussion backend d'Erlang et les photos stockées dans AWS S3. Je veux m'assurer que lorsqu'un utilisateur envoie une photo à un groupe, la même chose ne peut être téléchargée que par les membres du groupe et personne d'autre. D'après ce que je comprends, j'ai besoin d'avoir des URL pré-signées (des photos téléchargées) distribuées aux destinataires du chat (membres du groupe) afin qu'ils puissent les télécharger directement.

Ma question est: Comment puis-je générer ces URL pré-signées? Et quel est le rôle d'AWS Cognito ici? Dois-je créer un nouveau service Web pouvant être interrogé par l'application mobile? Ainsi, ce service web appelle getIdentityId() de Cognito et utilise la réponse (avec le nom du compartiment/la clé transmise par le client mobile) pour générer l'URL pré-signée, qu'elle transmet ensuite au client mobile, qui peut alors distribuer cette URL aux destinataires du groupe de discussion? Ou le fournisseur d'informations d'identification Cognito et l'ID du pool d'utilisateurs doivent-ils être inclus dans le code source mobile et l'application iOS/Android elle-même doit générer ladite URL? Toutes nos excuses pour cette diatribe plutôt longue!

+0

Gardez à l'esprit qu'une URL pré-signé peut être utilisé par toute personne qui a l'URL. Les images ne seront donc téléchargeables que par les membres du groupe, à condition que les membres du groupe soient les seuls à avoir l'URL. – jbird

+0

Merci @jbird - cela est parfaitement logique ... Je suis en train de pencher vers l'utilisation directe du SDK et de donner les autorisations nécessaires aux utilisateurs authentifiés au lieu de compter sur les URL ... merci pour votre réponse de toute façon ... – vikram17000

Répondre

2

Les informations d'identification cognito sont utilisées pour signer l'URL pré-signée qui est générée par le SDK. Si l'URL pré-signée n'est pas signée avec des informations d'identification valides, la demande d'obtention du téléchargement échoue.

Ensuite, l'identifiant de pool cognito doit être présent dans l'application qui récupère les informations d'identification temporaires pour accéder aux ressources AWS.

Merci, Rohan

+0

Merci @Rohan Dubal - Je suis finalement allé de l'avant et j'ai commencé à exploiter directement le SDK au lieu d'utiliser les URL pré-signées. Merci beaucoup pour votre réponse! – vikram17000