web-dev-qa-db-fra.com

Comment transférer des fichiers entre AWS s3 et AWS ec2

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.

  • Alors, comment puis-je stocker ces fichiers sur s3?
  • Avez-vous des tutoriels à ce sujet?
49
Pravin

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. 

57
ajtrichards

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.

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

Modifier

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

32
Drew Khoury

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

10
Vikas Hardia

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

8
digitaljoel

Utilisez s3cmd pour cela:

s3cmd get s3://AWS_S3_Bucket/dir/file

Voir comment installer s3cmd ici :

Cela fonctionne pour moi ...

5
Prasad D

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.

4
Bruce Edge

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/
0
DKboss

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.

0
Appurist-PaulW