Amazon Web Services 服务 [已弃用]
在此页面上
重要
第三方服务和推送通知弃用
App Services 中的第三方服务和推送通知已弃用,转而创建在函数中使用外部依赖项的 HTTP 端点。
Webhook 已重命名为 HTTPS 端点,行为没有发生变化。您应该迁移现有的 Webhook。
现有服务将继续运行到 9 月30 ,2025 。
由于第三方服务和推送通知现已弃用,因此,默认将其从 App Services 用户界面中删除。如果您需要管理现有的第三方服务或推送通知,可以执行以下操作以将配置重新添加到用户界面中:
在左侧导航栏中的 Manage(管理)部分下面,单击 App Settings(应用设置)。
启用 Temporarily Re-Enable 3rd Party Services(暂时重新启用第三方服务)旁边的切换开关,然后保存更改。
Overview
Amazon Web Services(Amazon Web Services ) 提供广泛的基于云的服务。Atlas App Services提供通用Amazon Web Services服务,使您能够连接到其中许多服务。
配置参数
创建 Amazon Web Services 服务接口时,您需要为以下参数提供值:
{ "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 支持以下任何操作:
采用单个输入参数。
返回两个对象之一:输出对象或错误。
示例,S3
服务包括 PutObject 动作。App Services支持此动作,因为它采用单一输入类型 PutObjectInput ,并返回 PutObjectOutput 或错误。
Amazon Web Services 服务规则
您必须指定规则才能启用 Amazon Web Services 服务和操作。每条规则适用于一个服务 API,以及对该服务的一个或所有操作。 与 App Services 中的其他服务规则一样,规则的计算结果必须为true
才能启用操作。
例如,以下规则启用 Kinesis 服务上的所有操作:
注意
When字段的默认值仅包含空括号,这意味着该规则的计算结果始终为true
,因此对该操作的所有调用都是有效的。
该规则还可以表示为以下规则表达式。 请注意,在actions
数组中,服务名称后面的星号 ( *
) 表示该服务的所有操作均已启用:
{ "name": "kinesis", "actions": [ "kinesis:*" ] }
规则条件
对于每个服务操作,您创建的规则可能包含该操作的输入对象的任何属性,作为验证规则的条件。 %%args
扩展提供对这些属性的访问。
例子
S3 PutObject
S3
服务包括 PutObject 动作,它接受 PutObjectInput 类型的输入对象 。您可以在规则的When表达式中使用%%args
扩展名引用PutObjectInput
对象的任何属性。
使用PutObjectInput
对象的Bucket
属性,您可以创建规则,启用对 S3 服务的PutObject
操作,但将该操作限制为已批准的存储桶列表。 在此示例中,我们使用名为myS3Buckets
的用户定义常量作为已批准的存储桶名称列表:
这也可以表示为以下 JSON:
{ "name": "s3", "actions": [ "s3:PutObject" ], "when": { "%%args.Bucket": { "$in": "%%values.myS3Buckets" } } }
S3 GetObject
S3
服务包括 GetObject 操作,该操作接受 GetObjectInput 类型的输入对象 。您可以在规则的When表达式中使用%%args
扩展名引用GetObjectInput
对象的任何属性。
在以下示例中,我们创建了一条规则,对名为realmReadWritableBucket
的特定存储桶启用GetObject
操作:
这也可以表示为以下 JSON:
{ "name": "s3", "actions": [ "s3:GetObject" ], "when": { "%%args.Bucket": { "$in": "realmReadWritableBucket" } } }
使用
您可以从 Realm 函数 和 SDK 调用 Amazon Web Services 服务。以下部分将分别介绍这些进程。
从 Atlas Function 调用 AWS 服务
以下示例展示了如何从 Realm 函数 中调用各种 Amazon Web Services 服务。在每个示例中,都假定已创建命名服务。
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 };
请参阅 S3 API参考 了解实施详情。
重要
对象大小限制
使用 Amazon Web Services S3 对象时,App Services 支持的最大文件大小为 4 MB。
Kinesis Service
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 参考文档 了解实施详情。
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()); };
请参阅 Lambda API参考 了解实施详情。
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; };
请参阅 SES API参考文档 了解实施详情。
支持的 Amazon Web Services 服务
您的应用可以连接到以下 Amazon Web Services 服务:
Athena
批处理
CloudWatch
Comprehend
EC2
Firehose
冰川
物联网 (IoT)
Kinesis
Lambda
Lex 运行时服务
机器学习
移动分析
Polly
RDS
Redshift
Rekognition
S3
SES
阶跃函数 (SFN)
SNS
SQS
Textract