Menu Docs

Página inicial do DocsServiços Atlas App

Serviço Amazon Web Services [Obsoleto]

Nesta página

  • Visão geral
  • Parâmetros de configuração
  • Ações de serviço
  • Regras de serviço Amazon Web Services
  • Condições da regra
  • Exemplo
  • Uso
  • Chamar um Serviço Amazon Web Services a partir de uma Função de Realm
  • Serviços suportados da Amazon Web Services

Importante

Suspensão de serviços de terceiros e notificações push

Os serviços de terceiros e as notificações por push no App Services foram preteridos em favor da criação de pontos de extremidade HTTP que usam dependências externas em funções.

Webhooks foram renomeados e agora são chamados de pontos de conexão HTTPS sem nenhuma alteração em seu comportamento. Recomendamos migrar webhooks existentes.

Os serviços existentes continuarão a funcionar até 1 de novembro de 2024.

Como os serviços de terceiros e as notificações por push agora estão obsoletos, eles foram removidos por padrão da UI do App Services. Para gerenciar um serviço de terceiros ou uma notificação por push existente, adicione as configurações de volta à UI fazendo o seguinte:

  • Na navegação à esquerda, na seção Manage, clique em App Settings.

  • Ative a chave de alternância ao lado de Temporarily Re-Enable 3rd Party Services e salve as alterações.

Amazon Web Services (AWS) fornece uma ampla coleção de serviços baseados na nuvem. O Atlas App Services fornece um serviço genérico da AWS que permite que você se conecte a muitos desses serviços.

Você precisará fornecer valores para os seguintes parâmetros ao criar uma interface de serviço AWS:

Parâmetro
Descrição
Service Name
config.name
Um nome exclusivo para o serviço.
Access Key ID
config.accessKeyId
O ID da chave de acesso para um usuário Amazon Web Services IAM. O usuário deve ter acesso programático e permissões apropriadas para todos os serviços Amazon Web Services com os quais você planeja interagir.
Secret Access Key
secret_config.secretAccessKey
O nome de um segredo que armazena uma chave de acesso secreta para o usuário IAM cujo ID é especificado no Access Key ID. Você pode encontrar esse valor ao lado do ID da chave de acesso ao criar um novo usuário do IAM ou criar uma nova chave de acesso para um usuário do IAM existente.

Dica

Cada serviço da AWS tem ações diferentes que você pode executar nesse serviço. O App Services usa os nomes de ação especificados no AWS SDK para Go para cada serviço.

Observação

O App Services usa os mesmos nomes (e letras maiúsculas e minúsculas) para os serviços e ação da Amazon Web Services que o Go SDK da Amazon Web Services.

Para cada Amazon Web Services suportado, o App Services suporta qualquer ação que:

  1. Recebe um único parâmetro de entrada.

  2. Retorna um de dois objetos: um objeto de saída ou um erro.

Por exemplo, o S3 serviço inclui um PutObject ação. O App Services suporta esta ação porque é utilizado um único tipo de entrada de PutObjectInput e retorna um PutObjectOutput ou um erro.

Você deve especificar regras para habilitar os serviços e ação da Amazon Web Services. Cada regra se aplica a uma única API de serviço, mais uma ou todas as ações nesse serviço. Assim como acontece com outras regras de serviço no App Services, uma regra deve avaliar para true para habilitar a ação.

Por exemplo, a seguinte regra habilita toda ação no serviço Kinesis:

Regra do Amazon Web Services Kinesis.
clique para ampliar

Observação

O valor padrão do campo When contém apenas colchetes vazios, o que significa que a regra sempre avaliará para true e, portanto, todas as chamadas para a ação são válidas.

Esta regra também pode ser expressa como a seguinte expressão de regra. Observe que, na array de actions, o asterisco (*) após o nome do serviço indica que toda a ação desse serviço estão habilitadas:

{
"name": "kinesis",
"actions": [
"kinesis:*"
]
}

Para cada ação de serviço, a regra criada pode incluir qualquer uma das propriedades do objeto de entrada para essa ação como condição para a validação da regra. A expansão %%args fornece acesso a estas propriedades.

O S3 serviço inclui o PutObject ação, que usa um objeto de entrada do tipo PutObjectInput. Você pode referenciar qualquer uma das propriedades no PutObjectInput objeto na expressão de uma When regra com a expansão %%args .

Usando a propriedade Bucket do objeto PutObjectInput , você pode criar uma regra que permite a ação PutObject no serviço S3, mas restringe a ação a uma lista de buckets aprovados. Neste exemplo, usamos uma constante definida pelo usuário chamada myS3Buckets para a lista de nomes de buckets aprovados:

