Docs 菜单
Docs 主页
/ /
Atlas App Services
/ /

Amazon Web Services 服务 [已弃用]

在此页面上

  • Overview
  • 配置参数
  • 服务操作
  • Amazon Web Services 服务规则
  • 规则条件
  • 例子
  • 使用
  • 从 Atlas Function 调用 AWS 服务
  • 支持的 Amazon Web Services 服务

重要

第三方服务和推送通知弃用

App Services 中的第三方服务和推送通知已弃用,转而创建在函数中使用外部依赖项的 HTTP 端点。

Webhook 已重命名为 HTTPS 端点,行为没有发生变化。您应该迁移现有的 Webhook。

现有服务将继续运行到 9 月30 ,2025

由于第三方服务和推送通知现已弃用,因此,默认将其从 App Services 用户界面中删除。如果您需要管理现有的第三方服务或推送通知,可以执行以下操作以将配置重新添加到用户界面中:

  • 在左侧导航栏中的 Manage(管理)部分下面,单击 App Settings(应用设置)。

  • 启用 Temporarily Re-Enable 3rd Party Services(暂时重新启用第三方服务)旁边的切换开关,然后保存更改。

Amazon Web Services(Amazon Web Services ) 提供广泛的基于云的服务。Atlas App Services提供通用Amazon Web Services服务,使您能够连接到其中许多服务。

创建 Amazon Web Services 服务接口时,您需要为以下参数提供值:

<Service Name>/config.json
{
"name": "<Service Name>",
"type": "aws",
"config": {
"accessKeyId": <Access Key ID>,
"region": "us-east-1"
},
"secret_config": {
"secretAccessKey": "<Secret Name>"
}
}
Parameter
说明
Service Name
config.name
服务的唯一名称。
Access Key ID
config.accessKeyId
Amazon Web Services IAM 用户的访问密钥 ID。对于您计划与之交互的所有 Amazon Web Services 服务,用户应具有编程访问权限和适当的权限。
Secret Access Key
secret_config.secretAccessKey
为 IAM 用户存储秘密访问密钥的密钥名称,该 IAM 用户的 ID 在Access Key ID中指定。 当您创建新的 IAM 用户或为现有 IAM 用户创建新的访问密钥时,您可以在访问密钥 ID 旁边找到该值。

提示

另请参阅:

每个Amazon Web Services服务都可以执行不同的操作。 App Services使用Amazon Web Services SDK forGo 中指定的动作名称 对于每项服务。

注意

App Services 对 Amazon Web Services 服务和操作使用与 Amazon Web Services Go SDK 相同的名称(和大小写)。

对于每项支持的 Amazon Web Services 服务,App Services 支持以下任何操作:

  1. 采用单个输入参数。

  2. 返回两个对象之一:输出对象或错误。

示例,S3 服务包括 PutObject 动作。App Services支持此动作,因为它采用单一输入类型 PutObjectInput ,并返回 PutObjectOutput 或错误。

您必须指定规则才能启用 Amazon Web Services 服务和操作。每条规则适用于一个服务 API,以及对该服务的一个或所有操作。 与 App Services 中的其他服务规则一样,规则的计算结果必须为true才能启用操作。

例如,以下规则启用 Kinesis 服务上的所有操作:

Amazon Web Services Kinesis 规则。
点击放大

注意

When字段的默认值仅包含空括号,这意味着该规则的计算结果始终为true ,因此对该操作的所有调用都是有效的。

该规则还可以表示为以下规则表达式。 请注意,在actions数组中,服务名称后面的星号 ( * ) 表示该服务的所有操作均已启用:

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

对于每个服务操作,您创建的规则可能包含该操作的输入对象的任何属性,作为验证规则的条件。 %%args扩展提供对这些属性的访问。

S3服务包括 PutObject 动作,它接受 PutObjectInput 类型的输入对象 。您可以在规则的When表达式中使用%%args扩展名引用PutObjectInput对象的任何属性。

使用PutObjectInput对象的Bucket属性,您可以创建规则,启用对 S3 服务的PutObject操作,但将该操作限制为已批准的存储桶列表。 在此示例中,我们使用名为myS3Buckets的用户定义常量作为已批准的存储桶名称列表:

Amazon Web Services S3 规则
点击放大

这也可以表示为以下 JSON:

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

S3服务包括 GetObject 操作,该操作接受 GetObjectInput 类型的输入对象 。您可以在规则的When表达式中使用%%args扩展名引用GetObjectInput对象的任何属性。

在以下示例中,我们创建了一条规则,对名为realmReadWritableBucket的特定存储桶启用GetObject操作:

Amazon Web Services S3 规则
点击放大

这也可以表示为以下 JSON:

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

您可以从 Realm 函数 和 SDK 调用 Amazon Web Services 服务。以下部分将分别介绍这些进程。

以下示例展示了如何从 Realm 函数 中调用各种 Amazon Web Services 服务。在每个示例中,都假定已创建命名服务。

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
};

请参阅 S3 API参考 了解实施详情。

重要

对象大小限制

使用 Amazon Web Services S3 对象时,App Services 支持的最大文件大小为 4 MB。

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;
};

请参阅 Kinesis API 参考文档 了解实施详情。

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());
};

请参阅 Lambda API参考 了解实施详情。

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;
};

请参阅 SES API参考文档 了解实施详情。

您的应用可以连接到以下 Amazon Web Services 服务:

  • Athena

  • 批处理

  • CloudWatch

  • Comprehend

  • EC2

  • Firehose

  • 冰川

  • 物联网 (IoT)

  • Kinesis

  • Lambda

  • Lex 运行时服务

  • 机器学习

  • 移动分析

  • Polly

  • RDS

  • Redshift

  • Rekognition

  • S3

  • SES

  • 阶跃函数 (SFN)

  • SNS

  • SQS

  • Textract

后退

Twilio.send()