Aws-cli: Adicionar capacidade de limitar a largura de banda para uploads / downloads S3

Criado em 13 jan. 2015  ·  67Comentários  ·  Fonte: aws/aws-cli

Original de # 1078, esta é uma solicitação de recurso para adicionar a capacidade dos comandos aws s3 de limitar a quantidade de largura de banda usada para uploads e downloads.

No problema mencionado, foi mencionado especificamente que alguns ISPs cobram taxas se você ultrapassar um Mbps específico, portanto, os usuários precisam da capacidade de limitar a largura de banda.

Imagino que isso seja algo que precisaríamos apenas adicionar aos comandos aws s3 .

feature-request s3 s3bandwidth

Comentários muito úteis

Acabei de destruir a internet em um escritório compartilhado.
Este seria um bom recurso quando você quer ser gentil com as outras pessoas
👍

Todos 67 comentários

Olá Jamesis,
Você poderia fornecer um prazo em que o limite de largura de banda ficará disponível?
Obrigado
Austinsnow

: +1:

: +1:

: +1:

: +1:

: +1:

: +1:

: +1:

: +1:

Em sistemas de sabor Unix, gotejamento vem a calhar para controle ad-hoc. trickle conecta APIs de soquete usando LD_PRELOAD e limita a largura de banda.

Você pode executar comandos como

$ trickle -s -u {UPLOAD_LIMIT(KB/s)} command
$ trickle -s -u {UPLOAD_LIMIT(KB/s)} -d {DOWNLOAD_LIMIT(KB/s)} command

O recurso integrado será realmente útil, mas dada a natureza multiplataforma do AWS-CLI, pode custar muito para implementá-lo e mantê-lo.

Trickle é especificamente mencionado na edição # 1078, que está vinculada ao primeiro comentário aqui. Os dois (trickle e AWS-CLI) simplesmente não funcionam bem juntos na minha experiência.

: +1:

: +1:

+1

+1

: +1:

+1

+1

: +1:

(E)

: +1:

: +1: isso é muito necessário!

: +1:

: +1:

+1

+1

: +1:

👍

Alguma atualização sobre este recurso?

: +1:

image

: +1:

👍

👍

Alguma atualização sobre isso?

👍

👍

👍

👍

👍

: +1:

Por um lado: muito mais rápido do que s3cmd.
Por outro lado: minha empresa de hospedagem interrompeu automaticamente um servidor por usar "quantidades excessivamente altas de largura de banda".
Alguém sugeriu aws configure set default.s3.max_concurrent_requests $n onde $ n é menor que 10. Não tenho certeza se isso é suficiente; investigará a ferramenta de gotejamento mencionada acima.

👍

Há mais de dois anos, e esse pedido ainda está pendente. Existe um prazo para que isso possa ser implementado?

👍

👍

👍

👍🏿

: +1:

Acabei de destruir a internet em um escritório compartilhado.
Este seria um bom recurso quando você quer ser gentil com as outras pessoas
👍

👍

você pode usar trickle -s -u 100 aws s3 sync . s3://examplebucket

@sofuca funciona corretamente? Muitas pessoas tentaram trickle para fazer isso, mas os resultados foram questionáveis. Veja # 1078.

@ikoniaris

Funciona perfeitamente para mim.

O comando a seguir destrói a internet no escritório, é uma conexão de 20 Mb / s

aws s3 cp /foo s3://bar

E o seguinte comando carrega a bons 8Mb / s

trickle -s -u 1000 aws s3 sync /foo s3://bar

Captura de tela da interface externa do firewall que estou usando
image

👍

Trickle e arquivos s3 grandes farão com que o gotejamento trave

(e)

desculpe, Trickle e arquivos s3 grandes farão com que o trickle trave usando o boto3 com 10 uploads simultâneos (configurações padrão), alterar os uploads simultâneos resolverá o problema. Preciso adicionar isso no github do boto3, obrigado!

👍

Então, já se passaram mais de 2,5 anos desde que foi inaugurado. Este pedido está apenas sendo ignorado?

Para nós usamos pv (https://linux.die.net/man/1/pv) desta forma:

/usr/bin/pv -q -L 20M $l_filepath | /usr/local/bin/aws s3 cp --region "us-east-1" - s3://<s3-bucket>/<path in s3 bucker>

Esta solução não é ideal (porque requer suporte adicional para filtragem e recursão, nós o fazemos dentro do bash loop) mas muito melhor do que o trickle que em nosso caso usa 100% da CPU e se comporta de forma muito instável

Aqui, nosso caso de uso completo de PV (limitamos a velocidade de upload a 20 MB / s == 160 Mbit / s)

for l_filepath in /logs/*.log-*; do
    l_filename=`basename $l_filepath`
    /usr/bin/pv -q -L 20M $l_filepath | /usr/local/bin/aws s3 cp --region "us-east-1" - s3://$S3BUCKET/${HOSTNAME}/$l_filename
    /bin/rm $l_filepath
done

+1

Caso de uso da vida real: upload muito grande para S3 sobre DX, não quer saturar o link e potencialmente impactar os aplicativos de produção usando o link DX.

throttle , trickle e pv não funcionam para mim no archlinux com o awscli mais recente de pip ao enviar para um balde. Além disso, defini max_concurrent_connections para s3 na configuração awscli como 1 sem fazer diferença. Esta seria uma adição muito apreciada!

@ischoonover parece que você não passa --expected-size para aws cli ao usá-lo com PV, é muito útil quando você tenta fazer upload de arquivos muito grandes

--expected-size (string) This argument specifies the expected size of a stream in terms of bytes. Note that this argument is needed only when a stream is being uploaded to s3 and the size is larger than 5GB. Failure to include this argument under these conditions may result in a failed upload due to too many parts in upload.

@ tantra35 O tamanho era de 1 GB. Acabei usando s3cmd, que tem limitação de taxa embutida com --limit-rate

Implementado em # 2997.

Esta página foi útil?
0 / 5 - 0 avaliações