Skip to content

Commit 87436c1

Browse files
authored
Merge pull request #37 from pagopa/feature/1.6.0-SNAPSHOT
Pull request Feature/1.6.0 snapshot
2 parents b66f3a1 + c5cd015 commit 87436c1

File tree

6 files changed

+132
-2
lines changed

6 files changed

+132
-2
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.5.0
1+
1.6.0-SNAPSHOT

functions/MergeDeclaredCapacityDB/lambda_function.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ def lambda_handler(event, context):
4242
'''
4343
MERGE INTO public."DECLARED_CAPACITY"
4444
USING public."DECLARED_CAPACITY_DELTA"
45-
ON (public."DECLARED_CAPACITY"."PK" = public."DECLARED_CAPACITY_DELTA"."PK" AND
45+
ON (public."DECLARED_CAPACITY"."GEOKEY" = public."DECLARED_CAPACITY_DELTA"."GEOKEY" AND
46+
public."DECLARED_CAPACITY"."UNIFIED_DELIVERY_DRIVER" = public."DECLARED_CAPACITY_DELTA"."UNIFIED_DELIVERY_DRIVER" AND
47+
public."DECLARED_CAPACITY"."PRODUCT_890" = public."DECLARED_CAPACITY_DELTA"."PRODUCT_890" AND
48+
public."DECLARED_CAPACITY"."PRODUCT_AR" = public."DECLARED_CAPACITY_DELTA"."PRODUCT_AR" AND
49+
public."DECLARED_CAPACITY"."PRODUCT_RS" = public."DECLARED_CAPACITY_DELTA"."PRODUCT_RS" AND
4650
public."DECLARED_CAPACITY"."ACTIVATION_DATE_FROM" = public."DECLARED_CAPACITY_DELTA"."ACTIVATION_DATE_FROM")
4751
--When records are matched, update the records if there is any change
4852
WHEN MATCHED AND public."DECLARED_CAPACITY"."LAST_UPDATE_TIMESTAMP" < public."DECLARED_CAPACITY_DELTA"."LAST_UPDATE_TIMESTAMP"
@@ -76,3 +80,4 @@ def lambda_handler(event, context):
7680
conn.close()
7781

7882
return {'statusCode': 200}
83+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import json
2+
import boto3
3+
import pg8000
4+
import os
5+
6+
def get_db_credentials(secretsManager_SecretId):
7+
client = boto3.client("secretsmanager")
8+
response = client.get_secret_value(SecretId=secretsManager_SecretId)
9+
response_SecretString = json.loads(response['SecretString'])
10+
return response_SecretString
11+
12+
13+
def get_connection(db_host, db_name, db_port, creds):
14+
conn = pg8000.connect(
15+
host=db_host,
16+
database=db_name,
17+
user=creds["username"],
18+
password=creds["password"],
19+
port=db_port
20+
)
21+
return conn
22+
23+
def lambda_handler(event, context):
24+
25+
# recupero variabili d'ambiente
26+
secretsManager_SecretId = os.environ['secretsManager_SecretId']
27+
db_host = os.environ['DB_HOST']
28+
db_name = os.environ['DB_NAME']
29+
db_port = os.environ['DB_PORT']
30+
# recupero credenziali da SecretsManager
31+
creds = get_db_credentials(secretsManager_SecretId)
32+
# connessione db
33+
conn = get_connection(db_host, db_name, db_port, creds)
34+
# query
35+
cur = conn.cursor()
36+
cur.execute(
37+
'''
38+
WITH CTE AS (
39+
SELECT *,
40+
ROW_NUMBER() OVER (
41+
PARTITION BY public."DECLARED_CAPACITY"."GEOKEY", public."DECLARED_CAPACITY"."UNIFIED_DELIVERY_DRIVER", public."DECLARED_CAPACITY"."PRODUCT_890",
42+
public."DECLARED_CAPACITY"."PRODUCT_AR" , public."DECLARED_CAPACITY"."PRODUCT_RS", public."DECLARED_CAPACITY"."ACTIVATION_DATE_FROM"
43+
ORDER BY public."DECLARED_CAPACITY"."LAST_UPDATE_TIMESTAMP" DESC
44+
) AS "rn"
45+
FROM public."DECLARED_CAPACITY"
46+
)
47+
DELETE FROM public."DECLARED_CAPACITY"
48+
WHERE public."DECLARED_CAPACITY"."PK" IN (SELECT "PK" FROM CTE WHERE "rn" > 1);
49+
'''
50+
)
51+
conn.commit()
52+
cur.close()
53+
conn.close()
54+
55+
return {'statusCode': 200}
56+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pg8000==1.31.5

scripts/aws/cfn/microservice.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,6 +1005,62 @@ Resources:
10051005
- secretsmanager:GetSecretValue
10061006
Resource: !Ref SvcSimulatorUserSecretArn
10071007

1008+
# Lambda RimozioneDuplicatiDeclaredCapacity
1009+
RimozioneDuplicatiDeclaredCapacityLambda:
1010+
Type: AWS::Lambda::Function
1011+
Properties:
1012+
FunctionName: !Sub "${ProjectName}-${MicroServiceUniqueName}-Lambda-RimozioneDuplicatiDeclaredCapacity"
1013+
Runtime: python3.13
1014+
Handler: lambda_function.lambda_handler
1015+
Role: !GetAtt RimozioneDuplicatiDeclaredCapacityLambdaRole.Arn
1016+
Code:
1017+
S3Bucket: !Ref MicroserviceBucketName
1018+
S3Key: !Sub "${MicroserviceBucketBaseKey}/functions_zip/RimozioneDuplicatiDeclaredCapacity.zip"
1019+
Timeout: 300
1020+
MemorySize: 128
1021+
VpcConfig:
1022+
SecurityGroupIds:
1023+
- !Ref RdsSimulatorSecurityGroupId
1024+
SubnetIds: !Split [',', !Ref VPNServicesSubnetsIds]
1025+
Environment:
1026+
Variables:
1027+
DB_HOST: !Ref RdsSimulatorEndpointAddress
1028+
DB_PORT: !Ref RdsSimulatorPort
1029+
DB_NAME: !Ref RdsSimulatorDbName
1030+
secretsManager_SecretId: !Ref SvcSimulatorUserSecretArn
1031+
1032+
RimozioneDuplicatiDeclaredCapacityLambdaRole:
1033+
Type: AWS::IAM::Role
1034+
Properties:
1035+
RoleName: !Sub "${ProjectName}-${MicroServiceUniqueName}-lambda-rimozioneduplicatidc-role"
1036+
AssumeRolePolicyDocument:
1037+
Version: '2012-10-17'
1038+
Statement:
1039+
- Effect: Allow
1040+
Principal:
1041+
Service: lambda.amazonaws.com
1042+
Action: sts:AssumeRole
1043+
ManagedPolicyArns:
1044+
- arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole
1045+
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
1046+
Policies:
1047+
- PolicyName: SecretsManagerAccess
1048+
PolicyDocument:
1049+
Version: '2012-10-17'
1050+
Statement:
1051+
- Effect: Allow
1052+
Action:
1053+
- secretsmanager:GetSecretValue
1054+
Resource: !Ref SvcSimulatorUserSecretArn
1055+
1056+
RimozioneDuplicatiDeclaredCapacityLambdaAlarms:
1057+
Type: AWS::CloudFormation::Stack
1058+
Properties:
1059+
TemplateURL: !Sub "${TemplateBucketBaseUrl}/fragments/lambda-alarms.yaml"
1060+
Parameters:
1061+
FunctionName: !Ref RimozioneDuplicatiDeclaredCapacityLambda
1062+
AlarmSNSTopicArn: !Ref AlarmSNSTopicArn
1063+
10081064
# Glue Connection
10091065
GlueNetworkConnection:
10101066
Type: AWS::Glue::Connection

scripts/aws/cfn/storage.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,18 @@ Resources:
268268
LogGroupRetention: !Ref LogRetention
269269
LogGroupPrefix: '/aws/lambda'
270270
LogsKinesisSourceStreamArn: !Ref LogsKinesisSourceStreamArn
271+
272+
RimozioneDuplicatiDeclaredCapacityLambdaLogGroup:
273+
Type: AWS::CloudFormation::Stack
274+
UpdateReplacePolicy: Retain
275+
DeletionPolicy: Retain
276+
Properties:
277+
TemplateURL: !Sub "${TemplateBucketBaseUrl}/fragments/log-group.yaml"
278+
Parameters:
279+
LogGroupName: !Sub "${ProjectName}-simulatore-recapiti-Lambda-RimozioneDuplicatiDeclaredCapacity"
280+
LogGroupRetention: !Ref LogRetention
281+
LogGroupPrefix: '/aws/lambda'
282+
LogsKinesisSourceStreamArn: !Ref LogsKinesisSourceStreamArn
271283

272284
SimulatorAuroraDbCluster:
273285
Type: AWS::CloudFormation::Stack

0 commit comments

Comments
 (0)