Usando um manifesto para habilitar recursos adicionais de recuperação - AWS AppConfig

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando um manifesto para habilitar recursos adicionais de recuperação

AWS AppConfig O agente oferece os seguintes recursos adicionais para ajudá-lo a recuperar configurações para seus aplicativos.

Compreendendo os manifestos do agente

Para habilitar esses recursos AWS AppConfig do Agente, você cria um manifesto. Um manifesto é um conjunto de dados de configuração que você fornece para controlar as ações que o agente pode realizar. Um manifesto está escrito emJSON. Ele contém um conjunto de chaves de nível superior que correspondem às diferentes configurações que você implantou usando. AWS AppConfig

Um manifesto pode incluir várias configurações. Além disso, cada configuração no manifesto pode identificar um ou mais recursos do agente a serem usados na configuração especificada. O conteúdo do manifesto usa o seguinte formato:

{ "application_name:environment_name:configuration_name": { "agent_feature_to_enable_1": { "feature-setting-key": "feature-setting-value" }, "agent_feature_to_enable_2": { "feature-setting-key": "feature-setting-value" } } }

Aqui está um JSON exemplo de um manifesto com duas configurações. A primeira configuração (MyApp) não usa nenhum recurso do AWS AppConfig Agente. A segunda configuração (My2ndApp) usa a cópia da configuração de gravação em disco e os recursos de recuperação de várias contas:

{ "MyApp:Test:MyAllowListConfiguration": {}, "My2ndApp:Beta:MyEnableMobilePaymentsFeatureFlagConfiguration": { "credentials": { "roleArn": "arn:us-west-1:iam::123456789012:role/MyTestRole", "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac", "roleSessionName": "AwsAppConfigAgent", "credentialsDuration": "2h" }, "writeTo": { "path": "/tmp/aws-appconfig/my-2nd-app/beta/my-enable-payments-feature-flag-configuration.json" } } }
Como fornecer um manifesto de agente

Você pode armazenar o manifesto como um arquivo em um local onde o AWS AppConfig Agente possa lê-lo. Ou você pode armazenar o manifesto como uma AWS AppConfig configuração e direcionar o agente para ele. Para fornecer um manifesto do agente, você deve definir uma variável de MANIFEST ambiente com um dos seguintes valores:

Localização do manifesto Valor da variável de ambiente Caso de uso

Arquivo

arquivo: /path/to/agent-manifest.json

Use esse método se seu manifesto não mudar com frequência.

AWS AppConfig configuração

application-name:environment-name:configuration-name

Use esse método para atualizações dinâmicas. Você pode atualizar e implantar um manifesto armazenado AWS AppConfig como configuração da mesma forma que armazena outras AWS AppConfig configurações.

Variável de ambiente

Conteúdo do manifesto (JSON)

Use esse método se seu manifesto não mudar com frequência. Esse método é útil em ambientes de contêiner em que é mais fácil definir uma variável de ambiente do que expor um arquivo.

Para obter mais informações sobre a configuração de variáveis para o AWS AppConfig Agent, consulte o tópico relevante para seu caso de uso:

Configurando o AWS AppConfig Agente para recuperar configurações de várias contas

Você pode configurar o AWS AppConfig Agente para recuperar configurações de várias Contas da AWS inserindo substituições de credenciais no manifesto do Agente. AWS AppConfig As substituições de credenciais incluem o Amazon Resource Name (ARN) de uma função AWS Identity and Access Management (IAM), um ID da função, um nome de sessão e a duração de quanto tempo o agente pode assumir a função.

Você insere esses detalhes em uma seção de “credenciais” no manifesto. A seção “credenciais” usa o seguinte formato:

{ "application_name:environment_name:configuration_name": { "credentials": { "roleArn": "arn:partition:iam::account_ID:role/roleName", "roleExternalId": "string", "roleSessionName": "string", "credentialsDuration": "time_in_hours" } } }

Exemplo:

{ "My2ndApp:Beta:MyEnableMobilePaymentsFeatureFlagConfiguration": { "credentials": { "roleArn": "arn:us-west-1:iam::123456789012:role/MyTestRole", "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac", "roleSessionName": "AWSAppConfigAgent", "credentialsDuration": "2h" } } }

Antes de recuperar uma configuração, o agente lê os detalhes da credencial da configuração no manifesto e, em seguida, assume a IAM função especificada para essa configuração. Você pode especificar um conjunto diferente de substituições de credenciais para configurações diferentes em um único manifesto. O diagrama a seguir mostra como o AWS AppConfig Agente, ao ser executado na Conta A (a conta de recuperação), assume funções separadas especificadas para as Contas B e C (as contas do fornecedor) e, em seguida, chama a GetLatestConfigurationAPIoperação para recuperar os dados de configuração da AWS AppConfig execução nessas contas:

