J'utilise l'instance AWS ec2. Sur cette instance, je résulte des fichiers. Ces opérations sont effectuées par les données de l'utilisateur.
Maintenant, je veux stocker ces fichiers sur s3 en écrivant du code dans les données de l'utilisateur.
En utilisant l'AWS CLI la plus récente ( http://aws.Amazon.com/cli/ ), vous pouvez utiliser les commandes suivantes pour copier des fichiers de votre instance Ec2 ou même de votre ordinateur local sur un stockage S3.
aws s3 cp myfolder s3://mybucket/myfolder --recursive
Vous obtiendrez alors quelque chose comme:
upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt
upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt
S'il s'agit de votre première utilisation de l'outil CLI aws
, vous devrez exécuter:
aws configure
Cela vous demandera d'entrer votre clé d'accès et votre secret, ainsi que de spécifier une région par défaut.
Il existe plusieurs façons d’envoyer des fichiers à S3. Je les ai énumérés ci-dessous avec l'installation et la documentation, le cas échéant.
S3CMD: ( http://s3tools.org/s3cmd ) Vous pouvez l'installer facilement sur debian/ubuntu via apt-get install s3cmd, puis exécutez-le à partir de la ligne de commande. Vous pouvez incorporer cela dans un script bash ou votre programme.
S3FS: ( http://www.pophams.com/blog/howto-setups3fsonubuntu1104x64 et https://code.google.com/p/s3fs/wiki/InstallationNotes ). .. Ceci monte un compartiment s3, de sorte qu'il ressemble à un disque local. La configuration nécessite un peu plus d'effort, mais une fois le disque monté, vous n'avez rien de spécial à faire pour obtenir les fichiers dans votre compartiment.
Si vous utilisez un CMS (utilisez Drupal à titre d'exemple), vous pouvez éventuellement utiliser un module pour gérer l'accès à votre bucket, par exemple http://drupal.org/project/storage_api
Enfin, vous pouvez utiliser les implémentations du langage de programmation pour gérer vous-même toute la logique. Pour PHP, vous pouvez commencer par ceci http://undesigned.org.za/2007/10/22/Amazon- s3-php-class et voir la documentation ici http://undesigned.org.za/2007/10/22/Amazon-s3-php-class/documentation
Un exemple de l'implémentation PHP:
<?php
// Simple PUT:
if (S3::putObject(S3::inputFile($file), $bucket, $uri, S3::ACL_PRIVATE)) {
echo "File uploaded.";
} else {
echo "Failed to upload file.";
}
?>
Un exemple de s3cmd:
s3cmd put my.file s3://bucket-url/my.file
Une autre option qui mérite d'être mentionnée est l'AWS CLI http://aws.Amazon.com/cli/ Elle est largement disponible. Par exemple, elle est déjà incluse sur AmazonLinux et peut être téléchargée via Python (qui est installé sur de nombreux systèmes, y compris Linux et Windows).
http://docs.aws.Amazon.com/cli/latest/reference/s3/index.html
Commandes disponibles, cp ls mb mv rb rm site web de synchronisation
http://docs.aws.Amazon.com/cli/latest/reference/s3api/index.html pour interagir avec S3
Installez le package s3cmd en tant que:
yum install s3cmd
ou
Sudo apt-get install s3cmd
en fonction de votre système d'exploitation. Copiez ensuite les données avec ceci:
s3cmd get s3://tecadmin/file.txt
ls
peut aussi lister les fichiers.
Pour plus de détails, voir this
J'utilise s3cmd pour stocker les fichiers de sauvegarde de base de données exportés tous les soirs à partir de mon instance ec2. Après la configuration de s3cmd, que vous pouvez lire sur leur site, vous pouvez ensuite exécuter une commande telle que:
s3cmd put ./myfile s3://mybucket
Utilisez s3cmd
pour cela:
s3cmd get s3://AWS_S3_Bucket/dir/file
Voir comment installer s3cmd ici :
Cela fonctionne pour moi ...
Toutes les tentatives de montage de s3 en tant que pseudo système de fichiers posent problème. C'est un magasin d'objets, pas un périphérique bloc. Si vous devez le monter parce que le code existant doit avoir des chemins de fichiers locaux, essayez goofys. C'est environ 50 fois plus rapide que s3fs. https://github.com/kahing/goofys
s3cmd est un peu long dans la dent ces jours-ci. AWS cli est une meilleure option ces jours-ci. La syntaxe est un peu moins pratique, mais c’est un outil de moins à garder.
Si vous pouvez vous en tenir à un accès http. Cela vous facilitera la vie à long terme.
Sur AWS CLI, j'ai utilisé la commande suivante pour copier le fichier Zip d'une instance EC2 vers S3.
aws s3 cp file-name.Zip s3://bucket-name/
Je pense que la meilleure réponse en général est en fait d'utiliser la commande aws
ci-dessus, mais dans les cas où vous ne voulez plus vous soucier d'installer autre chose, il convient également de noter que vous pouvez simplement télécharger le fichier via HTTPS, par exemple ouvrez un navigateur et naviguez jusqu'à:
https://s3.amazonaws.com/
(nom de compartiment) /
(chemin relatif) /
(nom de fichier)
Cela signifie également que vous pouvez simplement utiliser wget
ou curl
pour effectuer un transfert à partir d'invites de Shell.