Я создал лямбду с CloudFormation, которая возвращает текущую дату минус X дней. Мне нужно это значение каждый день, чтобы выполнить правило. Однако я не знаю, как это сделать, потому что я думаю, что я должен внести небольшие изменения в код, чтобы получить новое значение.
Мой код:
lambdaRL:
Type: 'AWS::Lambda::Function'
DependsOn:
- lambdaRLRole
Properties:
Code:
ZipFile: !Sub |
from datetime import datetime, date, timedelta
import cfnresponse
import os
def lambda_handler(event, context):
current_delta = datetime.now() - timedelta(days=int(os.environ['DaysToSubstract']))
current_delta_str = current_delta.strftime("%Y-%m-%d %H:%M:%S")
responseData = {}
responseData['Dates'] = current_delta_str
cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData)
Environment:
Variables:
DaysToSubstract: !Sub '${DaysToSubstract}'
Handler: index.lambda_handler
MemorySize: 128
Role: !GetAtt lambdaRLRole.Arn
Runtime: python3.7
Timeout: 30
lambdaRLRole:
Type: 'AWS::IAM::Role'
Properties:
RoleName: !Sub 'datesRL-lambda-role'
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Action:
- 'sts:AssumeRole'
Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Path: /service-role/
Policies:
- PolicyName: !Sub 'lambda-datesRL-lambda-logs-policy'
PolicyDocument:
Version: 2012-10-17
Statement:
- Action:
- 'logs:CreateLogGroup'
- 'logs:CreateLogStream'
- 'logs:PutLogEvents'
Effect: Allow
Resource:
- !Sub 'arn:aws:logs:*:${AWS::AccountId}:log-group:/aws/lambda/*'
lambdaRLD:
Type: 'Custom::Value'
Properties:
ServiceToken: !GetAtt lambdaRL.Arn
И мой правило:
ETLUsuariosRule:
Type: 'AWS::Events::Rule'
Properties:
Name: !Sub 'sm'
Description: Cloudwatch trigger
ScheduleExpression: cron(20 06 ? * MON-FRI *)
State: ENABLED
Targets:
- Arn: !Ref UsuariosStateMachine
Id: !Sub 'etl-target'
RoleArn:
'Fn::ImportValue':
'Fn::Sub': '${StepFunctionsStack}-InvokeStepFunctionRoleArn'
Input: !Sub
- |
{
"RL": {
"jobCommand": [
"--start_date",
"${Dates}",
"--end_date",
"${Dates}",
]
}
}
- Dates: !GetAtt lambdaRLD.Dates
Как мне выполнить правило с обновленной текущей датой?
Большое спасибо