Como posso ver o que há dentro de um balde no S3 boto3
? (ou seja, faça um"ls"
)?
Fazendo o seguinte:
import boto3
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('some/path/')
retorna:
s3.Bucket(name='some/path/')
Como vejo o seu conteúdo?
mybucket.objects.filter(Prefix='foo/bar')
e ele listará apenas objetos com esse prefixo. Você também pode passar umDelimiter
parâmetro.object
como um nome de variável, pois isso sombreará o tipo globalobject
.É semelhante a um 'ls', mas não leva em consideração a convenção da pasta de prefixos e listará os objetos no bucket. Cabe ao leitor filtrar os prefixos que fazem parte do nome da chave.
No Python 2:
No Python 3:
fonte
conn.list_objects(Bucket='bucket_name', Prefix='prefix_string')['Contents']
Suponho que você configurou a autenticação separadamente.
fonte
Se você deseja passar as chaves ACCESS e SECRET (o que você não deve fazer, porque não é seguro):
fonte
Para lidar com listagens de chaves grandes (por exemplo, quando a lista de diretórios é maior que 1000 itens), usei o código a seguir para acumular valores de chave (por exemplo, nomes de arquivos) com várias listagens (graças a Amelio acima para as primeiras linhas). O código é para python3:
fonte
Minha função de utilitário s3
keys
é essencialmente uma versão otimizada da resposta de @ Hephaestus:Nos meus testes (boto3 1.9.84), é significativamente mais rápido que o código equivalente (mas mais simples):
Como o S3 garante resultados classificados binários UTF-8 , uma
start_after
otimização foi adicionada à primeira função.fonte
list()
para retornar uma lista de arquivos.De uma maneira mais parcimoniosa, em vez de percorrer um loop for, você também pode imprimir o objeto original que contém todos os arquivos dentro do seu bucket do S3:
fonte
files_in_s3
é um "objeto de lista". Não existe tal coisa no Python. É bastante iterável e não pude fazer seu código funcionar e, portanto, com voto negativo. Então eu encontrei o erro e vi o seu ponto, mas não consegui desfazer o meu voto negativo.ObjectSummary:
Existem dois identificadores anexados ao ObjectSummary:
boto3 S3: ObjectSummary
Mais sobre chaves de objeto da documentação do AWS S3:
Aqui está um código de exemplo que demonstra como obter o nome do bloco e a chave do objeto.
Exemplo:
fonte
Eu fiz assim, incluindo o método de autenticação:
fonte
fonte
Com poucas modificações no código de @Hephaeastus em um dos comentários acima, escrevi o método abaixo para listar pastas e objetos (arquivos) em um determinado caminho. Funciona de maneira semelhante ao comando s3 ls.
Isso lista todos os objetos / pastas em um determinado caminho. O caminho_da_pasta pode ser deixado como Nenhum por padrão e o método listará o conteúdo imediato da raiz do bucket.
fonte
Aqui está a solução
import boto3
s3 = boto3.resource ('s3')
BUCKET_NAME = 'O nome do seu balde S3, por exemplo, deletemetesting11' '
allFiles = s3.Bucket (BUCKET_NAME) .objects.all ()
para arquivo em allFiles: print (file.key)
fonte
Também pode ser feito da seguinte maneira:
fonte