|
71 | 71 | Tags tags |
72 | 72 | end |
73 | 73 |
|
| 74 | + Logs_LogGroup("#{function_name}LogGroup") do |
| 75 | + LogGroupName FnSub("/aws/lambda/${function_name}") |
| 76 | + RetentionInDays lambda_config['log_retention'] if lambda_config.has_key? 'log_retention' |
| 77 | + end |
| 78 | + |
74 | 79 | lambda_config['events'].each do |name,event| |
75 | 80 |
|
76 | 81 | case event['type'] |
77 | 82 | when 'schedule' |
| 83 | + |
78 | 84 | Events_Rule("#{function_name}Schedule#{name}") do |
79 | 85 | ScheduleExpression event['expression'] |
80 | 86 | State event['disable'] ? 'DISABLED' : 'ENABLED' |
|
86 | 92 | Targets([target]) |
87 | 93 | end |
88 | 94 |
|
89 | | - Lambda_Permission("#{function_name}Permissions") do |
| 95 | + Lambda_Permission("#{function_name}#{name}Permissions") do |
90 | 96 | FunctionName Ref(function_name) |
91 | 97 | Action 'lambda:InvokeFunction' |
92 | 98 | Principal 'events.amazonaws.com' |
93 | 99 | SourceArn FnGetAtt("#{function_name}Schedule#{name}", 'Arn') |
94 | 100 | end |
95 | 101 |
|
96 | 102 | when 'sns' |
| 103 | + |
97 | 104 | SNS_Topic("#{function_name}Sns#{name}") do |
98 | 105 | Subscription([ |
99 | 106 | { |
|
103 | 110 | ]) |
104 | 111 | end |
105 | 112 |
|
106 | | - Lambda_Permission("#{function_name}Permissions") do |
| 113 | + Lambda_Permission("#{function_name}#{name}Permissions") do |
107 | 114 | FunctionName Ref(function_name) |
108 | 115 | Action 'lambda:InvokeFunction' |
109 | 116 | Principal 'sns.amazonaws.com' |
110 | 117 | SourceArn Ref("#{function_name}Sns#{name}") |
111 | 118 | end |
| 119 | + |
| 120 | + when 'filter' |
| 121 | + |
| 122 | + Logs_SubscriptionFilter("#{function_name}SubscriptionFilter#{name}") do |
| 123 | + DestinationArn FnGetAtt(function_name, 'Arn') |
| 124 | + FilterPattern event['pattern'] |
| 125 | + LogGroupName Ref(event['log_group']) |
| 126 | + end |
| 127 | + |
| 128 | + Lambda_Permission("#{function_name}#{name}Permissions") do |
| 129 | + FunctionName Ref(function_name) |
| 130 | + Action 'lambda:InvokeFunction' |
| 131 | + Principal FnSub('logs.${AWS::Region}.amazonaws.com') |
| 132 | + SourceAccount Ref('AWS::AccountId') |
| 133 | + SourceArn FnSub("arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/#{event['log_group']}:*") |
| 134 | + end |
| 135 | + |
112 | 136 | end |
113 | 137 |
|
114 | 138 | end if lambda_config.has_key?('events') |
|
0 commit comments