-
Notifications
You must be signed in to change notification settings - Fork 13
/
s3-bucket-events.yaml
64 lines (62 loc) · 2.11 KB
/
s3-bucket-events.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
AWSTemplateFormatVersion: "2010-09-09"
Description: Listening to S3 events at bucket level
Resources:
BucketEvents:
Type: AWS::Events::Rule
Properties:
Name: 's3-bucket-event-rule'
EventPattern:
source: ['aws.s3']
detail-type: ['AWS API Call via CloudTrail']
detail:
eventSource: ['s3.amazonaws.com']
eventName: ['DeleteBucket', 'DeleteBucketCors', 'DeleteBucketLifecycle', 'DeleteBucketPolicy',
'DeleteBucketReplication', 'DeleteBucketTagging', 'DeleteBucketWebsite', 'CreateBucket', 'PutBucketAcl',
'PutBucketCors', 'PutBucketLifecycle', 'PutBucketPolicy', 'PutBucketLogging', 'PutBucketNotification',
'PutBucketReplication', 'PutBucketTagging', 'PutBucketRequestPayment', 'PutBucketVersioning',
'PutBucketWebsite']
State: 'ENABLED'
Targets:
-
Id: 's3-bucket-event-target'
Arn: !Sub '${Fn.Arn}'
InvokePermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !Ref Fn
Action: 'lambda:InvokeFunction'
Principal: events.amazonaws.com
SourceArn: !Sub '${BucketEvents.Arn}'
Role:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
-
Action: ['sts:AssumeRole']
Effect: 'Allow'
Principal:
Service: ['lambda.amazonaws.com']
ManagedPolicyArns: ['arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole']
Policies:
-
PolicyName: run-function
PolicyDocument:
Version: '2012-10-17'
Statement:
-
Effect: 'Allow'
Action: ['s3:*'] # as example only, not mandatory here
Resource: '*'
Fn:
Type: AWS::Lambda::Function
Properties:
Code:
ZipFile: |
def handler(event, context):
detail = event['detail']
print('Got {} event at {}, params: {}'.format(detail['eventName'], detail['eventTime'], detail['requestParameters']))
Runtime: python3.6
Handler: index.handler
Role: !Sub '${Role.Arn}'
Timeout: 10