View a markdown version of this page

Gerenciando throughput do Parameter Store - AWS Systems Manager

Gerenciando throughput do Parameter Store

O throughput do Parameter Store define o número de transações de API por segundo (TPS) que o Systems Manager pode processar. A configuração de throughput se aplica ao Parameter Store como um todo, e não a uma API específica. Por padrão, o Parameter Store é configurado com uma cota de throughput padrão que geralmente é adequada para workloads de volume baixo a moderado. Para workloads de maior volume, você pode habilitar um throughput maior, o que aumenta o número máximo de transações suportadas por segundo para sua conta e região. Você pode habilitar e desabilitar o throughput mais alto conforme necessário.

Cotas de throughput no Parameter Store

A tabela a seguir apresenta os limites de transações para diferentes categorias de API, utilizando o throughput padrão e um throughput mais alto. As ações da API incluem o uso do console da AWS, comandos da AWS CLI e leituras das aplicações. Para obter mais informações sobre cotas e limites de taxa, consulte Endpoints e cotas da AWS Systems Manager.

Ações da API Throughput padrão Throughput maior
GetParameter, GetParameters e GetParametersByPath 40 TPS compartilhado em todas as três ações de API combinadas GetParameter: 10,000 TPS; GetParameters: 1,000 TPS; GetParametersByPath: 100 TPS
DeleteParameter e DeleteParameters 3 TPS 5 TPS
DescribeParameters, GetParameterHistory, LabelParameterVersion, UnlabelParameterVersion e PutParameter 3 TPS 10 TPS

Nesse contexto, uma transação é uma ação da API para uma conta em uma única região. Por exemplo, o comando a seguir cria uma única transação.

aws ssm get-parameter --name "/myapp/prod/log-level"

As ações da API podem ser distribuídas entre as aplicações. Por exemplo, cada um dos cenários a seguir atinge o limite padrão de throughput de 40 TPS:

  • 1 aplicação faz 40 chamadas GetParameter por segundo.

  • 10 aplicações fazem 4 chamadas GetParameter por segundo.

  • 40 aplicações fazem 1 chamada GetParameter por segundo.

Um limite de throughput se aplica a todas as APIs dentro de uma categoria. Por exemplo, a seguinte combinação de chamadas simultâneas de parâmetros para uma aplicação atinge o limite padrão de 40 TPS para APIs de recuperação de parâmetros:

  • GetParameter faz 25 chamadas por segundo.

  • GetParameters faz 10 chamadas por segundo.

  • GetParameterByPath faz 5 chamadas por segundo.

Chamadas DescribeParameters têm um limite de throughput separado. Uma aplicação pode realizar as chamadas anteriores e, ao mesmo tempo, efetuar três chamadas DescribeParameters por segundo sem ultrapassar o limite geral de throughput padrão.

Se suas solicitações de produção excederem um limite de throughput durante a operação normal ou em períodos planejados de alto tráfego, utilize as seguintes técnicas de otimização.

Otimização do throughput no Parameter Store

Quando o Parameter Store recebe várias solicitações de parâmetros em um curto intervalo, sua aplicação pode sofrer controle de utilização. Por exemplo, o CloudWatch Logs ou os logs da sua aplicação mostram erros ThrottlingException ou RateExceeded gerados pelo SDK quando ele chama GetParameter, GetParameters ou GetParametersByPath. Em outros casos, a lógica da aplicação repete com êxito as chamadas à API, mas a latência da aplicação aumenta. Isso pode resultar em interrupções no funcionamento das aplicações, experiência do usuário abaixo do ideal, falhas nas implantações, soluções alternativas complexas e perda de tempo dos desenvolvedores.