regra Amazon Web Services S3
clique para ampliar

Isso também pode ser expresso como o seguinte JSON:

{
"name": "s3",
"actions": [
"s3:PutObject"
],
"when": {
"%%args.Bucket": {
"$in": "%%values.myS3Buckets"
}
}
}

O S3 serviço inclui o GetObject ação, que usa um objeto de entrada do tipo GetObjectInput. Você pode referenciar qualquer uma das propriedades no GetObjectInput objeto na expressão de uma When regra com a expansão %%args .

No exemplo a seguir, criamos uma regra que habilita a ação GetObject em um bucket específico chamado realmReadWritableBucket:

regra Amazon Web Services S3
clique para ampliar

Isso também pode ser expresso como o seguinte JSON:

{
"name": "s3",
"actions": [
"s3:GetObject"
],
"when": {
"%%args.Bucket": {
"$in": "realmReadWritableBucket"
}
}
}

Você pode chamar um serviço Amazon Web Services a partir de uma Função de Realm e dos SDKs. As seções a seguir mostram cada um desses processos.

Os exemplos seguintes mostram como chamar vários serviços de Amazon Web Services de dentro de uma Função de Realm. Em cada exemplo, pressupõe-se que o serviço nomeado já tenha sido criado.

exports = async function() {
const s3 = context.services.get('MyAwsService').s3("us-east-1");
const result = await s3.PutObject({
"Bucket": "my-bucket",
"Key": "example",
"Body": "hello there"
});
console.log(EJSON.stringify(result));
return result;
};
exports = async function(arg) {
const s3 = context.services.get('MyAwsService').s3("us-east-1");
const result = await s3.GetObject({
"Bucket": "realmReadWritableBucket",
"Key": "coffee.jpeg"
});
console.log(EJSON.stringify(result));
return result;
};
exports = function(){
const s3 = context.services.get("MyAwsService").s3("us-east-1");
const presignedUrl = s3.PresignURL({
"Bucket": "my-s3-bucket-name",
"Key": "/some/path",
// HTTP method that is valid for this signed URL. Can use PUT for uploads, or GET for downloads.
"Method": "GET",
// Duration of the lifetime of the signed url, in milliseconds
"ExpirationMS": 30000,
})
return presignedUrl
};

Consulte a Referência da API S3 para obter detalhes de implementação.

Importante

Limitação de tamanho do objeto

O App Services permite um tamanho máximo de arquivo de 4 megabytes ao trabalhar com objeto do Amazon Web Services S3.

exports = async function(event) {
const kinesis = context.services.get('MyAwsService').kinesis("us-east-1");
const result = await kinesis.PutRecord({
Data: JSON.stringify(event.fullDocument),
StreamName: "realmStream",
PartitionKey: "1"
});
console.log(EJSON.stringify(result));
return result;
};

Consulte a Referência da API do Kinesis para obter detalhes de implementação.

exports = async function() {
const lambda = context.services.get('MyAwsService').lambda("us-east-1");
const result = await lambda.Invoke({
FunctionName: "myLambdaFunction",
Payload: context.user.id
});
console.log(result.Payload.text());
return EJSON.parse(result.Payload.text());
};

Consulte a Referência da API do Lambda para obter detalhes de implementação.

exports = async function(){
const ses = context.services.get('MyAwsService').ses("us-east-1");
const result = await ses.SendEmail({
Source: "sender@example.com",
Destination: { ToAddresses: ["docs@mongodb.com"] },
Message: {
Body: {
Html: {
Charset: "UTF-8",
Data: `This is a message from user ${context.user.id}`
}
},
Subject: {
Charset: "UTF-8",
Data: "Test Email Please Ignore"
}
}
});
console.log(EJSON.stringify(result));
return result;
};

Consulte a Referência da API do SES para obter detalhes de implementação.

Sua aplicação pode se conectar aos seguintes serviços Amazon Web Services:

  • Ateia

  • lote

  • CloudWatch

  • Compreender

  • EC2

  • Firehose

  • Expresso

  • TUMULTO

  • Kinesis

  • Lambda

  • Serviço de tempo de execução do Lex

  • machine learning

  • Análise de dispositivos móveis

  • Polly

  • RDS

  • Redshift

  • Rekonition

  • S3

  • SES

  • Funções de etapa (SFN)

  • SNS

  • SQS

  • Textract

← twilio.send()