Comme tous échouent, j'ai décidé de le spécifier avec JST et de le convertir en UTC avec CDK.
Pour le moment, seule la définition de CloudWatch Events. Quoi que vous combiniez avec les fonctions Step.
#Définir la planification des lots dans JST (dans l'expression cron)*L'endroit à faire est vide)
props['schedule'] = {
'minute': 40,
'hour': 9,
'week_day': 'MON-FRI'
}
#Convertir JST en 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 S'il fonctionne à 9 heures du matin au début du mois, faites-le fonctionner à une date comme la fin du mois et jugez par Lambda etc.
if props['schedule'].get('day') == 0:
props['schedule']['day'] = '28-31'
# props['schedule']Convertir le contenu en 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'])
)
Seul le fait que ce soit le début du mois (1er) de JST est jugé et True ou False est renvoyé. Si vous voulez l'incorporer dans Step Functions, vous pouvez juger de la valeur de retour de this et le laisser s'écouler ensuite ou se terminer, et s'il s'agit d'un processus simple, vous pouvez continuer le traitement avec ʻif result: `dans ce Lambda.
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
Je serais reconnaissant à tout homme sage qui sait quelque chose de mieux de le signaler.