LambdaResourcesFactory.kt
- /**
- * This file is part of the pl.wrzasq.cform.
- *
- * @license http://mit-license.org/ The MIT license
- * @copyright 2021, 2024 © by Rafał Wrzeszcz - Wrzasq.pl.
- */
- package pl.wrzasq.cform.resource.aws.passwordpolicy.config
- import com.fasterxml.jackson.core.type.TypeReference
- import pl.wrzasq.cform.commons.config.BaseLambdaResourcesFactory
- import pl.wrzasq.cform.resource.aws.passwordpolicy.action.CreateHandler
- import pl.wrzasq.cform.resource.aws.passwordpolicy.action.DeleteHandler
- import pl.wrzasq.cform.resource.aws.passwordpolicy.action.ReadHandler
- import pl.wrzasq.cform.resource.aws.passwordpolicy.model.ResourceModel
- import software.amazon.awssdk.regions.Region
- import software.amazon.awssdk.services.iam.IamClient
- import software.amazon.cloudformation.Action
- import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy
- import software.amazon.cloudformation.proxy.HandlerRequest
- import software.amazon.cloudformation.proxy.ProxyClient
- import software.amazon.cloudformation.proxy.StdCallbackContext
- /**
- * Resources factory for AWS Lambda environment.
- */
- class LambdaResourcesFactory : ResourcesFactory, BaseLambdaResourcesFactory<ResourceModel, Any?>() {
- private val createHandler by lazy { CreateHandler(this, readHandler) }
- private val deleteHandler by lazy { DeleteHandler(this) }
- private val readHandler by lazy { ReadHandler(this) }
- override fun getRequestTypeReference() =
- object : TypeReference<HandlerRequest<ResourceModel?, StdCallbackContext, Any?>>() {}
- override fun getResourceTypeReference() = object : TypeReference<ResourceModel?>() {}
- override fun buildHandlers() = mapOf(
- Action.CREATE to createHandler,
- Action.UPDATE to createHandler,
- Action.READ to readHandler,
- Action.DELETE to deleteHandler,
- )
- override fun getClient(proxy: AmazonWebServicesClientProxy): ProxyClient<IamClient> = proxy.newProxy {
- IamClient.builder()
- .region(Region.AWS_GLOBAL)
- .build()
- }
- }