Comment puis-je afficher protégé Amazon S3 images sur mon site sécurisé à l'aide de PHP?

Je suis en train de transférer des images de mon site à partir de mon hôte à Amazon S3 d'hébergement cloud. Ces images sont du client des sites de travail et ne peut pas être accessible au public. Je voudrais qu'ils soient affichés sur mon site, de préférence en utilisant le SDK PHP disponible sur Amazon.

Jusqu'à présent j'ai été en mesure de script pour la conversion de sorte que je rechercher des enregistrements dans ma base de données, saisissez le chemin d'accès au fichier, son nom de manière appropriée, et de l'envoyer à Amazon.

    //upload to s3
$s3->create_object($bucket, $folder.$file_name_new, array(
    'fileUpload' => $file_temp,
    'acl' => AmazonS3::ACL_PRIVATE, //access denied, grantee only own
    //'acl' => AmazonS3::ACL_PUBLIC, //image displayed
    //'acl' => AmazonS3::ACL_OPEN, //image displayed, grantee everyone has open permission
    //'acl' => AmazonS3::ACL_AUTH_READ, //image not displayed, grantee auth users has open permissions
    //'acl' => AmazonS3::ACL_OWNER_READ, //image not displayed, grantee only ryan
    //'acl' => AmazonS3::ACL_OWNER_FULL_CONTROL, //image not displayed, grantee only ryan
    'storage' => AmazonS3::STORAGE_REDUCED
    )
    );

Avant que je copie tout, j'ai créé un formulaire simple à faire, test de chargement et d'affichage de l'image. Si j'upload une image à l'aide de ACL_PRIVATE, je peux soit saisir l'url publique et je n'aurai pas accès, ou je peux récupérer l'url publique avec une clé temporaire et peut afficher l'image.

<?php
//display the image link
$temp_link = $s3->get_object_url($bucket, $folder.$file_name_new, '1 minute');
?>
<a href='<?php echo $temp_link; ?>'><?php echo $temp_link; ?></a><br />
<img src='<?php echo $temp_link; ?>' alt='finding image' /><br />

À l'aide de cette méthode, comment mon de la mise en cache? Je devine à chaque fois que j'actualise la page, ou de modifier l'un de mes disques, je vais être en tirant à nouveau cette image, l'augmentation de mes demandes.

J'ai également étudié à l'aide de politiques de compartiment pour ne permettre l'extraction d'images à partir de certains référents. Dois-je comprends bien que Amazon est censé uniquement extraire les demandes de pages ou des domaines-je le préciser?

Que j'ai référencé:
https://forums.aws.amazon.com/thread.jspa?messageID=188183&#188183 pour le mettre en place, mais ensuite, suis confus quant à la sécurité dont j'ai besoin sur mes objets. Il semblait comme si je leur ai fait Privé, ils ne voulaient toujours pas d'affichage, à moins que j'ai utilisé le temp lien comme mentionné précédemment. Si j'ai fait le public, j'ai pu naviguer directement, indépendamment de référent.

Je suis loin de ce que je suis en train de faire ici? Ce n'est pas vraiment pris en charge par S3, ou ai-je raté quelque chose de simple? Je suis passé par la documentation du kit de développement, et de beaucoup, de la recherche et se sentir comme ce devrait être un peu plus clair et documenté, alors j'espère que toute entrée ici peut aider d'autres personnes dans cette situation. J'ai lu d'autres qui le nom du fichier avec un ID unique, la création de la sécurité par l'obscurité, mais qui ne sera pas coupé dans ma situation, et probablement pas la meilleure pratique pour ceux qui cherchent à être sécurisé.

InformationsquelleAutor Bob | 2011-03-02