Como o AWS AppConfig agente trabalha com IAM funções separadas Contas da AWS.

Configure permissões para recuperar dados de configuração das contas do fornecedor

AWS AppConfig O agente em execução na conta de recuperação precisa de permissão para recuperar dados de configuração das contas do fornecedor. Você concede permissão ao agente criando uma função AWS Identity and Access Management (IAM) em cada uma das contas do fornecedor. AWS AppConfig O agente na conta de recuperação assume essa função para obter dados das contas do fornecedor. Conclua os procedimentos nesta seção para criar uma política de IAM permissões, uma IAM função e adicionar substituições de agente ao manifesto.

Antes de começar

Colete as informações a seguir antes de criar uma política de permissão e uma função noIAM.

  • O IDs para cada um Conta da AWS. A conta de recuperação é a conta que chamará outras contas para obter dados de configuração. As contas do fornecedor são as contas que fornecerão os dados de configuração para a conta de recuperação.

  • O nome da IAM função usada por AWS AppConfig na conta de recuperação. Aqui está uma lista das funções usadas por AWS AppConfig, por padrão:

    • Para o Amazon Elastic Compute Cloud (AmazonEC2), AWS AppConfig usa a função de instância.

    • Para AWS Lambda, AWS AppConfig usa a função de execução do Lambda.

    • Para o Amazon Elastic Container Service (AmazonECS) e o Amazon Elastic Kubernetes Service (EKSAmazon AWS AppConfig ), usa a função de contêiner.

    Se você configurou o AWS AppConfig Agente para usar uma IAM função diferente especificando a variável de ROLE_ARN ambiente, anote esse nome.

Crie a política de permissões

Use o procedimento a seguir para criar uma política de permissões usando o IAM console. Conclua o procedimento em cada um deles Conta da AWS que fornecerá dados de configuração para a conta de recuperação.

Para criar uma política do IAM
  1. Faça login AWS Management Console na conta de um fornecedor.

  2. Abra o IAM console em https://console.aws.amazon.com/iam/.

  3. No painel de navegação, selecione Políticas e, em seguida, Criar política.

  4. Escolha a JSONopção.

  5. No editor de políticas, substitua o padrão JSON pela seguinte declaração de política. Atualize cada example resource placeholder com detalhes da conta do fornecedor.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "appconfig:StartConfigurationSession", "appconfig:GetLatestConfiguration" ], "Resource": "arn:partition:appconfig:region:vendor_account_ID:application/vendor_application_ID/environment/vendor_environment_ID/configuration/vendor_configuration_ID" } ] }

    Veja um exemplo abaixo:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "appconfig:StartConfigurationSession", "appconfig:GetLatestConfiguration" ], "Resource": "arn:aws:appconfig:us-east-2:111122223333:application/abc123/environment/def456/configuration/hij789" } ] }
  6. Escolha Próximo.

  7. No campo Nome da política, insira um nome.

  8. (Opcional) Em Adicionar tags, adicione um ou mais pares de valores de chave de tag para organizar, rastrear ou controlar o acesso a essa política.

  9. Escolha Criar política. O sistema retorna para a página Policies (Políticas).

  10. Repita esse procedimento em cada uma delas Conta da AWS que fornecerá dados de configuração para a conta de recuperação.

Crie a IAM função

Use o procedimento a seguir para criar uma IAM função usando o IAM console. Conclua o procedimento em cada um deles Conta da AWS que fornecerá dados de configuração para a conta de recuperação.

Para criar uma função do IAM
  1. Faça login AWS Management Console na conta de um fornecedor.

  2. Abra o IAM console em https://console.aws.amazon.com/iam/.

  3. No painel de navegação, escolha Funções e, em seguida, escolha Criar política.

  4. Em Tipo de Entidade Confiável, escolha Conta da AWS.

  5. Na Conta da AWSseção, escolha Outro Conta da AWS.

  6. No campo ID da conta, insira o ID da conta de recuperação.

  7. (Opcional) Como prática recomendada de segurança para essa função assumida, escolha Exigir ID externa e insira uma string.

  8. Escolha Próximo.

  9. Na página Adicionar permissões, use o campo Pesquisar para localizar a política que você criou no procedimento anterior. Marque a caixa de seleção ao lado do nome.

  10. Escolha Próximo.

  11. Em Nome do perfil, insira um nome.

  12. (Opcional) Em Description (Descrição), insira uma descrição.

  13. Para Etapa 1: Selecionar entidades confiáveis, escolha Editar. Substitua a política de JSON confiança padrão pela política a seguir. Atualize cada example resource placeholder com informações da sua conta de recuperação.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::retrieval_account_ID:role/appconfig_role_in_retrieval_account" }, "Action": "sts:AssumeRole" } ] }
  14. (Opcional) em Tags, adicione um ou mais pares de valores tag-chave para organizar, monitorar ou controlar acesso para essa função.

  15. Selecione Create role (Criar função). O sistema faz com que você retorne para a página Roles.

  16. Pesquise a função que você acabou de criar. Escolha-o. Na ARNseção, copie ARN o. Você especificará essas informações no próximo procedimento.

