Estou tentando estimar o custo mensal do uso do AWS ECR. Ela consistirá em: custo de tráfego de saída (download de imagens) e custo de armazenamento (armazenamento de imagens no ECR).
Vamos supor que:
A primeira pergunta é: como estimar o volume de armazenamento mensal ? Qual equação está correta?
Monthly_Vol_1 = 500+40*300; - base image stored only once
Monthly_Vol_2 = (500+40)*300; - every image includes base image
A segunda pergunta é: como estimar o tráfego mensal da AWS? Suponhamos que o host que faz o download de imagens não remova os dados existentes.
Monthly_Traf_1 = (500+40)*60; - every time it downloads base image and additional layer
Monthly_Traf_2 = 500+40*60; - base image is downloaded only for the 1st image. Only application updates are downloaded
Monthly_Traf_3 = 40*60; - base image is downloaded not from AWS ECR, but from docker hub
ATUALIZAÇÃO:
Enviei duas imagens para o AWS ECR em setembro e verifiquei as informações de faturamento após dois meses. O que eu descobri:
Custou-me US $ 0,04 por mês apenas para armazenar 2 imagens (sem transferências). De acordo com o preço de ECR da AWS (US $ 0,10 por armazenamento de 1 GB), a Amazon armazena 400 MB de dados. Os mesmos 400Mb que vejo no painel do AWS ECS.
Eu tentei entender e calcular quais dados são armazenados (usando docker image e histórico do docker comandos), mas falhou.
Eu tenho 2 imagens docker enviadas para o AWS ECR:
Se o AWS armazenar imagens completas, ele armazenará 482 + 679 = 1161Mb
Se o AWS armazenar apenas camadas adicionadas, ele armazenará 45 + 73 = 118Mb
Como a AWS calcula 400 MB? O_o
UPDATE2:
Parece que o AWS armazena imagens completas, mas compactadas (400 MB em vez de 1161 MB). De acordo com link
Beginning with Docker version 1.9, the Docker client compresses image layers before pushing them to a V2 Docker registry. The output of the docker images command shows the uncompressed image size, so it may return a larger image size than the image sizes returned by DescribeImages.