Vários fatores podem fazer com que sua aplicação atinja os limites de cota do Parameter Store, incluindo os seguintes:

  • Sua aplicação escala rapidamente devido a um pico no tráfego. Por exemplo, sua aplicação normalmente é executada em 5 instâncias do Amazon EC2. Quando o tráfego aumenta repentinamente, o Amazon EC2 Auto Scaling inicia mais 50 instâncias. Se cada instância ler os parâmetros ao iniciar, as solicitações combinadas podem exceder o limite padrão de solicitações.

  • Seu serviço de contêineres inicia várias tarefas ao mesmo tempo. Por exemplo, um serviço do Amazon ECS pode iniciar várias tarefas de troca durante uma atualização, e cada tarefa pode ler as configurações do Parameter Store no momento em que é iniciada.

  • Suas funções do Lambda recebem muitas solicitações ao mesmo tempo. Por exemplo, o Lambda pode iniciar vários ambientes de função para lidar com o aumento do tráfego. Cada ambiente de função pode ler parâmetros ao ser iniciado.

  • Seu processo de compilação ou lançamento lê muitos parâmetros em um curto intervalo de tempo. Por exemplo, um trabalho de compilação pode ler as configurações de várias aplicações ou ambientes.

  • Sua aplicação lê vários parâmetros por meio do caminho. Por exemplo, sua aplicação lê repetidamente todos os parâmetros em /myapp/prod/, em vez de ler apenas os parâmetros específicos de que precisa. Essas solicitações repetidas podem ultrapassar o limite padrão de solicitações.

Você pode lidar com o controle de utilização do Parameter Store das seguintes formas complementares:

  • Reduzir o throughput

    É possível que sua aplicação esteja recuperando mais dados do que o necessário ou que esteja fazendo isso de maneira ineficiente.

  • Habilitar o throughput

    É possível aumentar a resiliência das aplicações aumentando a cota de throughput para uma região e uma conta específicas. Você pode habilitar e desabilitar a configuração de maior throughput a qualquer momento, durante períodos de tráfego intenso. Para workloads de produção que geram erros de limitação com frequência, considere habilitar essa configuração de forma permanente.

Reduzir o throughput no Parameter Store

Independentemente de você usar o throughput padrão ou um throughput mais alto, analise a frequência e o tipo das chamadas para Parameter Store. Em alguns casos, é possível reduzir o número de solicitações sem alterar os parâmetros. Como o custo é determinado com base no uso, e não em um modelo de assinatura ou de níveis, o resultado é um número menor de interações com a API faturadas.

  • Armazene os valores dos parâmetros em cache na sua aplicação, em vez de ler os mesmos valores a cada solicitação.

    Por exemplo, se sua aplicação faz várias leituras de /myapp/prod/log-level por minuto, ela pode ler o valor uma única vez e reutilizá-lo por um curto período de tempo. Essa técnica reduz as chamadas repetidas para Parameter Store. Escolha um período de reutilização mais curto para valores que mudam com frequência e um período de reutilização mais longo para valores que raramente mudam.

  • Use GetParameters quando souber os nomes de vários parâmetros.

    Por exemplo, em vez de fazer chamadas GetParameter separadas para os parâmetros /myapp/prod/database/host, /myapp/prod/log-level e /myapp/prod/vendor/merchant-id, você pode recuperar uma lista desses parâmetros em uma única solicitação GetParameters.

  • Evite ler mais parâmetros do que o necessário para sua aplicação.

    Se sua aplicação precisar apenas de alguns parâmetros conhecidos, use GetParameter ou GetParameters em vez de ler repetidamente um caminho inteiro, como /myapp/prod/. Use GetParametersByPath quando sua aplicação precisar de um grupo de parâmetros em um caminho. Quando você usa uma taxa de transferência maior, a cota GetParameter é 100x a cota para GetParametersByPath.

  • Distribua as leituras de parâmetros quando muitos recursos forem iniciados ao mesmo tempo.

    Por exemplo, se muitas instâncias do Amazon EC2 ou tarefas do Amazon ECS forem iniciadas durante uma atualização, evite que todos os recursos leiam os parâmetros exatamente ao mesmo tempo. As cotas são por segundo. Sempre que possível, leia os parâmetros uma única vez e armazene seus valores em cache para a aplicação, ou adicione um pequeno atraso para que as solicitações não ocorram todas no mesmo segundo.

  • Para funções do Lambda, considere usar a extensão do Lambda para parâmetros e segredos da AWS.

    A extensão pode armazenar valores de parâmetros localmente para que sejam reutilizados pela função. Essa técnica pode reduzir o número de chamadas ao Parameter Store e também o tempo necessário para recuperar os valores dos parâmetros. Para ver um exemplo dessa técnica, consulte Como usar a extensão do Lambda para parâmetros e segredos do AWS para armazenar em cache parâmetros e segredos.