Adicione substituições de credenciais ao manifesto

Depois de criar a IAM função na sua conta de fornecedor, atualize o manifesto na conta de recuperação. Especificamente, adicione o bloco de credenciais e a IAM função ARN para recuperar dados de configuração da conta do fornecedor. Aqui está o JSON formato:

{ "vendor_application_name:vendor_environment_name:vendor_configuration_name": { "credentials": { "roleArn": "arn:partition:iam::vendor_account_ID:role/name_of_role_created_in_vendor_account", "roleExternalId": "string", "roleSessionName": "string", "credentialsDuration": "time_in_hours" } } }

Exemplo:

{ "My2ndApp:Beta:MyEnableMobilePaymentsFeatureFlagConfiguration": { "credentials": { "roleArn": "arn:us-west-1:iam::123456789012:role/MyTestRole", "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac", "roleSessionName": "AwsAppConfigAgent", "credentialsDuration": "2h" } } }
Valide se a recuperação de várias contas está funcionando

Você pode validar se esse agente é capaz de recuperar dados de configuração de várias contas revisando os registros do AWS AppConfig agente. O registro INFO de nível dos dados iniciais recuperados para 'YourApplicationName:YourEnvironmentName:YourConfigurationName' é o melhor indicador para recuperações bem-sucedidas. Se as recuperações estiverem falhando, você deverá ver um registro de ERROR nível indicando o motivo da falha. Aqui está um exemplo de uma recuperação bem-sucedida de uma conta de fornecedor:

[appconfig agent] 2023/11/13 11:33:27 INFO AppConfig Agent 2.0.x [appconfig agent] 2023/11/13 11:33:28 INFO serving on localhost:2772 [appconfig agent] 2023/11/13 11:33:28 INFO retrieved initial data for 'MyTestApplication:MyTestEnvironment:MyDenyListConfiguration' in XX.Xms

Configurando o AWS AppConfig Agente para gravar cópias de configuração em disco

Você pode configurar o AWS AppConfig Agente para armazenar automaticamente uma cópia de uma configuração em disco em texto simples. Esse recurso permite que os clientes com aplicativos que leem dados de configuração do disco se integrem AWS AppConfig.

Esse recurso não foi projetado para ser usado como um recurso de backup de configuração. AWS AppConfig O agente não lê os arquivos de configuração copiados para o disco. Se você quiser fazer backup das configurações em disco, consulte as variáveis BACKUP_DIRECTORY e de PRELOAD_BACKUP ambiente para Usar o AWS AppConfig Agente com a Amazon EC2 ou Usar o AWS AppConfig Agente com a Amazon ECS e a Amazon EKS.

Atenção

Observe as seguintes informações importantes sobre esse recurso:

  • As configurações salvas em disco são armazenadas em texto simples e podem ser lidas por humanos. Não habilite esse recurso para configurações que incluam dados confidenciais.

  • Esse recurso grava no disco local. Use o princípio do privilégio mínimo para permissões do sistema de arquivos. Para obter mais informações, consulte Implemente o acesso de privilégio mínimo.

Para habilitar a configuração de gravação, copie em disco
  1. Edite o manifesto.

  2. Escolha a configuração que você AWS AppConfig deseja gravar no disco e adicione um writeTo elemento. Exemplo:

    { "application_name:environment_name:configuration_name": { "writeTo": { "path": "path_to_configuration_file" } } }

    Exemplo:

    { "MyTestApp:MyTestEnvironment:MyNewConfiguration": { "writeTo": { "path": "/tmp/aws-appconfig/mobile-app/beta/enable-mobile-payments" } } }
  3. Salve as alterações. O arquivo configuration.json será atualizado sempre que novos dados de configuração forem implantados.

Valide se a cópia da configuração de gravação no disco está funcionando

Você pode validar se cópias de uma configuração estão sendo gravadas em disco examinando os registros do AWS AppConfig agente. A entrada de INFO registro com a frase "configuração INFO escrita 'application:environment:configuration'para file_path“indica que o AWS AppConfig Agente grava cópias de configuração em disco.

Exemplo:

[appconfig agent] 2023/11/13 11:33:27 INFO AppConfig Agent 2.0.x [appconfig agent] 2023/11/13 11:33:28 INFO serving on localhost:2772 [appconfig agent] 2023/11/13 11:33:28 INFO retrieved initial data for 'MobileApp:Beta:EnableMobilePayments' in XX.Xms [appconfig agent] 2023/11/13 17:05:49 INFO wrote configuration 'MobileApp:Beta:EnableMobilePayments' to /tmp/configs/your-app/your-env/your-config.json