2009-11-18 16 views
7

Un peu d'arrière-plan: Je construis une application iPhone avec un backend serveur complémentaire (écrit dans Rails ou Sinatra, mais probablement pas pertinent pour cette discussion). Une partie de la fonctionnalité consiste à télécharger des photos de l'iPhone vers le serveur. Ceux-ci seront finalement stockés sur S3, donc afin de simplifier l'application et conserver la bande passante, je voudrais télécharger les photos directement depuis l'iPhone vers S3, en sautant mon serveur backend. L'utilisation de l'API REST de S3 (dans ce cas j'utiliserais probablement ASIHTTPRequest) signifierait stocker la clé et le secret AWS dans l'application iPhone, ce que je ne veux pas faire pour des raisons de sécurité.Téléchargement Amazon S3 POST (à partir de l'iPhone)

Pour des raisons similaires, je ne souhaite pas que mon compartiment S3 soit publiquement accessible en écriture.

Maintenant, il semble que S3 a également un support pour browser-based uploads using POST. Si je comprends bien, cela fonctionne en générant un document de politique signé sur le serveur, ce qui permet alors à l'application cliente de POSTER directement le fichier sur S3. Il semble que cela fonctionne en principe non seulement pour les navigateurs, mais aussi pour les applications iPhone.

Cependant, j'ai du mal à trouver la façon exacte de faire fonctionner cela (pas la partie spécifique de l'iPhone, juste des envois POST S3 en général). Quelles informations doivent être envoyées au serveur pour calculer la signature (par exemple, a-t-il besoin de la taille du fichier ou de toute autre information de fichier)? Je vais creuser un peu plus les docs officiels et commencer à expérimenter avec ça, mais si quelqu'un pouvait me diriger vers des tutoriels ou des exemples de code, ce serait très apprécié.

Répondre

5

Lorsque vous générez la stratégie, vous pouvez restreindre ce qui est téléchargé de différentes manières (nom de clé, type mime, taille de fichier, etc.) en construisant une chaîne JSON. Ces restrictions (y compris une expirydate) sont ensuite signées à l'aide de votre clé secrète AWS. Vous publiez ensuite la stratégie signée et vous accédez à la clé en tant que paramètres de formulaire à AWS avec la clé de la nouvelle ressource, son contenu et toutes les autres métadonnées que vous aimez.

Le doco officiel est la seule référence que je connais (mais je n'ai pas googlé pour non plus ...)

http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/HTTPPOSTForms.html#HTTPPOSTConstructPolicy

est la page que vous êtes probablement plus intéressé.

+0

Merci pour l'explication. J'espérais qu'il pourrait y avoir quelque chose de plus didactique, mais rétrospectivement, il semble que le document Amazon a toutes les informations nécessaires, donc je devrais commencer à expérimenter. –

+0

cette URL ne marche plus – Deepak