Aumentar a taxa de transferência

Para workloads de maior volume, é possível habilitar um throughput maior. Essa configuração aumenta o número máximo de transações por segundo suportadas para sua conta e região, mediante um custo. Considere um maior throughput nos seguintes cenários:

  • Sua aplicação tem uma necessidade temporária de maior throughput.

    Por exemplo, uma loja virtual pode ler os parâmetros com mais frequência durante uma promoção de fim de semana. Você pode habilitar um throughput mais alto antes do início da promoção e, em seguida, voltar ao throughput padrão após o término da promoção. Você pode ativar ou desativar um throughput maior a qualquer momento na página Parameter Store Configurações ou usando a AWS CLI.

  • Sua aplicação de produção recupera parâmetros regularmente de forma simultânea e enfrenta problemas de limitação de taxa.

    A recuperação simultânea pode ocorrer quando várias instâncias, contêineres, funções ou trabalhos de compilação leem parâmetros do Parameter Store ao mesmo tempo. Os exemplos incluem:

    • Sua aplicação escala horizontalmente rapidamente. Por exemplo, sua aplicação normalmente é executada em 5 instâncias do Amazon EC2. Quando o tráfego aumenta repentinamente, o Amazon EC2 Auto Scaling inicia mais 50 instâncias. Se cada instância ler os parâmetros ao iniciar, as solicitações combinadas podem exceder o limite padrão de solicitações.

    • Seu serviço de contêineres inicia várias tarefas ao mesmo tempo. Por exemplo, um serviço do Amazon ECS pode iniciar várias tarefas de troca durante uma atualização, e cada tarefa pode ler as configurações do Parameter Store no momento em que é iniciada.

    • Suas funções do Lambda recebem muitas solicitações ao mesmo tempo. Por exemplo, o Lambda pode iniciar vários ambientes de função para lidar com o aumento do tráfego. Cada ambiente de função pode ler parâmetros ao ser iniciado.

    • Seu processo de compilação ou lançamento lê muitos parâmetros em um curto intervalo de tempo. Por exemplo, um trabalho de compilação pode ler as configurações de várias aplicações ou ambientes.

Considerações de custo para maior throughput

Para a opção de maior throughput, são cobradas taxas adicionais. Para ver os preços e exemplos atuais da API Parameter Store, consulte Preços do AWS Systems Manager.

As cobranças são baseadas nas interações com a API do Parameter Store. Uma interação de API é definida como uma interação entre uma solicitação de API e um parâmetro específico. Por exemplo, se uma única solicitação GetParameter retornar 10 parâmetros, essa solicitação contará como 10 interações de API do Parameter Store para fins de cobrança.

Considere uma situação em que você queira aumentar o throughput por um curto período de aumento no tráfego. Sua loja virtual realiza uma promoção de fim de semana e faz interações com a API 1,000,000 Parameter Store durante a promoção. Se, neste exemplo, o custo para um maior nível de throughput for de $0.05 por 10,000 interações com a API, o custo adicional total é de aproximadamente $5. Você pode voltar à taxa de throughput padrão ao final da venda e deixar de arcar com os custos.

Combinação de níveis de throughput e de parâmetros

O throughput opera independentemente dos níveis de parâmetros. Enquanto os níveis de parâmetros controlam os limites de armazenamento e a disponibilidade dos atributos, as configurações de throughput controlam o volume de solicitações. Para atender aos requisitos de performance e escalabilidade, é possível utilizar camadas e throughput em conjunto.

