Experimente isso ...
import boto
import boto.s3
import sys
from boto.s3.key import Key
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
bucket_name = AWS_ACCESS_KEY_ID.lower() + '-dump'
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY)
bucket = conn.create_bucket(bucket_name,
location=boto.s3.connection.Location.DEFAULT)
testfile = "replace this with an actual filename"
print 'Uploading %s to Amazon S3 bucket %s' % \
(testfile, bucket_name)
def percent_cb(complete, total):
sys.stdout.write('.')
sys.stdout.flush()
k = Key(bucket)
k.key = 'my test file'
k.set_contents_from_filename(testfile,
cb=percent_cb, num_cb=10)
[ATUALIZAÇÃO] Eu não sou um pythonista, então obrigado pelo aviso sobre as instruções de importação. Além disso, não recomendo colocar credenciais dentro de seu próprio código-fonte. Se você estiver executando isso dentro da AWS, use as credenciais IAM com perfis de instância ( http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html ) e para manter o mesmo comportamento em seu ambiente de Dev / Test, use algo como Hologram de AdRoll ( https://github.com/AdRoll/hologram )
Não há necessidade de tornar isso tão complicado:
fonte
key.set_contents_from_filename('some_file.zip')
também funcionaria aqui. Veja doc . O código correspondente para boto3 pode ser encontrado aqui .fonte
aws configure
, insira suas informações e você se conectará automaticamente ao boto3. Verifique boto3.readthedocs.io/en/latest/guide/quickstart.htmlaws configure
antecedência para tornar sua vida mais fácil.Eu usei isso e é muito simples de implementar
https://www.smore.com/labs/tinys3/
fonte
boto3.client
solução simples (como a resposta de Manish Mehra) funcionou imediatamente, no entanto.fonte
aws_access_key_id
eaws_secret_access_key
também pode ser configurado com o AWS CLI e armazenado fora do script para que `client = boto3.client ('s3') possa ser chamadoFaça upload do arquivo para s3 em uma sessão com credenciais.
fonte
Isso também funcionará:
fonte
Este é um três linhas. Basta seguir as instruções na documentação do boto3 .
Alguns argumentos importantes são:
Parâmetros:
str
) - O caminho para o arquivo a ser carregado.str
) - o nome do bucket para fazer upload.str
) - O nome do que você deseja atribuir ao seu arquivo em seu intervalo s3. Pode ser igual ao nome do arquivo ou um nome diferente de sua escolha, mas o tipo de arquivo deve permanecer o mesmo.Observação: presumo que você salvou suas credenciais em uma
~\.aws
pasta, conforme sugerido nas melhores práticas de configuração na documentação do boto3 .fonte
fonte
Usando boto3
Para mais informações: - https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-uploading-files.html
fonte
Por exemplo de pasta de upload como seguinte código e imagem da pasta S3
PS: Para mais URL de referência
fonte
fonte
Tenho algo que me parece um pouco mais organizado:
Existem três variáveis importantes aqui, o BUCKET const, o file_to_upload e o file_name
BUCKET
: é o nome do seu intervalo S3file_to_upload_path
: deve ser o caminho do arquivo que você deseja enviarfile_name
: é o arquivo resultante e o caminho em seu intervalo (é onde você adiciona pastas ou o que quer que seja)Existem muitas maneiras, mas você pode reutilizar este código em outro script como este
fonte