【问题标题】:Lambda sending notifications via pinpoint is very unreliable, how do I fix this?Lambda 通过 pinpoint 发送通知非常不可靠,我该如何解决?
【发布时间】:2022-04-06 12:51:40
【问题描述】:

我正在尝试从 AWS lambda 函数发送 GCM 通知。 我有两个问题:

  1. 执行角色需要什么权限?
  2. 下面描述的行为是否是我可以从 AWS 通知中获得的最佳行为,我是否需要查看其他服务?

我关注了另一个问题的信息: Send a notification by Lambda function with AWS Pinpoint

我的 lambda 如下:

async function sendMessage() {
  try {
      const pinpoint = new AWS.Pinpoint();
      let users = {};
      users["---"] = {};
      const params = {
          ApplicationId: applicationId, 
          SendUsersMessageRequest: {
              Users: users,
              MessageConfiguration: {
                  'GCMMessage': {
                      Action: 'OPEN_APP',
                      Title: "Lambda User Msg",
                      SilentPush: false,
                      Body: "Lambda User Send Message Test"
                  }
              }
          }
      };
      console.log("Params:", params);
      let rspnData = await pinpoint.sendUsersMessages(params).promise();
      console.log("sendUsersMessages:rspnData:", rspnData);
  } catch (err) {
      console.log("sendMessage error:", err);
  }
}
  1. 有人可以建议 lambda 的执行角色所需的最低权限吗?

我目前已允许所有与精确相关的内容,但希望 确定实际应该允许什么?

2。 当我从 AWS lambda 代码控制台测试代码时,我得到以下执行日志:

2022-02-11T08:57:26.446Z    --- INFO    SendMessage
2022-02-11T08:57:26.466Z    --- INFO    Params: {   ApplicationId: '---', 
SendUsersMessageRequest: {
Users: { '---': {} },
MessageConfiguration: { GCMMessage: [Object] }   } } END RequestId: 

sendUserMessage 没有输出!

旁白:我已将最大执行时间增加到 20 秒,但这感觉不对!

或者我收到表单错误:

2022-02-11T09:38:32.721Z    --- INFO    sendMessage error: Error: Client network socket disconnected before secure TLS connection was established
    at connResetException (internal/errors.js:639:14)
    at TLSSocket.onConnectEnd (_tls_wrap.js:1570:19)
    at TLSSocket.emit (events.js:412:35)
    at TLSSocket.emit (domain.js:475:12)
    at endReadableNT (internal/streams/readable.js:1334:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) {
  code: 'TimeoutError',
  path: null,
  host: 'pinpoint.eu-west-2.amazonaws.com',
  port: 443,
  localAddress: undefined,
  time: 2022-02-11T09:38:32.721Z,
  region: 'eu-west-2',
  hostname: 'pinpoint.eu-west-2.amazonaws.com',
  retryable: true
}
END RequestId: ---
REPORT RequestId: ---   Duration: 173.82 ms Billed Duration: 174 ms Memory Size: 128 MB Max Memory Used: 83 MB

在 Cloudwatch 日志中,我偶尔会得到以下输出:

2022-02-11T08:54:11.847Z    --- INFO    sendUsersMessages:rspnData: {
  SendUsersMessageResponse: {
    ApplicationId: '---',
    RequestId: '---',
    Result: { '---': [Object] }
  }
}

表示通知确实发送成功了!

有时我会在应用程序中收到通知! 通常非常延迟!

如果我通过 aws cli 使用相同的 ID:

aws pinpoint send-users-messages --cli-input-json file://pinpoint-send-users-messages.json

如预期的那样,我收到了提示通知!

这是我希望从 AWS 发送通知中获得的最好结果吗?我需要看看另一个吗? 服务,还是我做错了什么?

【问题讨论】:

    标签: amazon-web-services aws-lambda push-notification permissions aws-pinpoint


    【解决方案1】:

    在我的例子中,lambda 具有以下作用。 不知道对你有没有帮助,请看一下。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "logs:CreateLogStream",
                    "logs:PutLogEvents",
                    "logs:CreateLogGroup"
                ],
                "Resource": "arn:aws:logs:*:*:*"
            },
            {
                "Effect": "Allow",
                "Action": "mobiletargeting:SendUsersMessages",
                "Resource": "arn:aws:mobiletargeting:us-west-2:{your aws account id}:apps/{pinpoint project id}/messages"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "mobiletargeting:GetEndpoint",
                    "mobiletargeting:UpdateEndpoint",
                    "mobiletargeting:PutEvents"
                ],
                "Resource": "arn:aws:mobiletargeting:us-west-2:{your aws account id}:apps/{pinpoint project id}/endpoints/*"
            }
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多