如何解决使用 dynamodb 触发器的 aws-lambda 中的 IncompatibleDynamoDBTypeError
我现在花了很多时间试图解决这个问题。就是这样:我应该从 dynamodb 表中的最新条目获取电子邮件信息,并使用亚马逊的 ses 服务发送电子邮件。这是我到目前为止所拥有的:
package main
import (
"log"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ses"
)
// Handler is a method that handles the sending of email messages
func Handler(event events.DynamoDBEvent) (string,error) {
emailParams := &ses.SendEmailInput{
Message: &ses.Message{
Body: &ses.Body{
Text: &ses.Content{
Data:aws.String(event.Records[0].Change.NewImage["body"].String()),},Subject: &ses.Content{
Data:aws.String(event.Records[0].Change.NewImage["subject"].String()),Destination: &ses.Destination{
ToAddresses: aws.StringSlice(event.Records[0].Change.NewImage["recipients"].StringSet()),Source:aws.String("my_email_here@gmail.com"),}
var emailClient *ses.SES = ses.New(session.New(),aws.NewConfig().WithRegion("us-east-2"))
var result1,result2 = emailClient.SendEmail(emailParams)
log.Println(result1)
log.Println(result2)
return "Success",nil
}
func main() {
lambda.Start(Handler)
}
DynamoDB 表中每个条目的结构如下:
{
"id": "id","subject": "Subject","body": "Body","recipients": [
"email1@gmail.com","email2@gmail.com"
]
}
我可以使用上面的代码成功读取主题和正文,但是,我收到收件人数组的以下错误:
accessor called for incompatible type,requested type 9 but actual type was 3: IncompatibleDynamoDBTypeError
我知道这与以下行有关:
ToAddresses: aws.StringSlice(event.Records[0].Change.NewImage["recipients"].StringSet()),
但是我想不通。 Amazon 的 ses 服务期望 ToAddresses 字段的类型是 []*string。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。