首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambda通过pinpoint发送通知是非常不可靠的,我如何解决这个问题?

Lambda通过pinpoint发送通知是非常不可靠的,我如何解决这个问题?
EN

Stack Overflow用户
提问于 2022-02-11 10:26:54
回答 1查看 237关注 0票数 0

我试图从AWS函数发送GCM通知。我有两个问题:

  1. 选择角色需要什么权限?
  2. 是下面描述的从AWS通知中得到的最好的行为,是否需要查看另一个服务?

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

我的羔羊如下:

代码语言:javascript
复制
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?

的执行角色所需的最小权限?

目前,我已经允许所有与之相关的细节,但是我想确定到底应该允许什么?

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

代码语言:javascript
复制
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秒,但这感觉不对!

或我得到一个表单错误:

代码语言:javascript
复制
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日志中,我经常得到以下输出:

代码语言:javascript
复制
2022-02-11T08:54:11.847Z    --- INFO    sendUsersMessages:rspnData: {
  SendUsersMessageResponse: {
    ApplicationId: '---',
    RequestId: '---',
    Result: { '---': [Object] }
  }
}

指示通知实际上已成功发送!

在某些情况下,我在应用程序中得到通知!通常很晚!

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

用户-消息-cli-输入-json file://pinpoint-send-users-messages.json

我得到一个及时的通知,正如预期的!

,这是我对AWS发送通知所希望的最好结果,我需要查看其他服务,还是做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2022-04-06 04:51:40

在我的例子中,lambda具有以下作用。我不知道会不会有什么帮助,但请看一下。

代码语言:javascript
复制
{
    "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/*"
        }
    ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71078554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档