Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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
Javascript 无法获取从静态网页到Lambda函数正确输入数据的函数。始终返回状态代码300_Javascript_Python_Ajax_Amazon Web Services_Api - Fatal编程技术网

Javascript 无法获取从静态网页到Lambda函数正确输入数据的函数。始终返回状态代码300

Javascript 无法获取从静态网页到Lambda函数正确输入数据的函数。始终返回状态代码300,javascript,python,ajax,amazon-web-services,api,Javascript,Python,Ajax,Amazon Web Services,Api,我试图学习AWS,并练习使用静态网站通过Lambda函数查询Cloudtrail数据。但是,每当我从我的网站和GET API函数输入数据并进行查询时,它只返回状态代码300(这是一个故障警报)。我不确定这是否与我的API网关、HTML/AJAX或Lambda函数本身有关。我将Python用于我的Lambda函数和Boto3。在我陷入困境时,任何建议或帮助都将不胜感激。谢谢 AJAX代码 <script> function retrieveFromAPI(){

我试图学习AWS,并练习使用静态网站通过Lambda函数查询Cloudtrail数据。但是,每当我从我的网站和GET API函数输入数据并进行查询时,它只返回状态代码300(这是一个故障警报)。我不确定这是否与我的API网关、HTML/AJAX或Lambda函数本身有关。我将Python用于我的Lambda函数和Boto3。在我陷入困境时,任何建议或帮助都将不胜感激。谢谢

AJAX代码

<script>

         function retrieveFromAPI(){
         var param1 = $("#EventName").val()
         $.ajax({
             type: "GET",
             data: param1,
             datatype: "json",
             url: "GET  API URL",
             success: function(data){
                 console.log("Got it", param1)
                 $("#lbl").html(data)
             },
             error: function(data){
                 alert("Unsuccessful Search....Try Again Please.  " + param1  +(" was not found") + JSON.stringify(data.responseText));
             }
                });
        };

    </script>

看起来它正在成功调用您的函数,但如果没有找到事件,您将返回300。是否可以添加一些调试以查看传递的事件名称,以及事件名称是否有效并返回结果?在lambda中添加一些日志,并查看cloudwatch中lambda的日志,以便更好地进行调试。@JDD关于如何进行调试,您有什么有用的信息吗?对于未找到,您确实应该返回404。您还可以在本地或AWS Lambda控制台中测试代码。
<form id="retrieve-form" method="GET"> 
        <h2>Select a Service to Query From</h2>
        <label for="CloudTrail">CloudTrail Name: </label>
        <input type="text" id="EventName" placeholder="Enter Cloudtrail Name" name="EventName">
    <button id="submit" type="button" Onclick="retrieveFromAPI(event)" value="submit">Submit</button>
    <label id="lbl"></label>
</form>
import boto3

client = boto3.client('cloudtrail')

#If the event name is in the list then return event name, or return nothing
def lambda_handler(event, context):
    
    if 'EventName' in event :
        EventName = event['EventName']
        response = client.lookup_events(
        LookupAttributes=[
            {
                'AttributeKey': 'EventName',
                'AttributeValue': EventName,
            },
        ]
    )
    else :
        EventName = '*';
    
    response = client.lookup_events(
        LookupAttributes=[
            {
                'AttributeKey': 'EventName',
                'AttributeValue': EventName,
            },
        ]
    )
#If the length of the response is greater than zero, it will make a list of the events
    if len(response['Events']) > 0 :
        events = []
        for event in response['Events']:
            CloudTrailEvent = json.loads(event['CloudTrailEvent']);
            events.append({ "awsRegion" : CloudTrailEvent['awsRegion'] , "EventId" : event['EventId'], "EventName" : event['EventName'] , "EventTime" : str(event['EventTime']), "requestID" : CloudTrailEvent['requestID']})
            
        return  {
                'statusCode': 200,
                'headers': {
                    'Content-Type': 'application/json',
                    'Access-Control-Allow-Methods': '*',
                    'Access-Control-Allow-Headers': 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
                    'Access-Control-Allow-Origin': '*' 
                 },  
            'body':  events
        }
    else :
        return {
           'statusCode': 300,
           'headers': {
                'Content-Type': 'application/json',
                'Access-Control-Allow-Methods': '*',
                'Access-Control-Allow-Headers': 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
                'Access-Control-Allow-Origin': '*' 
         },  
            'body' :  'No record found.',
    }
```s