我正在使用AWS编写推送通知服务。用户可以注册多个设备来接收通知。
我将每个ARN(亚马逊资源名称)存储在DynamoDB中。当向用户发送通知时,我获取所有ARN并向每个ARN发布通知。
但是,在某些时候,ARN可能会禁用。这当然意味着无法将通知发送到此特定设备。
如何在尝试发送通知之前使用aws-sdk
来确定是否启用/禁用了端点?
现在,我得到HTTP 502 Internal Server Error
回复。
CloudWatch日志:
018-02-21T16:31:03.742Z 9bc412f6-1724-11e8-aa7b-596b69243ced {
EndpointDisabled: Endpoint is disabled .
...
message: 'Endpoint is disabled',
code: 'EndpointDisabled',
time: 2018-02-21T16:31:03.742Z,
requestId: '6217ac24-89f4-5be5-b6da-ff2328f3cdf4',
statusCode: 400,
retryable: false,
retryDelay: 24.93677139755519 }
我的服务堆栈:
如前所述,我使用aws-sdk
。
答案 0 :(得分:0)
您可以使用AWS.SNS.getEndpointAttributes():
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getEndpointAttributes-property
var params = {
EndpointArn: 'STRING_VALUE' /* required */
};
sns.getEndpointAttributes(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
这会返回几个属性,包括Enabled
标志:
Enabled -- flag that enables/disables delivery to the endpoint. Amazon SNS
will set this to false when a notification service indicates to Amazon SNS
that the endpoint is invalid. Users can set it back to true, typically after
updating Token.