from aws_cdk import aws_iam as iam
from aws_cdk import aws_lambda as _lambda
from constructs import Construct


class MyConstruct(Construct):

    def __init__(self, scope: Construct, id_: str) -> None:
        super().__init__(scope, id_)

        self.lambda_role = self._build_lambda_role()
        self.lambda_func = self._build_lambda_ecr(self.lambda_role)

    def _build_lambda_role(self) -> iam.Role:
        return iam.Role(
            self,
            'myRole',
            assumed_by=iam.ServicePrincipal('lambda.amazonaws.com'),
            managed_policies=[iam.ManagedPolicy.from_aws_managed_policy_name(managed_policy_name=('service-role/AWSLambdaBasicExecutionRole'))],
        )

    def _build_lambda_ecr(self, role: iam.Role) -> _lambda.DockerImageFunction:
        return _lambda.DockerImageFunction(
            self,
            'EcrLambda',
            code=_lambda.DockerImageCode.from_image_asset(directory='.build/ecr'),
            role=role,
            memory_size=128,
            architecture=_lambda.Architecture.ARM_64,
        )