Como posso usar um runbook SAW para solucionar problemas do meu nome de domínio personalizado no API Gateway?

8 minuto de leitura
0

Quero solucionar problemas da minha configuração de nome de domínio personalizado no Amazon API Gateway usando o runbook de fluxo de trabalho de automação (SAW) do AEWS Support AWSSupport-TroubleshootAPIGatewayCustomDomainConfig.

Breve descrição

O runbook AWSSupport-TroubleshootAPIGatewayCustomDomainConfig fornece uma solução automatizada para verificar sua configuração de nome de domínio personalizado no API Gateway. Esse runbook verifica se o nome de domínio personalizado está configurado no API Gateway com as configurações corretas para o registro DNS e os mapeamentos da API.

Para obter mais informações sobre o SAW, consulte Fluxos de trabalho de automação do AWS Support (SAW).

Resolução

O runbook AWSSupport-TroubleshootAPIGatewayCustomDomainConfig valida as seguintes características:

  • Se o nome de domínio personalizado existe no API Gateway.
  • Se existem mapeamentos entre o nome de domínio personalizado e qualquer API.
  • Se a lista de mapeamentos anterior contém um mapeamento entre o nome de domínio personalizado e as APIs especificadas.
  • Se há um registro DNS existente para o nome de domínio personalizado.
  • Se o registro DNS aponta para o valor-alvo correto, conforme gerado pelo API Gateway durante a criação do nome de domínio personalizado.

O usuário atual ou o perfil de serviço assumidos do AWS Identity and Access Management (IAM) que executa a automação deve ter as seguintes permissões:

  • apigateway:GET
  • iam:ListRoles
  • iam:PassRole
  • route53:ListResourceRecordSets
  • ssm:DescribeAutomationExecutions
  • ssm:GetAutomationExecution
  • ssm:DescribeAutomationStepExecutions
  • ssm:StartAutomationExecution
  • ssm:DescribeDocument
  • ssm:GetDocument
  • ssm:ListDocuments

Pré-requisitos

Antes de executar o runbook, certifique-se de que seu perfil ou usuário do IAM tenha as permissões corretas. Essas permissões incluem permissões específicas do AWS Systems Manager e as permissões adicionais específicas dos serviços abordadas nas seções anteriores deste artigo.

Execute a automação AWSSupport-TroubleshootAPIGatewayCustomDomainConfig

  1. Abra o runbook AWSSupport-TroubleshootAPIGatewayCustomDomainConfig.
    Observação: o runbook está na região da AWS us-east-1.

  2. Selecione Executar automação.

    Para parâmetros de entrada, insira o seguinte:

    • **AutomationAssumeRole (opcional):**O nome do recurso da Amazon (ARN) do perfil do IAM que permite que a Automation, um recurso do Systems Manager, realize as ações em seu nome. Se nenhum perfil for especificado, a Automação usará as permissões do usuário que inicia o runbook.
    • DomainName (obrigatório): o nome de domínio personalizado da sua API.
    • ApiId (obrigatório): o ID da sua API.
    • DNSServerIp (opcional): um servidor DNS para resolver o nome de domínio personalizado. Quando o valor não é especificado, o AWS DNS Server é usado.
    • HostedZoneId (opcional): o ID da zona hospedada pública que contém o registro DNS para o nome de domínio personalizado. Isso não é necessário quando o Route 53 não é usado para DNS.
  3. Selecione Executar. A automação é iniciada.

  4. Depois que a automação terminar, revise a seção Saídas para obter resultados detalhados.

    Se as verificações do runbook forem executadas com êxito, sua saída mostrará os detalhes de configuração do nome de domínio personalizado.

    Se a configuração do nome de domínio personalizado não passar em uma das verificações do runbook, o runbook falhará na etapa apropriada. As recomendações de solução de problemas estão disponíveis na saída do runbook.

Exemplos de saídas para o runbook AWSSupport-TroubleshootAPIGatewayCustomDomainConfig

Exemplo de saída para verificações de configuração bem-sucedidas:

{
  "Result": "The custom domain name is configured correctly",
  "DomainDetails": {
    "DomainName": "<<CUSTOM DOMAIN NAME>>",
    "APIGatewayDomainName": "d-XXXXXXXX.execute-api.<<REGION>>.amazonaws.com",
    "Status": "XXXXXX",
    "EndpointType": "XXXXXX"
  },
  "MappingDetails": [
    {
      "API": "XXXXXX",
      "MappingId": "XXXXXX",
      "MappingKey": "XXXXXX",
      "Stage": "XXXXXX",
      "Status": "ApiHasMappings"
    }
  ],
  "DNSDetails": {
    "<<RECORD TYPE>>": [
      "XXX.XXX.XXX.XXX",
      "XXX.XXX.XXX.XXX",
      "XXX.XXX.XXX.XXX"
    ]
  }
}

Exemplo de saída para quando o nome de domínio personalizado não está no API Gateway:

