小编Cam*_*art的帖子

如何调试AWS Api Gateway&Lambda的"AWS/ApiGateway 5XXError"

我有一个运行lambda函数的API网关资源.我正在使用来自Api Gateway的AWS Generated SDK调用API网关资源.

这是我的客户端堆栈跟踪的一部分似乎相关:

Caused by: com.amazonaws.mobileconnectors.apigateway.ApiClientException: {"message": "Internal server error"} (Service: DevnetcountableClient; Status Code: 500; Error Code: null; Request ID: 348e8f98-6f55-11e6-97f6-098c2caf220f)
at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.handleResponse(ApiClientHandler.java:255) at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.invoke(ApiClientHandler.java:88)
    at java.lang.reflect.Proxy.invoke(Proxy.java:393)
    at $Proxy1.accountCreatePost(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

现在看AWS控制台,我的API网关仪表板内我看到的请求进来并导致"AWS/ApiGateway 5XXError".但是有0个日志(我可以找到).我的lambda函数似乎没有被调用,也没有显示lambda日志.

现在这是我的lambda看起来像:

module.exports.createAccount = function(event, context, cb) {
    console.log('createAccount');
    console.log(event);
    console.log(context);
    console.log(cb);
    cb(null, {status: 'SUCCESS', message: 'I ran!'});
};
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能调试这个?

编辑:好的,这是将所有内容整合在一起的cloudformation脚本.

{
   "AWSTemplateFormatVersion":"2010-09-09",
   "Description":"The AWS CloudFormation template for this Serverless application",
   "Resources":{
      "ServerlessDeploymentBucket":{
         "Type":"AWS::S3::Bucket"
      },
      "IamRoleLambda":{
         "Type":"AWS::IAM::Role",
         "Properties":{
            "AssumeRolePolicyDocument":{
               "Version":"2012-10-17",
               "Statement":[
                  {
                     "Effect":"Allow",
                     "Principal":{
                        "Service":[
                           "lambda.amazonaws.com"
                        ] …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda aws-api-gateway serverless-framework

23
推荐指数
1
解决办法
6715
查看次数

API网关响应状态为0,集成延迟10000ms

这是我从API网关自动生成的javascript SDK中获得的错误.

{
    "data": "",
    "status": 0,
    "statusText": "",
    "headers": {

    },
    "config": {
        "method": "POST",
        "headers": {
            "Content-Type": "application/json",
            "Accept": "application/json",
            "x-amz-date": "20180127T231842Z",
            "Authorization": "AWS4-HMAC-SHA256 Credential=.....",
            "x-amz-security-token": "....."
        },
        "timeout": 0,
        "transformRequest": [null],
        "transformResponse": [null],
        "url": "https://somevalues.execute-api.us-west-2.amazonaws.com/env/some/path",
        "data": "{\"startDay\":0,\"endDay\":1}"
    }
}
Run Code Online (Sandbox Code Playgroud)

我查看了我的cloudwatch日志,并且呼叫成功了.我将API网关绑定到AWS lambda作为无服务器功能设置.

我从未见过这些类型的错误,但今天我得到了其中的5个错误.后续调用全部奏效.

编辑:这可能与CORS设置有关吗?每隔一段时间API网关似乎打嗝并且不会发送回适当的CORS.可能是功能冷的时候?我不确定...

编辑2:我刚刚验证 - 我的所有OPTIONS端点(用于CORS的端点)都不需要auth或api密钥.所以我认为不是这样的.

编辑4:编辑3错了,我正在击中错误的端点.使用curl命中我的API OPTIONS端点可以正常工作.

编辑5:查看云观察中的API网关日志,这就是它们的样子......此时完全丢失了.

[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m START RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1 Version: $LATEST
[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m END RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1
[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m REPORT RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1   Duration: 10007.96 ms   Billed Duration: 10000 ms   Memory Size: 128 MB …
Run Code Online (Sandbox Code Playgroud)

aws-lambda aws-api-gateway api-gateway

16
推荐指数
1
解决办法
916
查看次数

如何从执行角色有权这样做的 AWS Lambda 调用 AWS_IAM 授权的 API 网关终端节点?

我想从执行角色有权执行该 API 网关的执行 AWS Lambda 调用授权设置为 AWS_IAM 的 AWS API 网关端点。

在此处输入图片说明

无论如何,我是否可以使用我的 Lambda 的当前执行角色对 API Gateway 的 HTTPS 请求进行签名?

编辑:

查看http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html,我可以使用 SDK 调用 AssumeRole 来承担有权执行 Api Gateway 的角色,然后提取可用于签署请求的密钥。

signing amazon-web-services aws-lambda aws-api-gateway

11
推荐指数
1
解决办法
5765
查看次数

将变量传递给包含的剧本?

我想有一个大师剧本,其中包括其他剧本.是否可以将变量传递给包含的剧本?

用于将变量传递给包含任务的常规语法不起作用(参见下文)

- include: someplaybook.yml variable=value
Run Code Online (Sandbox Code Playgroud)

- include: someplaybook.yml
  vars:
    variable: value
Run Code Online (Sandbox Code Playgroud)

我正在运行v2.0.2.0.

ansible ansible-playbook

9
推荐指数
1
解决办法
1万
查看次数

rql从javascript中的密钥rethinkdb列表中获取多个文档

我有一个"人"数据表,它有一个唯一的键"id".我有一个id列表,我想要获取我将作为JSON数组从客户端发送到服务器的数据.服务器将该数据作为JSON数组接收.

现在有一种方法可以运行查询来获取每个ID的文档吗?

或者是我自己解析id并构建一个结果数组的唯一选择,然后将该数组发回.

到目前为止我已经尝试过使用......

javascript dynamic rethinkdb

8
推荐指数
2
解决办法
2376
查看次数

Android ImageReader aquireLatestImage偶尔会为null

我有一个能够捕获屏幕内容的应用程序设置.但是,有时,我nullaquireLatestImage返回一个值.该文档称,如果没有可用的图像数据,它将返回"null".

我很想知道什么是没有可用的图像数据?

编辑:据我所知,这种情况最常发生在LG设备上......

编辑2:我遇到的情况是在它之前返回有效图像值之后返回的空值.并继续返回空值.对于非LG设备,偶尔会返回空值.对于LG设备,似乎一旦返回一个null,其余的将为空.

编辑3:包括一些代码

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

Display display = wm.getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics );

ImageReader imageReader = ImageReader.newInstance(displayMetrics.widthPixels, displayMetrics.heightPixels, PixelFormat.RGBA_8888, 2);

virtualDisplay = mediaProjection.createVirtualDisplay("NetCountableVirtualDisplay",
        displayMetrics.widthPixels,
        displayMetrics.heightPixels,
        displayMetrics.densityDpi,
        DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC,
        imageReader.getSurface(),
        null,
        null);
Run Code Online (Sandbox Code Playgroud)

android

7
推荐指数
1
解决办法
202
查看次数

如何将 BufferedImage 写入不压缩的 PNG 格式?

我需要将 a 写BufferedImage为 .png 且不执行压缩。我环顾四周,并提出了以下代码。

public void save(String outFilePath) throws IOException {
    Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("png");
    ImageWriter writer = iter.next();

    File file = new File(outFilePath);      
    ImageOutputStream ios = ImageIO.createImageOutputStream(file);
    writer.setOutput(ios);

    ImageWriteParam iwp = writer.getDefaultWriteParam();
    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    iwp.setCompressionQuality(1.0f);

    IIOImage image = new IIOImage(mapImage, null, null);

    writer.write(null, image, iwp);
    writer.dispose();

    //ImageIO.write(mapImage, "png", file);
}
Run Code Online (Sandbox Code Playgroud)

这是抛出的异常。

Exception in thread "main" java.lang.UnsupportedOperationException: Compression not supported.
    at javax.imageio.ImageWriteParam.setCompressionMode(Unknown Source)
    at Map.MapTransformer.save(MapTransformer.java:246)
    at Map.MapTransformer.main(MapTransformer.java:263)
Run Code Online (Sandbox Code Playgroud)

java png javax.imageio

5
推荐指数
1
解决办法
6506
查看次数

AWS javascript SDK SES SendMail非法地址

我正在尝试使用AWS SES发送邮件.

这是我看到的错误:

{
    "message": "Illegal address",
    "code": "InvalidParameterValue",
    "time": "2017-06-02T03:12:37.110Z",
    "requestId": "544c6aee-4741-11e7-9cf5-a709f069aa99",
    "statusCode": 400,
    "retryable": false,
    "retryDelay": 73.04001529701054
}
Run Code Online (Sandbox Code Playgroud)

这是传递给AWS.SES的SendMail方法的请求对象,用于javascript SDK.

{
    "Destination": {
        "BccAddresses": [],
        "CcAddresses": [],
        "ToAddresses": [
            "success@simulator.amazonses.com"
        ]
    },
    "Message": {
        "Body": {
            "Html": {
                "Charset": "UTF-8",
                "Data": "You have been removed from Kudo mailing list for account: bob@gmail.com"
            },
            "Text": {
                "Charset": "UTF-8",
                "Data": "You have been removed from Kudo mailing list for account: bob@gmail.com"
            }
        },
        "Subject": {
            "Charset": "UTF-8",
            "Data": "Kudo email …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services amazon-ses

5
推荐指数
1
解决办法
481
查看次数

AWS IAM Lambda"无权执行:lambda:GetFunction"

当我将我的lambda执行角色的IAM策略设置为:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "lambda:GetFunction"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[AccessDeniedException: User:
arn:aws:sts::xxx:assumed-role/supercoolsoftware-dev-us-west-2-lambdaRole/supercoolsoftware-dev-addEmail
is not authorized to perform: 
lambda:GetFunction on resource:
arn:aws:lambda:us-west-2:xxx:function:supercoolsoftware-dev-dailyEmail]
Run Code Online (Sandbox Code Playgroud)

但是,当我将策略设置为:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "lambda:*"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

错误消失了......我还需要添加什么?

amazon-web-services amazon-iam aws-lambda

5
推荐指数
1
解决办法
6252
查看次数

如何突出显示android设置应用程序菜单项?

当应用程序需要通过设置应用程序要求用户授予权限时,某些用户可能很难弄清楚如何去做。

我遇到了这个应用程序:https : //play.google.com/store/apps/details?id=com.treydev.pns

观看此视频:https : //youtu.be/eHXBc5Mmsqs

不知何故,该应用程序能够突出显示设置应用程序中的菜单项,以指导用户完成授予权限/调整设置的过程,并且无需先请求无障碍服务或任何其他权限。

如何做到这一点?

settings android

5
推荐指数
0
解决办法
498
查看次数