[pt-BR] Terraform을 사용하지 않고 HTTP를 사용하려면
Parte de uma série de posts curtos com conhecimentos que podem ser úteis no dia a dia e quero compartilhar. Muitas vezes eles exigem um conhecimento prévio da ferramenta ou da linguagem.
Esses textos curtos são publicados sob a tag #quick.
엔드포인트를 온라인으로 제어할 수 있는 정확한 위치가 존재합니다.
예를 들어 JWT 시대의 토큰은 AWS Cognito에 기반을 두고 있습니다. 클라이언트가 토큰을 받을 때 정당성을 보장하고, API에 액세스할 수 있는 자유를 허용하고, Cognito를 통해 토큰을 확인하는 데 필요한 토큰을 확인해야 합니다.
Para isso, todo User Pool do Cognito gera um documento público que pode ser consumido pelo seu código. Esse documento fica em
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
변경된 문서를 계속 확인하려면 HTTP 토큰이 필요한 경우에만 필요한 문서를 사용해야 합니다. Como a validação precisa ser rápida e, no contexto de um recurso serverless, somos cobrados pelos tempo de uso, esse acesso extra causa um aumento desnecessário de custos.
Para resolver isso, a requisição HTTP é feita um única vez, durante o build da aplicação, e esse valor é passado para o código como uma ú variável de ambiente.
Usando Terraform, bastou fazer assim:
# Aqui criamos o User Pool onde serão armazenadas
# as credenciais dos usuários
resource "aws_cognito_user_pool" "exemplo" {
name = "exemplo"
# um monte de configurações
}
# Aqui armazenamos os dados da região AWS atual
data "aws_region" "current" {}
# E aqui fazemos a requisição HTTP, que terá os
# parâmetros automaticamente atualizados se você
# mudar de região ou recriar seu User Pool
data "http" "cognito_jwks" {
url = "https://cognito-idp.${data.aws_region.current.name}.amazonaws.com/${aws_cognito_user_pool.exemplo.id}/.well-known/jwks.json"
request_headers = {
Accept = "application/json"
}
}
# Finalmente, exportamos o conteúdo da requisição
# para que seja usada em outros módulos do seu projeto
output "cognito_jwks" {
value = tostring(data.http.cognito_jwks.body)
}
E, no modulo onde você definiu a Lambda, você faz assim:
# essa variável terá um valor atribuído
variable "cognito_jwks" {
type = string
}
resource "aws_lambda_function" "exemplo" {
environment {
variables = {
COGNITO_JWKS = var.cognito_jwks
}
}
Isso funciona com qualquer outro recurso que você criar, não precisa ser necessariamente uma Lambda. COGNITO_JWKS contém um texto e você pode usá-lo da maneira que for melhor para o seu caso.
Ao gerar a Lambda, o conteúdo do arquivo estará disponível como uma variável de ambiente, podendo ser acessado no código com
process.env.COGNITO_JWKS
, caso você esteja usando JavaScript.Reference
이 문제에 관하여([pt-BR] Terraform을 사용하지 않고 HTTP를 사용하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pbalduino/consumindo-conteudo-http-no-terraform-196e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)