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 em sua AWS conta com os quais o GraphQL APIs pode interagir. AWS AppSync oferece suporte a várias fontes de dados AWS Lambda, como Amazon DynamoDB, bancos de dados relacionais (Amazon Aurora Serverless), Amazon Service e endpoints HTTP. OpenSearch Uma AWS AppSync API pode ser configurada para interagir com várias fontes de dados, permitindo que você agregue dados em um único local. AWS AppSync pode usar AWS recursos existentes da sua conta ou provisionar tabelas do DynamoDB em seu nome a partir 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 AWS AppSync console, você pode anexar uma fonte de dados a ele. 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 todos os AWS AppSync suportes de fontes de dados. 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 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 do seu aplicativo. AWS AppSync permite que você conecte suas tabelas do DynamoDB à sua API do 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 algo como um aplicativo fazendo uma chamada de API, um AWS serviço 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 Lambda, eles usam o AWS AppSync serviço para manter seu esquema e vincular uma fonte de dados 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 AWS infraestrutura, 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
Em EventBridge, você criará barramentos de eventos, que são pipelines que recebem eventos de serviços ou aplicativos anexados (a origem 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, EventBridge enviará o evento pelo pipeline até o serviço de destino (destino) e acionará a ação especificada na regra.
EventBridge é bom para rotear 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 pesquisa de texto completo, visualização de dados e registro. Você pode usar esse serviço para consultar os dados estruturados que enviou.
Nesse serviço, você criará instâncias de 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, OpenSearch não é compatível com ACID, então não deve ser usado dessa forma). Você preencherá seu índice com os dados que você envia para o OpenSearch serviço. 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. 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 AWS AppSync serviço e, mais especificamente, à API.
-
Faça login no AWS Management Console e abra o AppSyncconsole
. -
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 isso 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.
Pois EventBridge, você terá que escolher sua região e, em seguida, o ônibus do evento 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 você estiver usando uma função do IAM existente para sua fonte de dados, precisará conceder a essa função as permissões apropriadas para realizar operações em seu AWS recurso, como PutItem
em uma tabela do Amazon DynamoDB. Você também precisa modificar a política de confiança dessa função para permitir seu uso AWS AppSync para acesso a recursos, conforme mostrado no exemplo de política a seguir:
{
"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 todos AWS AppSync APIs de uma região específica, por exemplous-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 AWS Lambda resolvedores para AWS AppSync, consulte Criação de resolvedores entre contas AWS Lambda