|
AWSTemplateFormatVersion: '2010-09-09' |
|
Description: 'EventBridge Rule for Quarterly FRED ML Analysis' |
|
|
|
Parameters: |
|
LambdaFunctionName: |
|
Type: String |
|
Default: fred-ml-processor |
|
Description: Name of the Lambda function to invoke |
|
|
|
S3BucketName: |
|
Type: String |
|
Default: fredmlv1 |
|
Description: S3 bucket for storing reports |
|
|
|
Resources: |
|
|
|
QuarterlyAnalysisRule: |
|
Type: AWS::Events::Rule |
|
Properties: |
|
Name: quarterly-fred-ml-analysis |
|
Description: Triggers FRED ML analysis every quarter |
|
ScheduleExpression: cron(0 0 1 */3 ? *) |
|
State: ENABLED |
|
Targets: |
|
- Arn: !GetAtt FredMLLambdaFunction.Arn |
|
Id: FredMLLambdaTarget |
|
Input: !Sub | |
|
{ |
|
"indicators": ["GDP", "UNRATE", "CPIAUCSL", "FEDFUNDS", "DGS10"], |
|
"start_date": "2020-01-01", |
|
"end_date": "2024-12-31", |
|
"options": { |
|
"visualizations": true, |
|
"correlation": true, |
|
"forecasting": false, |
|
"statistics": true |
|
} |
|
} |
|
|
|
|
|
LambdaPermission: |
|
Type: AWS::Lambda::Permission |
|
Properties: |
|
FunctionName: !Ref LambdaFunctionName |
|
Action: lambda:InvokeFunction |
|
Principal: events.amazonaws.com |
|
SourceArn: !GetAtt QuarterlyAnalysisRule.Arn |
|
|
|
|
|
LambdaExecutionRole: |
|
Type: AWS::IAM::Role |
|
Properties: |
|
RoleName: fred-ml-lambda-role |
|
AssumeRolePolicyDocument: |
|
Version: '2012-10-17' |
|
Statement: |
|
- Effect: Allow |
|
Principal: |
|
Service: lambda.amazonaws.com |
|
Action: sts:AssumeRole |
|
ManagedPolicyArns: |
|
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole |
|
Policies: |
|
- PolicyName: FredMLLambdaPolicy |
|
PolicyDocument: |
|
Version: '2012-10-17' |
|
Statement: |
|
- Effect: Allow |
|
Action: |
|
- s3:GetObject |
|
- s3:PutObject |
|
- s3:DeleteObject |
|
- s3:ListBucket |
|
Resource: |
|
- !Sub 'arn:aws:s3:::${S3BucketName}' |
|
- !Sub 'arn:aws:s3:::${S3BucketName}/*' |
|
|
|
Outputs: |
|
QuarterlyAnalysisRuleArn: |
|
Description: ARN of the quarterly analysis rule |
|
Value: !GetAtt QuarterlyAnalysisRule.Arn |
|
Export: |
|
Name: !Sub '${AWS::StackName}-QuarterlyAnalysisRuleArn' |
|
|
|
LambdaExecutionRoleArn: |
|
Description: ARN of the Lambda execution role |
|
Value: !GetAtt LambdaExecutionRole.Arn |
|
Export: |
|
Name: !Sub '${AWS::StackName}-LambdaExecutionRoleArn' |