" Check (1/5): Check custom domain name exists.
  Status: Failed.

  Troubleshooting Recommendations:
    - Custom domain name: <<CUSTOM DOMAIN NAME>> is not configured in API gateway.
    - Please see the link below for information on how to setup a custom domain for API Gateway:
      > https://aws.amazon.com/pt/premiumsupport/knowledge-center/custom-domain-name-amazon-api-gateway/

    - The remaining checks have not been run at this point hence there may be other errors in the current configuration.
    - After resolving the error above, please check that your custom domain name has:
      > A mapping to the API you are trying to reach
      > A DNS record pointing to the generated API Gateway domain name.

    - You can run this automation again to confirm the changes have been made correctly.
    - More details for this particular error can be found within the individual step details.

  Check (2/5): List mappings.
  Status: Skipped

  Check (3/5): Check mapping exists to API Id: <<API ID>>.
  Status: Skipped

  Check (4/5): Check DNS record exists for custom domain name.
  Status: Skipped

  Check (5/5): Validate DNS record.
  Status: Skipped "

Exemplo de saída para quando o nome de domínio personalizado não tem nenhum mapeamento:

" Check (1/5): Check custom domain name exists.
  Status: Complete

  Check (2/5): List mappings.
  Status: Failed

  Troubleshooting Recommendations:
    - <<CUSTOM DOMAIN NAME>> does not contain any mappings.
    - Please see the documentation to create one here:
      > https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mappings.html

    - The remaining checks have not been run at this point hence there may be other errors in the current configuration.
    - After resolving the error above, please check that your custom domain name has:
      > A mapping to the API you are trying to reach
      > A DNS record pointing to the generated API Gateway domain name.

    - You can run this automation again to confirm the changes have been made correctly.
    - More details for this particular error can be found within the individual step details.

  Check (3/5): Check mapping exists to API Id: <<API ID>>.
  Status: Skipped

  Check (4/5): Check DNS record exists for custom domain name.
  Status: Skipped

  Check (5/5): Validate DNS record.
  Status: Skipped "

Exemplo de saída para quando o nome de domínio personalizado não tem mapeamento para o ID de API especificado:

" Check (1/5): Check custom domain name exists.
  Status: Complete

  Check (2/5): List mappings.
  Status: Complete

  Check (3/5): Check mapping exists to API Id: <<API ID>>.
  Status: Failed

    Troubleshooting Recommendations:
    - A base path mapping does not exist between API Id: <<API ID>> and custom domain name: <<CUSTOM DOMAIN NAME>>.
    - Please see the documentation to create one here:
      > https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mappings.html

    - The remaining checks have not been run at this point hence there may be other errors in the current configuration.
    - After resolving the error above, please check that your custom domain name has:
      > A mapping to the API you are trying to reach
      > A DNS record pointing to the generated API Gateway domain name.

    - You can run this automation again to confirm the changes have been made correctly.
    - More details for this particular error can be found within the individual step details.

  Check (4/5): Check DNS record exists for custom domain name.
  Status: Not Run

  Check (5/5): Validate DNS record.
  Status: Skipped "

Exemplo de saída para quando não há registro DNS para o nome de domínio personalizado:

" Check (1/5): Check custom domain name exists.
  Status: Complete

  Check (2/5): List mappings.
  Status: Complete

  Check (3/5): Check mapping exists to API Id: <<API ID>>.
  Status: Complete

  Check (4/5): Check DNS record exists for custom domain name.
  Status: Failed

  Troubleshooting Recommendations:
    - There is no DNS record for the custom domain name: <<CUSTOM DOMAIN NAME>> or the domain could not be resolved.
    - Please check your DNS server for a record for this domain and ensure it can be resolved.

    - The remaining checks have not been run at this point hence there may be other errors in the current configuration.
    - After resolving the error above, please check that your custom domain name has:
      > A DNS record pointing to the generated API Gateway domain name.

    - You can run this automation again to confirm the changes have been made correctly.
    - More details for this particular error can be found within the individual step details.


  Check (5/5): Validate DNS record.
  Status: Skipped "

Exemplo de saída para quando o registro DNS não está apontando para o destino correto:

" Check (1/5): Check custom domain name exists.
  Status: Complete

  Check (2/5): List mappings.
  Status: Complete

  Check (3/5): Check mapping exists to API Id: <<API ID>>.
  Status: Complete

  Check (4/5): Check DNS record exists for custom domain name.
  Status: Complete

  Check (5/5): Validate DNS record.
  Status: Failed

  Troubleshooting Recommendations:
    - The DNS record for the custom domain name: <<CUSTOM DOMAIN NAME>> may not be pointing to the correct target.
    - The API Gateway domain name generated for this custom domain name is: <<API GATEWAY DOMAIN NAME>> which should be the target of the DNS record created for the custom domain name.
    - Please check your DNS record for this domain and ensure it is pointing to the API Gateway domain name: <<API GATEWAY DOMAIN NAME>>.

    - After resolving the error above, you can run this automation again to confirm the changes have been made correctly.
    - More details for this particular error can be found within the individual step details."

Observação: para ajudar você a solucionar problemas, remediar, gerenciar e reduzir custos em seus recursos da AWS, o AWS Support mantém um subconjunto dos runbooks predefinidos fornecidos pela AWS. Os prefixos do runbook são AWS Support- e AWSPremiumSupport-.

Informações relacionadas

Execute uma automação

Configurando a automação