Ich sende Apple Push-Benachrichtigungen über AWS SNS via Lambda mit Boto3 und Python.AWS Lambda/SNS Publish ignoriere ungültige Endpunkte
from __future__ import print_function
import boto3
def lambda_handler(event, context):
client = boto3.client('sns')
for record in event['Records']:
if record['eventName'] == 'INSERT':
rec = record['dynamodb']['NewImage']
competitors = rec['competitors']['L']
for competitor in competitors:
if competitor['M']['confirmed']['BOOL'] == False:
endpoints = competitor['M']['endpoints']['L']
for endpoint in endpoints:
print(endpoint['S'])
response = client.publish(
#TopicArn='string',
TargetArn = endpoint['S'],
Message = 'test message'
#Subject='string',
#MessageStructure='string',
)
Alles funktioniert gut! Aber wenn ein Endpunkt aus irgendeinem Grund ungültig ist (im Moment geschieht dies jedes Mal, wenn ich einen Development Build auf meinem Gerät starte, da ich dann einen anderen Endpunkt bekomme. Dieser wird entweder nicht gefunden oder deaktiviert.) Die Lambda Funktion schlägt fehl und wird aufgerufen noch einmal. In diesem speziellen Fall, wenn zum Beispiel der zweite Endpunkt fehlschlägt, wird der Push immer wieder zu Endpunkt 1 nach Unendlich gesendet.
Ist es möglich, ungültige Endpunkte zu ignorieren und einfach mit der Funktion weiterzumachen?
Danke
Edit:
Dank Ihrer Hilfe ich es mit lösen konnte:
try:
response = client.publish(
#TopicArn='string',
TargetArn = endpoint['S'],
Message = 'test message'
#Subject='string',
#MessageStructure='string',
)
except Exception as e:
print(e)
continue
Übrigens wäre es besser, die Erstellung des boto3 SNS-Clients außerhalb Ihres Handlers zu verschieben. Auf diese Weise müssen Sie nicht jedes Mal, wenn der Handler aufgerufen wird, einen neuen Client erstellen. – garnaat
Hey Garnaat! Vielen Dank für die Informationen! – weka1