由于配置错误导致执行失败:格式错误的Lambda代理响应

时间:2018-02-02 03:34:16

标签: amazon-web-services aws-cli

供参考,您可以访问我创建的这个问题:

https://github.com/aws/aws-cli/issues/3118

  • 我在下面使用此AWS CLI命令,但它位于* .sh文件
  • 成功运行的脚本没问题 注意:我手动创建API ```

    删除GET方法

    aws apigateway delete-method \ --rest-api-id 2132132 --resource-id 8998989 \ --http-method GET \

      

    / dev / null 2>& 1&& echo' - > [aws]移除了APIGateway GET方法'

    首先删除权限

    aws lambda remove-permission \ --function-name function_main \ --statement-id function_main \

      

    / dev / null 2>& 1&& echo' - > [aws]移除了APIGateway权限'

    然后添加方法

    aws apigateway put-method \ --rest-api-id 2132132 --resource-id 8998989 \ --http-method GET \ --authorization-type'NONE'\ --region us-east-1 \

      

    / dev / null 2>& 1&& echo' - > [aws] APIGateway GET方法创建'

    并添加集成。

    aws apigateway put-integration \ --region us-east-1 \ --rest-api-id 2132132 --resource-id 8998989 \ --http-method GET \ --type AWS_PROXY \ --integration-http-method GET \ - passthrough-behavior WHEN_NO_MATCH \ --uri“arn:aws:apigateway:us-east-1:lambda:path / 2015-03-31 / functions / arn:aws:lambda:us-east-1:23645667:function:function_main / invocations”\ < / p>

      

    / dev / null 2&gt;&amp; 1&amp;&amp; echo' - &gt; [aws] APIGateway整合添加'

    并添加方法响应

    aws apigateway put-method-response \ --rest-api-id 2132132 --resource-id 8998989 \ --http-method GET \ --status-code 200 \ --response-models“{\”application / json \“:\”Empty \“}”\

      

    / dev / null 2&gt;&amp; 1&amp;&amp; echo' - &gt; [aws]创建了APIGateway GET方法响应'

    然后添加

    aws lambda add-permission \ --function-name function_main \ --statement-id 4454854604c23688a9f42907de4d18ec \ --action“lambda:InvokeFunction”\ --principal apigateway.amazonaws.com \ --source-arn“arn:aws:execute-api:us-east-1:23645667:2132132 / * / GET /”\

      

    / dev / null 2&gt;&amp; 1&amp;&amp; echo' - &gt; [aws] APIGateway权限添加'   ```

  • 但输出是这样,在方法响应中我看不到HTTP状态:代理或只是'选择一个集成响应'不像我手动添加方法和集成时(请参见下图图像差异)< / p>

  • ERROR api_gateway

  • WORKING api_gateway

AWS CLI版本:aws-cli / 1.14.32 Python / 2.7.10 Darwin / 17.3.0 botocore / 1.8.36

1 个答案:

答案 0 :(得分:0)

我只是想通过https://github.com/kyleknap

分享来自github.com/issues的回答
  
    

&GT;     @XanderDwyl我认为你需要在shell脚本中包含一个apigateway put-integration-response命令,即使你正在进行代理集成。我们不得不在旧版本的圣杯中做类似的事情。我建议查看一些源代码。它是Python,但参数和值直接映射回CLI命令和参数。所以应该直截了当地弄清楚可能缺少什么。如果有帮助,请告诉我们。