Docs Menu
Docs Home
/ /
Servicios de terceros

Servicio de AWS

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.

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.

Deberá proporcionar valores para los siguientes parámetros cuando cree una interfaz de servicio de AWS:

<Service Name>/config.json
{
"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.

Tip

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:

  1. Toma un solo parámetro de entrada.

  2. 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.

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:

Regla de AWS Kinesis.
haga clic para ampliar

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:*"
]
}

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.

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:

Regla AWS S3
haga clic para ampliar

Esto también se puede expresar como el siguiente JSON:

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

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:

Regla AWS S3
haga clic para ampliar

Esto también se puede expresar como el siguiente JSON:

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

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.

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.

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 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.

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.

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.

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.

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

Volver

Twilio.send()

En esta página