Da alle fehlschlagen, habe ich beschlossen, es mit JST anzugeben und mit CDK in UTC zu konvertieren.
Derzeit nur die Definition von CloudWatch-Ereignissen. Was auch immer Sie dies mit Schrittfunktionen kombinieren.
#Batch-Zeitplan in JST definieren (in Cron-Ausdruck)*Der Ort ist leer)
props['schedule'] = {
'minute': 40,
'hour': 9,
'week_day': 'MON-FRI'
}
#Konvertieren Sie JST in UTC
if props['schedule'].get('hour') is not None:
props['schedule']['hour'] = props['schedule']['hour'] - 9
if props['schedule']['hour'] < 0:
props['schedule']['hour'] += 24
if props['schedule'].get('day') is not None:
props['schedule']['day'] = props['schedule']['day'] - 1
#JST Wenn es zu Beginn des Monats bis 9 Uhr morgens in Betrieb ist, betreiben Sie es an einem Datum wie dem Monatsende und urteilen Sie nach Lambda usw.
if props['schedule'].get('day') == 0:
props['schedule']['day'] = '28-31'
# props['schedule']Konvertieren Sie den Inhalt in str
for key in props['schedule'].keys():
props['schedule'][key] = str(props['schedule'][key])
# Cloud Watch Events
Rule = events.Rule(
app, f"Batch-{id}",
schedule=events.Schedule.cron(**props['schedule'])
)
Es wird nur beurteilt, ob es der Beginn des Monats (1.) von JST ist und Richtig oder Falsch zurückgegeben wird. Wenn Sie es in StepFunctions integrieren möchten, können Sie den Rückgabewert beurteilen und als nächstes oder Ende fließen lassen. Wenn es sich um einen einfachen Prozess handelt, können Sie die Verarbeitung mit "if result:" in diesem Lambda fortsetzen.
import datetime
import calendar
def lambda_handler(event, context):
print('===Start Lambda===')
print(event)
dt_now = datetime.datetime.now()
monthrange = calendar.monthrange(dt_now.year, dt_now.month)[1]
result = dt_now.day == monthrange
print(result)
return result
Ich wäre dankbar, wenn ein weiser Mann, der etwas besser weiß, darauf hinweisen könnte.
Recommended Posts