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.
Los webhooks se han renombrado como puntos finales HTTPS sin cambios en su 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 | El ID de la clave de acceso de un usuario de AWS IAM. El usuario debe tener acceso programático y los permisos adecuados para todos los servicios de AWS con los que planea interactuar. |
Secret Access Key secret_config.secretAccessKey | El nombre de un secreto que almacena una clave de acceso secreta para el usuario de IAM cuyo ID se especifica Access Key ID en. Puede encontrar este valor junto al ID de la clave de acceso al crear un nuevo usuario de IAM o una nueva clave de acceso para un usuario de 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 de AWS compatible, App Services admite cualquier acción que:
Toma un solo parámetro de entrada.
Devuelve uno de dos objetos: un objeto de salida o un 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 predeterminado del campo When contiene solo 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:

Esto también se puede expresar como el siguiente 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.
En el siguiente ejemplo, creamos una regla que habilita la acción GetObject en un depósito específico llamado realmReadWritableBucket:

Esto también se puede expresar como el siguiente 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.
Servicio 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 la Referencia de API de S3 para obtener detalles de implementación.
Importante
Limitación del tamaño del objeto
App Services admite un tamaño de archivo máximo de 4 megabytes cuando se trabaja con objetos AWS S3.
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
Su aplicación puede conectarse a los siguientes servicios de AWS:
Atenea
Lote
CloudWatch
Comprender
EC2
Manguera
Glaciar
IoT
Kinesis
Lambda
Servicio de tiempo de ejecución de Lex
Aprendizaje automático
Análisis móvil
Polly
RDS
Redshift
Rekognition
S3
SES
Funciones escalonadas (SFN)
Redes sociales
SQS
Textr