2014-05-08 3 views
0

Je télécharge un fichier dans un compartiment S3 pour lequel j'ai créé une distribution Cloudfront. J'utilise la classe Aws\S3\S3Client.Comment renvoyer l'url Cloudfront après le téléchargement de S3?

Après le chargement avec putObject, l'objet de réponse et la méthode getObjectUrl renvoient tous deux l'URL de l'objet en tant que https://s3-eu-west-1.amazonaws.com/mybucket/path/myfile.jpg. J'essaie d'obtenir l'URL de Cloudfront qui serait quelque chose comme https://d111111111ck.cloudfront.net/path/myfile.jpg.

Y at-il un moyen d'obtenir cet URL directement, ou dois-je le construire à partir de mon nom d'hôte de distribution et chemin d'accès?

Répondre

3

Vous n'obtiendrez pas une URL cloudfront à partir de S3, c'est un service différent. Si vous utilisez putObject alors vous connaissez déjà le chemin du fichier (valeur spécifiée dans Key).

juste retour l'URL de CloudFront devant le chemin du fichier ... par exemple

$filePath = '/path/file.jpg'; 

$client->putObject(array(
    'Bucket' => 'mybucket', 
    'Key' => $filePath, 
    'SourceFile' => $fileSource, 
    'ACL' => 'public-read' 
)); 

return 'https://d111111111ck.cloudfront.net' . $filePath; 
+0

droite, donc je suppose qu'il n'y a aucun moyen de résoudre une URL de cloudfront associée pour le compartiment. Je vais juste devoir le stocker dans la config. – juuga

+1

c'est correct, vous pouvez utiliser la méthode 'getDistribution' dans la classe' Aws \ CloudFront \ CloudFrontClient' pour retourner le domaine mais vous devez connaître l'ID afin que vous puissiez stocker le domaine dans la configuration! – fire

+0

J'ai cette erreur "MissingKey" – NineCattoRules

0

I guess there's is no way to resolve an associated cloudfront url for the bucket. Oui, ça l'est! CloudFront est un cache CDN . Vous n'avez pas besoin d'obtenir l'URL du seau/fichier s3, car CloudFront se soucie de cela pour vous.

Plus de détails sur AWS CloudFront ici.

Suivez les étapes et consultez le step 24. C'est tout!

Captures d'écran ci-dessous:

enter image description here enter image description here

Amusez-vous! :)

Questions connexes