首页 > 解决方案 > AWS StepFunction:获取错误为“错误”:“KeyError”

问题描述

我是 AWS 和 Step 函数的新手。我正在尝试使用 Lambda 函数从 Step 函数运行简单程序。我试过下面的代码来运行 Step 函数。

代码:

import boto3
import json
import os



def lambda_handler(event, context):


    subject = event['Mail']['subject']
    toList = event['Mail']['mailTo'] 
    message = event['MailMessage']['message']
    status = ""


    body = message 

    subject="["+status+"]"+subject


    for to in toList.split(","):
        sendMail(to, ADMIN_EMAIL, subject, body)

    return event


def sendMail(to, reply, subject, body):
    client = boto3.client('ses', region_name=region_name)
    response = client.send_email(
        Source=reply,
        Destination={
            'ToAddresses': [
                to,
            ]
        },
        Message={
            'Subject': {
                'Data': subject,
            },
            'Body': {
                'Text': {
                    'Data': body,
                },
            }
        },
        ReplyToAddresses=[
            reply,
        ],
        ReturnPath=reply
    )
    return response

运行 Step 函数后,我得到以下错误。

{
  "error": "KeyError",
  "cause": {
    "errorMessage": "'Mail'",
    "errorType": "KeyError",
    "stackTrace": [
      [
        "/var/task/lambda_function.py",
        11,
        "lambda_handler",
        "subject = event['Mail']['subject']"
      ]
    ]
  }
}

我的步进功能:

{
  "Comment": "A Sample program to send an email",
  "StartAt": "SampleMail",
  "States": {
    "SampleMail": {
      "Type": "Task",
     "Resource": "arn:aws:lambda:us-west-1:000000123:function:TestEmail", 

      "End": true
    }
  }
}

你能告诉我我在这里缺少什么吗?

请帮助我。

非常感谢您的帮助。

标签: amazon-web-servicesaws-lambdaboto3aws-step-functions

解决方案


event传递给你的函数lambda_handler没有一个名为“Mail”的键,所以这一行

subject = event['Mail']['subject']

失败了。在使用该键检索任何值之前,您应该验证event参数是否具有“邮件”属性。


推荐阅读