Skip to content

Commit e1065a4

Browse files
committed
define lambda role and function
1 parent a511eb4 commit e1065a4

File tree

4 files changed

+57
-0
lines changed

4 files changed

+57
-0
lines changed

app.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from openchallenges.service_stack import LoadBalancedServiceStack
88
from openchallenges.load_balancer_stack import LoadBalancerStack
99
from openchallenges.service_props import ServiceProps, ContainerVolume
10+
from openchallenges.data_integration_stack import DataIntegrationStack
1011
import openchallenges.utils as utils
1112

1213
app = cdk.App()
@@ -328,6 +329,10 @@
328329
app, f"{stack_name_prefix}-load-balancer", network_stack.vpc
329330
)
330331

332+
data_integration_stack = DataIntegrationStack(
333+
app, f"{stack_name_prefix}-data-integration"
334+
)
335+
331336
api_docs_props = ServiceProps(
332337
"openchallenges-api-docs",
333338
8010,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
FROM ghcr.io/sage-bionetworks/sandbox-lambda-python:sha-b38dc22
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from aws_cdk import aws_iam as iam
2+
from aws_cdk import aws_lambda as _lambda
3+
from constructs import Construct
4+
5+
6+
class DataIntegrationLambda(Construct):
7+
8+
def __init__(self, scope: Construct, id: str) -> None:
9+
super().__init__(scope, id)
10+
11+
self.lambda_role = self._build_lambda_role()
12+
self.lambda_function = self._build_lambda_function(self.lambda_role)
13+
14+
def _build_lambda_role(self) -> iam.Role:
15+
return iam.Role(
16+
self,
17+
"LambdaRole",
18+
assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"),
19+
managed_policies=[
20+
iam.ManagedPolicy.from_aws_managed_policy_name(
21+
managed_policy_name=("service-role/AWSLambdaBasicExecutionRole")
22+
)
23+
],
24+
)
25+
26+
# Create the Lambda function using a GHCR image
27+
def _build_lambda_function(self, role: iam.Role) -> _lambda.Function:
28+
return _lambda.DockerImageFunction(
29+
self,
30+
"LambdaFunction",
31+
code=_lambda.DockerImageCode.from_image_asset(
32+
# Directory relative to where you execute cdk deploy contains a
33+
# Dockerfile with build instructions.
34+
directory="cdk_docker/data_integration_lambda"
35+
),
36+
role=role,
37+
memory_size=128,
38+
architecture=_lambda.Architecture.X86_64,
39+
)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import aws_cdk as cdk
2+
from openchallenges.data_integration_lambda import DataIntegrationLambda
3+
from constructs import Construct
4+
5+
6+
class DataIntegrationStack(cdk.Stack):
7+
8+
def __init__(self, scope: Construct, id: str, **kwargs) -> None:
9+
super().__init__(scope, id, **kwargs)
10+
11+
# Instantiate the DataIntegrationLambda construct
12+
DataIntegrationLambda(self, "openchallenges-data-integration-lambda")

0 commit comments

Comments
 (0)