Closed animista01 closed 1 year ago
Podria adjuntar el archivo serverless.yml
y utils.py
Ya que parese ser un problema al en el serverless.yml
con el tiempo del evento de EventBridge
Pregunta, ha realizado alguna modificacion adicional al programa?
org: bryanvillafane
app: visa-rescheduler-lambda
service: visa-rescheduler-lambda
provider:
name: aws
logRetentionInDays: 5
iam:
role:
statements:
- Effect: Allow
Action: "events:PutRule"
Resource: "arn:aws:events:*:*:rule/visa-rescheduler-lambda*"
stage: ${opt:stage, 'prod'}
region: ${env:AWS_REGION, 'us-east-1'}
ecr:
images:
img:
path: ./
platform: linux/amd64
functions:
main:
timeout: 60
# If you experience any errors such as Chrome crashing or not being available you might need to increase the storage available to your Lambda Function.
memorySize: 2048
image:
name: img
events:
- eventBridge:
schedule: rate(${file(./json_var.json):retry_value, '10'} minutes)
Aca en utils.py, tambien hice modificaciones. Reduje el tiempo en todas las const.
from enum import Enum
class Time:
RETRY_TIME = 60 # wait time between retries/checks for available dates: 1 minute
EXCEPTION_TIME = 60 * 20 # wait time when an exception occurs: 20 minutes
COOLDOWN_TIME = 60 * 20 # wait time when temporary banned (empty list): 20 minutes
class Result(Enum):
SUCCESS = 1
RETRY = 2
COOLDOWN = 3
EXCEPTION = 4
Si, hice un par de modificaciones en visa.py
pero en la logica nada más.
Al ejecutar la funcion as_lambda_function()
en setup.py
se crea temporalmente un archivo JSON para asignar la constante RETRY_TIME a ese archivo, y asi el serverless.yml
pueda usarlo.
def as_lambda_function():
data = {"retry_value": Time.RETRY_TIME // 60} # Verifique esta operacion
...
El error que le esta generando es relacionado a algun valor invalido en schedule: rate(X minutes)
Por favor verifique que ese valor no sea ni decimal o igual a cero.
Como recomendacion adicional, verifique que al ejecutarse cada minuto no genere algun baneo. Debido a que si se realizan esta operacion en periodos de tiempo muy corto puede ser baneado por 5 horas. https://github.com/uxDaniel/visa_rescheduler/issues/4
Funcionó subiendo de 1 a 8 en el RETRY_TIME
pero ahora se ejecuta bien una vez, entra en el cooldown time y falla porque event
en lambda_handler
no tiene el key resources
Es extaño, ya que parece que el evento que le esta llegando al lambda_handler
es:
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
Pero asumo que el evento de EventBridge se manipulo de alguna forma o esta probando solamente la funcion. El parametro event
de la funcion lambda_handler
tiene una estructura especifica que genera el evento de EventBridge donde en la llave [resources][0]
se encuentra el ARN del evento. Similar al siguiente:
arn:aws:events:us-east-1:00000000000:rule/visa-rescheduler-lambda-prod-main-rule-1
Quizas haga falta algo en el readme, despues de
python3 -c "import setup; setup.as_lambda_function()"
, hay algo más por hacer?
Así se ve mi function en el dashboard.
No señor, ese es el único comando que debe ejecutarse. Tal vez le recomiendo nuevamente que revise cualquier cambio que haya realizado que pueda estar afectando ese despliegue como pueden ser los tabs o espaciados en archivos python y .yml. De igual forma revise los últimos commits que he realizado, puede que solucione el problema.
Hey, buen trabajo en esta implementación del visa rescheduler.
Queria saber si has visto este error?