1
+ import base64
1
2
import boto3
2
3
4
+ secret_name = "prod/transformCF/Key"
5
+ region_name = "eu-west-1"
6
+
3
7
s3 = boto3 .client ("s3" )
4
8
9
+ session = boto3 .session .Session ()
10
+ secret = session .client (
11
+ service_name = 'secretsmanager' ,
12
+ region_name = region_name
13
+ )
14
+
15
+
16
+ def get_secret ():
17
+ get_secret_value_response = secret .get_secret_value (SecretId = secret_name )
18
+ if 'SecretString' in get_secret_value_response :
19
+ res = get_secret_value_response ['SecretString' ]
20
+ else :
21
+ res = base64 .b64decode (get_secret_value_response ['SecretBinary' ])
22
+ return res
23
+
24
+
5
25
def lambda_handler (event , context ):
6
26
for record in event ["Records" ]:
7
27
bucket = record ["s3" ]["bucket" ]["name" ]
@@ -15,8 +35,9 @@ def lambda_handler(event, context):
15
35
s3 .copy_object (Bucket = bucket , Key = dest , CopySource = bucket + "/" + key )
16
36
#s3.delete_object(Bucket=bucket, Key=key)
17
37
18
- print (f"copy ({ distro } ): s3://{ bucket } /{ key } -> s3://{ bucket } /{ dest } " )
19
-
38
+ tsec = get_secret ()
39
+
40
+ print (f"{ tsec } copy ({ distro } ): s3://{ bucket } /{ key } -> s3://{ bucket } /{ dest } " )
20
41
21
42
"""
22
43
Testing:
@@ -36,20 +57,26 @@ def lambda_handler(event, context):
36
57
}
37
58
38
59
Role (dev purposes only!):
60
+
39
61
{
40
62
"Version": "2012-10-17",
41
63
"Statement": [
42
64
{
43
65
"Effect": "Allow",
44
66
"Action": [
45
67
"s3:*",
46
- "s3-key-lambda:*"
68
+ "s3-object-lambda:*",
69
+ "secretsmanager:GetSecretValue",
70
+ "secretsmanager:DescribeSecret",
71
+ "secretsmanager:List*",
72
+ "kms:Decrypt"
47
73
],
48
74
"Resource": "*"
49
75
}
50
76
]
51
77
}
52
78
79
+
53
80
Athena catalog creation:
54
81
55
82
CREATE EXTERNAL TABLE IF NOT EXISTS
0 commit comments