Importante
Servicios de terceros y notificaciones push obsoletos
Los servicios de terceros y las notificaciones push en App Services han quedado obsoletos en favor de la creación de puntos finales HTTP que usan dependencias externas en funciones.
Webhooks se han renombrado a HTTPS Endpoints sin cambios en el comportamiento. Debe migrar los Webhooks existentes.
Los servicios existentes continuarán funcionando hasta el de septiembre 30 2025de.
Dado que los servicios de terceros y las notificaciones push ya no se utilizan, se han eliminado de forma predeterminada de la interfaz de usuario de App Services. Si necesita administrar un servicio de terceros o una notificación push existente, puede volver a agregar las configuraciones a la interfaz de usuario siguiendo estos pasos:
En la navegación izquierda, debajo del Manage sección, haga clic en App Settings.
Habilite el interruptor junto a Temporarily Re-Enable 3rd Party Services y luego guarde los cambios.
Overview
Amazon Web Services (AWS) Ofrece una amplia colección de servicios en la nube. Atlas App Services ofrece un servicio genérico de AWS que permite conectarse a muchos de estos servicios.
Parámetros de configuración
Deberá proporcionar valores para los siguientes parámetros cuando cree una interfaz de servicio de AWS:
{ "name": "<Service Name>", "type": "aws", "config": { "accessKeyId": <Access Key ID>, "region": "us-east-1" }, "secret_config": { "secretAccessKey": "<Secret Name>" } }
Parameter | Descripción |
|---|---|
Service Name config.name | Un nombre único para el servicio. |
Access Key ID config.accessKeyId | The access key ID for an AWS IAM user. The user should have programmatic access and appropriate permissions for all AWS services that you plan to interact with. |
Secret Access Key secret_config.secretAccessKey | El nombre de un Secret que almacena una clave de acceso secreta para el usuario IAM cuyo ID se especifica en Access Key ID. Se puede encontrar este valor junto al ID de la clave de acceso cuando se crea un nuevo usuario IAM o se crea una nueva clave de acceso para un usuario IAM existente. |
Acciones de servicio
Cada servicio de AWS tiene diferentes acciones que puedes realizar en ese servicio. Servicios de aplicación utiliza los nombres de las acciones especificadas en el AWS SDK para Go para cada servicio.
Nota
aplicación Services utiliza los mismos nombres (y distinción entre mayúsculas y minúsculas) para los servicios y acciones de AWS que el AWS Go SDK.
Para cada servicio AWS compatible, aplicación Services admite cualquier acción que:
Toma un único parámetro de entrada.
Returns one of two objects: an output object, or an error.
Por ejemplo, el S3 El servicio incluye una acción PutObject. App Services admite esta acción porque acepta un único tipo de entrada PutObjectInput y devuelve PutObjectOutput o un error.
Reglas de servicio de AWS
Debe especificar reglas para habilitar los servicios y acciones de AWS. Cada regla se aplica a una sola API de servicio, además de una o todas las acciones de ese servicio. Al igual que con otras reglas de servicio en App Services, una regla debe evaluarse como true para habilitar la acción.
Por ejemplo, la siguiente regla habilita todas las acciones en el servicio Kinesis:

Nota
El valor por defecto del campo When contiene sólo corchetes vacíos, lo que significa que la regla siempre se evaluará como true y, por lo tanto, todas las llamadas a la acción son válidas.
Esta regla también se puede expresar como la siguiente expresión de regla. Tenga en cuenta que en la actions matriz, el asterisco* () después del nombre del servicio indica que todas las acciones de ese servicio están habilitadas:
{ "name": "kinesis", "actions": [ "kinesis:*" ] }
Condiciones de la regla
Para cada acción de servicio, la regla que cree puede incluir cualquiera de las propiedades del objeto de entrada para esa acción como condición para validar la regla. La expansión %%args proporciona acceso a estas propiedades.
Ejemplo
S3 PutObject
El S3 servicio incluye la acción PutObject, que toma un objeto de entrada de tipo PutObjectInput. Puede hacer referencia a cualquiera de las propiedades del PutObjectInput objeto en la expresión de una regla When con la %%args expansión.
Usando la propiedad Bucket del objeto PutObjectInput, puede crear una regla que habilite la acción PutObject en el servicio S3, pero la restrinja a una lista de buckets aprobados. En este ejemplo, usamos una constante definida por el usuario llamada myS3Buckets para la lista de nombres de buckets aprobados:

This can also be expressed as the following JSON:
{ "name": "s3", "actions": [ "s3:PutObject" ], "when": { "%%args.Bucket": { "$in": "%%values.myS3Buckets" } } }
S3 GetObject
El S3 servicio incluye la acción GetObject, que toma un objeto de entrada de tipo GetObjectInput. Puede hacer referencia a cualquiera de las propiedades del GetObjectInput objeto en When la expresión de una %%args regla con la expansión.
In the following example, we create a rule that enables the GetObject action on a specific bucket called realmReadWritableBucket:

This can also be expressed as the following JSON:
{ "name": "s3", "actions": [ "s3:GetObject" ], "when": { "%%args.Bucket": { "$in": "realmReadWritableBucket" } } }
Uso
Puede llamar a un servicio de AWS desde una función de Atlas y desde los SDK. Las siguientes secciones muestran cada uno de estos procesos.
Llamar a un servicio de AWS desde una función Atlas
Los siguientes ejemplos muestran cómo llamar a varios servicios de AWS desde una función Atlas. En cada ejemplo, se asume que el servicio ya se ha creado.
S3 Service
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 la Referencia de API de S3 para obtener detalles de implementación.
Importante
Object Size Limitation
App Services supports a maximum file size of 4 Megabytes when working with AWS S3 objects.
Servicio 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 la Referencia de API de Kinesis para obtener detalles de implementación.
Servicio 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 la Referencia de API de Lambda para obtener detalles de implementación.
Servicio 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 la Referencia de API de SES para obtener detalles de implementación.
Servicios de AWS compatibles
Your App can connect to the following AWS services:
Athena
Batch
CloudWatch
Comprender
EC2
Firehose
Glacier
IoT
Kinesis
Lambda
Servicio de tiempo de ejecución de Lex
Aprendizaje automático
Mobile Analytics
Polly
RDS
Redshift
Rekognition
S3
SES
Step Functions (SFN)
SNS
SQS
Textr