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á.
As fontes de dados são recursos da conta da AWS com que as APIs GraphQL podem interagir. O AWS AppSync oferece suporte a várias fontes de dados, como o AWS Lambda, o Amazon DynamoDB, os bancos de dados relacionais (Amazon Aurora Sem Servidor), o Amazon OpenSearch Service e endpoints HTTP. Uma API do AWS AppSync pode ser configurada para interagir com várias fontes de dados, permitindo que você agregue dados em um único local. O AWS AppSync pode usar os recursos da AWS da sua conta que já existem ou provisionar tabelas do DynamoDB em seu nome de uma definição de esquema.
A seção a seguir mostrará como anexar uma fonte de dados à sua API GraphQL.
Tipos de fontes de dados
Agora que você criou um esquema no console do AWS AppSync e o salvou, adicione uma fonte de dados. Quando você começa a criar uma API, há a opção de provisionar uma tabela do Amazon DynamoDB durante a criação do esquema predefinido. No entanto, não abordaremos essa opção nesta seção. Você pode ver um exemplo disso na seção Iniciar um esquema.
Em vez disso, analisaremos todas as fontes de dados compatíveis com o AWS AppSync. Há muitos fatores que influenciam a escolha da solução certa para seu aplicativo. As seções abaixo fornecerão contexto adicional para cada fonte de dados. Para obter informações gerais sobre fontes de dados, consulte Data sources.
Amazon DynamoDB
O Amazon DynamoDB é uma das principais soluções do AWS de armazenamento para aplicativos escaláveis. O componente principal do DynamoDB é a tabela, que é simplesmente um conjunto de dados. Normalmente, você cria tabelas com base em entidades como Book
ou Author
. As informações de entrada da tabela são armazenadas como itens, que são grupos de campos exclusivos para cada entrada. Um item completo representa uma linha/registro no banco de dados. Por exemplo, um item para uma entrada da Book
pode incluir title
e author
com seus valores. Os campos individuais, como title
e, author
são chamados de atributos, que são semelhantes aos valores das colunas em bancos de dados relacionais.
Como você pode imaginar, as tabelas serão usadas para armazenar dados da sua aplicação. O AWS AppSync permite que você conecte suas tabelas do DynamoDB à sua API GraphQL para manipular dados. Veja este caso de uso
AWS Lambda
O Lambda é um serviço orientado por eventos que cria automaticamente os recursos necessários para executar códigos como resposta a um evento. O Lambda usa funções, que são declarações de grupo contendo o código, as dependências e as configurações para executar um recurso. As funções são executadas automaticamente quando detectam um gatilho, um grupo de atividades que invocam sua função. Um gatilho pode ser qualquer coisa como um aplicativo fazendo uma chamada de API, um serviço da AWS em sua conta gerando um recurso etc. Quando acionadas, as funções processarão eventos, que são documentos JSON com os dados a serem modificados.
O Lambda é bom para executar códigos sem precisar provisionar os recursos para executá-lo. Veja este caso de usogetPost ( id: String ! ) : Post
e getPostsByAuthor ( author: String ! ) : [ Post ]
), eles usam funções do Lambda para processar solicitações de entrada. Na Opção 2: AWS AppSync com o resolvedor do Lambda, eles usam o serviço do AWS AppSync para manter seu esquema e vincular uma fonte de dados do Lambda a uma das operações. Quando a operação é chamada, o Lambda interage com o Amazon RDS Proxy para executar a lógica de negócios no banco de dados.
Amazon RDS
O Amazon RDS permite que você crie e configure rapidamente bancos de dados relacionais. No Amazon RDS, você criará uma instância de banco de dados genérica que servirá como ambiente de banco de dados isolado na nuvem. Nesta instância, você usará um mecanismo de banco de dados, que é o software RDBMS real (PostgreSQL, MySQL etc.). O serviço elimina grande parte do trabalho de back-end ao fornecer escalabilidade usando a infraestrutura da AWS, os serviços de segurança, como patches e criptografia, e reduz os custos administrativos das implantações.
Veja o mesmo caso de uso
Amazon EventBridge
No EventBridge, você criará barramentos de eventos, que são pipelines que recebem eventos de serviços ou aplicações que você anexa (a fonte do evento) e os processam com base em um conjunto de regras. Um evento é uma mudança de estado em um ambiente de execução, enquanto uma regra é um conjunto de filtros para eventos. Uma regra segue um padrão de evento ou metadados da mudança de estado de um evento (id, região, número da conta, ARN(s) etc.). Quando um evento corresponde ao padrão do evento, o EventBridge envia o evento pelo pipeline até o serviço de destino (destino) e aciona a ação especificada na regra.
O EventBridge faz o roteamento de operações de mudança de estado para algum outro serviço. Veja este caso de uso
Nenhuma fonte de dados
Se você não planeja usar uma fonte de dados, pode defini-la como none
. Uma fonte de dados none
, embora ainda seja explicitamente categorizada como fonte de dados, não é um meio de armazenamento. Normalmente, um resolvedor invoca uma ou mais fontes de dados em algum momento para processar a solicitação. No entanto, há situações em que talvez você não precise manipular uma fonte de dados. Definir a fonte de dados como none
vai executar a solicitação, ignorar a etapa de invocação de dados e executar a resposta.
Veja o mesmo caso de usonone
, o que funciona como um valor de passagem sem invocação da fonte de dados. O esquema é preenchido com os dados, que são enviados aos assinantes.
OpenSearch
O Amazon OpenSearch Service é um conjunto de ferramentas para implementar a pesquisa de texto completo, a visualização de dados e o registro em log. Você pode usar esse serviço para consultar os dados estruturados que enviou.
Neste serviço, você criará instâncias do OpenSearch. Eles são chamados de nós. Em um nó, você adicionará pelo menos um índice. Conceitualmente, os índices são um pouco como tabelas em bancos de dados relacionais. (No entanto, o OpenSearch não é compatível com ACID, então não deve ser usado dessa forma). Você preencherá seu índice com os dados que carregará no serviço OpenSearch. Quando seus dados forem carregados, eles serão indexados em um ou mais fragmentos existentes no índice. Um fragmento é como uma partição do seu índice que contém alguns dos seus dados e pode ser consultado separadamente de outros fragmentos. Depois de carregados, seus dados serão estruturados como arquivos JSON chamados documentos. Em seguida, você pode consultar o nó em busca de dados no documento.
Endpoints de HTTP
Você pode usar endpoints HTTP como fontes de dados. O AWS AppSync pode enviar solicitações aos endpoints com as informações relevantes, como parâmetros e carga útil. A resposta HTTP será exposta ao resolvedor, que retornará a resposta final após concluir suas operações.
Adicionar uma fonte de dados
Se você criou uma fonte de dados, pode vinculá-la ao serviço AWS AppSync e, mais especificamente, à API.
-
Faça login no AWS Management Console e abra o Console do AppSync
. -
Escolha sua API no Painel.
-
Na barra lateral, escolha Fontes de dados.
-
-
Escolha Criar fonte de dados.
-
Dê um nome à sua fonte de dados. Você também pode incluir uma descrição, mas isso é opcional.
-
Selecione o tipo de fonte de dados.
-
Para o DynamoDB, você precisará escolher sua Região e, em seguida, a tabela na Região. Você pode definir regras de interação com sua tabela criando um novo perfil genérico ou importando um perfil existente. Você pode habilitar o versionamento, que pode criar automaticamente versões de dados para cada solicitação quando vários clientes estão tentando atualizar os dados ao mesmo tempo. O versionamento é usado para manter diversas variantes de dados para fins de detecção e resolução de conflitos. Você também pode ativar a geração automática de esquemas, que usa sua fonte de dados e gera parte do CRUD,
List
eQuery
das operações necessárias para acessá-la em seu esquema.Para o OpenSearch, você terá que escolher sua Região e, em seguida, o domínio (cluster) na Região. Você pode definir regras de interação com seu domínio criando uma nova função genérica ou importando uma função existente.
Para o Lambda, você terá que escolher sua Região e, em seguida, o ARN da função do Lambda na Região. Você pode definir regras de interação com sua função do Lambda criando um novo perfil da tabela genérica ou importando um perfil existente.
Para HTTP, você precisará inserir seu endpoint HTTP.
Para o EventBridge, você terá que escolher sua região e, em seguida, o barramento de eventos na Região. Você pode definir regras de interação com seu barramento de eventos, criando uma nova função genérica ou importando uma função existente.
Para o RDS, você precisará escolher sua Região, depois o armazenamento secreto (nome de usuário e senha), nome do banco de dados e esquema.
Para nenhum deles, você adicionará uma fonte de dados sem uma fonte de dados real. Isso serve para lidar com resolvedores localmente, e não por meio de uma fonte de dados real.
nota
Se você estiver importando funções existentes, elas precisarão de uma política de confiança. Para obter mais informações sobre a política de confiança, consulte política de confiança do IAM.
-
-
Escolha Criar.
nota
Como alternativa, se você estiver criando uma fonte de dados do DynamoDB, acesse a página Esquema no console, escolha Criar recursos na parte superior da página e preencha um modelo predefinido para converter em uma tabela. Nessa opção, você vai preencher ou importar o tipo de base, configurar os dados básicos da tabela, incluindo a chave de partição, além de analisar as alterações do esquema.
Política de confiança do IAM
Se estiver usando um perfil existente do IAM para sua fonte de dados, é necessário conceder as permissões apropriadas a esse perfil para executar operações no recurso da AWS, como PutItem
em uma tabela do Amazon DynamoDB. Também é necessário modificar a política de confiança desse perfil para permitir que ele use o AWS AppSync para acessar os recursos, conforme mostrado na seguinte política de exemplo:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "appsync.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Você também pode adicionar condições à sua política de confiança para limitar o acesso à fonte de dados, conforme desejado. Atualmente, as chaves SourceArn
e SourceAccount
podem ser usadas nessas condições. Por exemplo, a política a seguir limita o acesso à sua fonte de dados na conta 123456789012
:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "appsync.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
}
]
}
Como alternativa, é possível restringir o acesso de uma API específica a uma fonte de dados, por exemplo, abcdefghijklmnopq
, usando a seguinte política:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "appsync.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:appsync:us-west-2:123456789012:apis/abcdefghijklmnopq"
}
}
}
]
}
Você pode limitar o acesso a todas as APIs do AWS AppSync de uma região específica, por exemplo, us-east-1
, usando a seguinte política:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "appsync.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:appsync:us-east-1:123456789012:apis/*"
}
}
}
]
}
Na próxima seção (Configurar os resolvedores), vamos adicionar nossa lógica de negócios do resolvedor e anexá-la aos campos em nosso esquema para processar os dados em nossa fonte de dados.
Para obter mais informações, consulte Modificando um perfil no Guia do usuário do IAM.
Para obter mais informações sobre o acesso entre contas de resolvedores do AWS Lambda para o AWS AppSync, consulte Building cross-account AWS Lambda resolvers for AWS AppSync