【发布时间】:2022-04-06 12:51:40
【问题描述】:
我正在尝试从 AWS lambda 函数发送 GCM 通知。 我有两个问题:
- 执行角色需要什么权限?
- 下面描述的行为是否是我可以从 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);
}
}
- 有人可以建议 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