Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs AWS AppSync,变异后如何发送电子邮件?_Reactjs_Amazon Web Services_Aws Amplify_Aws Appsync - Fatal编程技术网

Reactjs AWS AppSync,变异后如何发送电子邮件?

Reactjs AWS AppSync,变异后如何发送电子邮件?,reactjs,amazon-web-services,aws-amplify,aws-appsync,Reactjs,Amazon Web Services,Aws Amplify,Aws Appsync,我正在为一个小网站使用Amplify和Appsync,我正在尝试创建一个联系表单,我需要在变异后发送一封电子邮件。有人能建议最好的方法吗?其实很简单。执行变异时,可以调用lambda并使用aws sdk中的SES执行以下代码 当您选择函数作为数据源时,将触发AppSync中的lambda。不要忘记对此具有适当的IAM权限。然后需要两个映射模板,一个用于请求,一个用于响应。通过该请求,您可以将突变端点的输入参数传递给lambda mappingTemplate.request.vtl可能是这样的

我正在为一个小网站使用Amplify和Appsync,我正在尝试创建一个联系表单,我需要在变异后发送一封电子邮件。有人能建议最好的方法吗?

其实很简单。执行变异时,可以调用lambda并使用aws sdk中的SES执行以下代码

当您选择函数作为数据源时,将触发AppSync中的lambda。不要忘记对此具有适当的IAM权限。然后需要两个映射模板,一个用于请求,一个用于响应。通过该请求,您可以将突变端点的输入参数传递给lambda

mappingTemplate.request.vtl可能是这样的

对于mappingTemplate.response.vtl

这将执行lambda,并在event.aguments中传递参数


如何触发Lambda?我编辑了我的答案,让你看看如何触发Lambda。还有很多关于这个主题的文档,因为还有很多。例如,你需要获得正确的许可等@benra谢谢你的建议。一个问题。据我所知,那里有两个graphql调用,第一个是变异本身,而不是这里,第二个是发送电子邮件。你是怎么触发的?您是否有其中一个查询,其中包含两个查询?还是从客户端启动第二个?是否可以将所有内容委托给服务器,而只从客户端发送变异?非常感谢你的建议。
{
    "version": "2018-05-29",
    "operation": "Invoke",
    "payload": {
        "field": "fieldVariable"
        "arguments": $utils.toJson($context.arguments)
    }
}
#if( $context.result && $context.result.error )
    $utils.error($context.result.error)
#else
    $utils.toJson($context.result)
#end
import { SES } from 'aws-sdk';
...

exports.handler = async event => {
  const bccEmailAddresses = [];
  const ccEmailAddresses = [];
  const toEmailAddresses = [];
  const bodyData = '';
  const bodyCharset = 'UTF-8';
  const subjectdata = '';
  const subjectCharset = 'UTF-8';
  const sourceEmail = '';
  const replyToAddresses = [];

  const emailParams = {
    Destination: {
      BccAddresses: bccEmailAddresses,
      CcAddresses: ccEmailAddresses,
      ToAddresses: toEmailAddresses
    },
    Message: {
      Body: {
        Text: {
          Data: bodyData,
          Charset: bodyCharset
        }
      },
      Subject: {
        Data: subjectdata,
        Charset: subjectCharset
      }
    },
    Source: sourceEmail,
    ReplyToAddresses: replyToAddresses
  };

  await SES.sendEmail(emailParams).promise();
}