Como criar a pasta em S3 a partir da instância Ec2

quero criar uma pasta no balde S3 do EC2 instacne . Tentei o objecto mas não funciona . Existe alguma maneira de criar a pasta no S3 do instace do ec2 usando o cli.

Author: Shrikant, 2016-04-25

4 answers

Você não precisa criar uma pasta para colocar o item nela. Por exemplo, basta fazer como abaixo e s3 irá criar as pastas se eles não existem.

aws s3 cp ./testfile s3://yourBucketName/any/path/you/like

Se quiser usar o cp recursivamente, poderá indicar a opção --recursive ou usar "aws S3 sync".

Se o seu comando não funcionar, então você pode ter problemas de permissão. Cole o seu erro para que possamos ajudá-lo.

 16
Author: Tom, 2016-04-25 11:27:59
aws s3api put-object --bucket bucketname --key foldername/  
Este comando funciona lindamente. Apoio da AWS.
 3
Author: Alankrit Aman, 2017-09-12 11:05:18

Você pode encontrar os comandos aqui no blog oficial da AWS:

Http://docs.aws.amazon.com/cli/latest/userguide/using-s3-commands.html

E existem diferentes Outras ferramentas disponíveis que podem ser usadas para criar balde / pastas em S3. Uma das ferramentas conhecidas é o S3Browser, que está disponível para servidores windows. Instale - o na sua instância EC2 e forneça a sua chave de acesso AWS e chaves secretas para aceder ao S3. Esta ferramenta fornece UI simples para fazer isso.

 2
Author: error_handler, 2016-04-25 12:16:53
E só de pensar que o S3 é uma loja de objectos. Não lida com a pasta.

Se criar /xyz /e enviar uma chamada de ficheiro/xyz / foo.txt, esses são na verdade dois objetos diferentes. se apagar /xyz/, não irá apagar/xyz / foo.txt.

A consola S3 permite-lhe "criar uma pasta", mas depois de tocar com ela, irá reparar que não consegue mudar o nome da pasta ou fazer nada que possa tocar com uma pasta (como mover uma estrutura de árvore, indicar recursivamente o acesso direitos)

Em S3, existe algo chamado "prefixo" onde a API lhe permite listar/filtrar o arquivo com um "prefixo" particular, que lhe permite lidar com a abstração.

Como mencionado acima, uma vez que não pode fazer nada como uma pasta do sistema de Ficheiros, se quiser executar uma tarefa como mover uma pasta para outra pasta, terá de escrever o seu próprio código para "reescrever" o nome do ficheiro(para ser específico, é "chave" em S3) , ou seja, copiá-lo para novo nome do objecto e apagar o objecto antigo.

Se quer construir o controle avançado em S3, você pode escolher qualquer um do AWS SDK para fazê-lo. https://aws.amazon.com/tools/

Você pode brincar com a função API chamada put_object () (nomear variado depende da linguagem SDK) e provar esses fatos (que a maioria é encontrada dentro da documentação AWS)

Actualização: desde que @Tom levanta as questões.

Você não pode criar uma pasta virtual usando o AWS cli (talvez @Tom possa mostrar como), só as formas de o fazer é usando o AWS SDK put_object ()

Vamos tentar isto. Primeiro crio um ficheiro falso na shell
echo "dummy">test.txt

Depois tente usar python aws sdk

import boto3 
s3=boto3.client("s3")
s3.create_bucket(Bucket="dummy")
# now create so call xyz/ "empty virtual folder"
s3.put_object(Bucket="dummy", Key="xyz/")
# now I put above file name to S3 , call xyz/test.txt
# First I must open the file, because put_object only take bytes or file object
myfile=open("test.txt")
s3.put_object(Bucket="dummy", Key="xyz/test.txt")

Agora, vá para o seu comando shell, Acenda o seu AWS CLI (ou continue a jogar com boto3)

# check everything
aws s3 ls s3://dummy --recursive

#now delete the so call "folder" 
aws s3 rm s3://dummy/xyz/

# And you see the file "xyz/test.txt" is still there 
aws s3 s3://dummy --recursive
 2
Author: mootmoot, 2017-03-22 08:23:14