Por exemplo, para dar suporte a aplicações simples e com baixa carga, é possível usar parâmetros padrão com throughput padrão. Para dar suporte a padrões de acesso em grande escala e de alta frequência, é possível combinar parâmetros avançados com maior throughput. Em geral, é necessário aumentar o throughput quando sua aplicação excede os limites padrão de TPS (por exemplo, durante rajadas de leituras ou gravações simultâneas), independentemente do nível de parâmetro usado.

Para obter mais informações sobre throughput máximo e outras cotas do Parameter Store, consulte Endpoints e cotas do AWS Systems Manager.

Alteração da configuração de throughput no Parameter Store

Os procedimentos a seguir descrevem como usar o Systems Manager para alterar o número de transações por segundo que o Parameter Store pode processar para a Conta da AWS e a Região da AWS atuais. É possível alterar a configuração a qualquer momento.

Console
Para alterar o throughput do Parameter Store usando o console
dica

Se você ainda não criou um parâmetro, pode usar o AWS Command Line Interface (AWS CLI) ou o AWS Tools for Windows PowerShell para alterar o throughput. Para mais informações, consulte Alteração da configuração de throughput no Parameter Store.

  1. Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/.

  2. No painel de navegação, escolha Parameter Store.

  3. Escolha a guia Configurações.

  4. Escolha Gerenciar configurações.

  5. Na seção Throughput do parâmetro, escolha uma opção.

  6. Se houver solicitação, selecione a opção para aprovar as alterações e autorizar as cobranças. Escolha Salvar configurações.

CLI
Para alterar o throughput do Parameter Store usando o AWS CLI
  1. Abra a AWS CLI e execute o comando aws ssm update-service-setting para aumentar ou diminuir as transações por segundo que o Parameter Store pode processar na Conta da AWS e na Região da AWS atuais. O exemplo a seguir aumenta o throughput para um nível elevado.

    aws ssm update-service-setting \ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/parameter-store/high-throughput-enabled \ --setting-value true

    Não haverá saída se o comando for bem-sucedido. Para desativar o throughput alto, defina --setting-value como false.

  2. Execute o seguinte comando para visualizar as configurações de serviço de throughput atual para o Parameter Store na Conta da AWS e Região da AWS atuais.

    aws ssm get-service-setting \ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/parameter-store/high-throughput-enabled

    O sistema retorna informações semelhantes às seguintes:

    {
        "ServiceSetting": {
            "SettingId": "/ssm/parameter-store/high-throughput-enabled",
            "SettingValue": "true",
            "LastModifiedDate": 1556551683.923,
            "LastModifiedUser": "arn:aws:sts::123456789012:assumed-role/Administrator/Jasper",
            "ARN": "arn:aws:ssm:us-east-2:123456789012:servicesetting/ssm/parameter-store/high-throughput-enabled",
            "Status": "Customized"
        }
    }
PowerShell
Para alterar a throughput do Parameter Store usando o PowerShell
  1. Aumentar ou diminuir o throughput do Parameter Store na Conta da AWS e na Região da AWS atuais usando o Ferramentas da AWS para PowerShell (Tools for PowerShell). No exemplo a seguir, o throughput foi definido para o nível alto.

    Update-SSMServiceSetting -SettingId "arn:aws:ssm:region:account-id:servicesetting/ssm/parameter-store/high-throughput-enabled" -SettingValue "true" -Region region

    Não haverá saída se o comando for bem-sucedido.

  2. Execute o seguinte comando para visualizar as configurações de serviço de throughput atual para o Parameter Store na Conta da AWS e Região da AWS atuais.

    Get-SSMServiceSetting -SettingId "arn:aws:ssm:region:account-id:servicesetting/ssm/parameter-store/high-throughput-enabled" -Region region

    O sistema retorna informações semelhantes às seguintes:

    ARN              : arn:aws:ssm:us-east-2:123456789012:servicesetting/ssm/parameter-store/high-throughput-enabled
    LastModifiedDate : 4/29/2019 3:35:44 PM
    LastModifiedUser : arn:aws:sts::123456789012:assumed-role/Administrator/Jasper
    SettingId        : /ssm/parameter-store/high-throughput-enabled
    SettingValue     : true
    Status           : Customized