Serviço Amazon Web Services [Obsoleto]
Nesta página
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é de setembro 30 de2025.
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.
Visão geral
Amazon Web Services (Amazon Web Services) fornece uma ampla coleção de serviços baseados na nuvem. Atlas App Services fornece um serviço genérico da Amazon Web Services que permite que você se conecte a muitos desses serviços.
Parâmetros de configuração
Você precisará fornecer valores para os seguintes parâmetros ao criar uma interface de serviço AWS:
{ "name": "<Service Name>", "type": "aws", "config": { "accessKeyId": <Access Key ID>, "region": "us-east-1" }, "secret_config": { "secretAccessKey": "<Secret Name>" } }
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. |
Ações de serviço
Cada serviço Amazon Web Services tem ações diferentes que você pode executar nesse serviço. O App Services usa os nomes de ação especificados no Amazon Web Services 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:
Recebe um único parâmetro de entrada.
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.
Regras de serviço Amazon Web Services
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:
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:*" ] }
Condições da regra
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.
Exemplo
S3 PutObject
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 objeto PutObjectInput
na expressão When uma 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:
Isso também pode ser expresso como o seguinte JSON:
{ "name": "s3", "actions": [ "s3:PutObject" ], "when": { "%%args.Bucket": { "$in": "%%values.myS3Buckets" } } }
S3 GetObject
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 objeto GetObjectInput
na expressão When uma 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
:
Isso também pode ser expresso como o seguinte JSON:
{ "name": "s3", "actions": [ "s3:GetObject" ], "when": { "%%args.Bucket": { "$in": "realmReadWritableBucket" } } }
Uso
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.
Chamar um Serviço Amazon Web Services a partir de uma Função de Realm
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.
Serviço S3
S3 PutObject
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; };
S3 GetObject
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; };
S3 PresignURL
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.
Serviço Kinesis
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.
Serviço Lambda
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.
Serviço SES
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.
Serviços suportados da Amazon Web Services
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