AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: Sample SAM Template for Micronaut Lambda functions with SnapStart enabled Globals: Function: Tracing: Active CodeUri: target/micronaut-lambda-function-1.0.0-SNAPSHOT.jar Runtime: java17 Timeout: 30 MemorySize: 1024 AutoPublishAlias: live SnapStart: ApplyOn: PublishedVersions Environment: Variables: PRODUCT_TABLE_NAME: !Ref ProductsTable Resources: MyApi: Type: AWS::Serverless::Api Properties: TracingEnabled: true StageName: prod Name: My Lambda Micronaut Sample API GetProductByIdFunction: Type: AWS::Serverless::Function Properties: Handler: software.amazonaws.example.product.handler.GetProductByIdHandler::handleRequest Policies: - DynamoDBReadPolicy: TableName: !Ref ProductsTable Events: GetRequestById: Type: Api Properties: RestApiId: !Ref MyApi Path: /products/{id} Method: get GetProductByIdFunctionLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Sub "/aws/lambda/${GetProductByIdFunction}" RetentionInDays: 7 GetProductsFunction: Type: AWS::Serverless::Function Properties: Handler: software.amazonaws.example.product.handler.GetAllProductsHandler::handleRequest Policies: - DynamoDBReadPolicy: TableName: !Ref ProductsTable Events: GetRequest: Type: Api Properties: RestApiId: !Ref MyApi Path: /products Method: get GetProductsFunctionLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Sub "/aws/lambda/${GetProductsFunction}" RetentionInDays: 7 PutProductFunction: Type: AWS::Serverless::Function Properties: Handler: software.amazonaws.example.product.handler.CreateProductHandler::handleRequest Policies: - DynamoDBCrudPolicy: TableName: !Ref ProductsTable Events: PutRequest: Type: Api Properties: RestApiId: !Ref MyApi Path: /products/{id} Method: put PutProductFunctionLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Sub "/aws/lambda/${PutProductFunction}" RetentionInDays: 7 DeleteProductFunction: Type: AWS::Serverless::Function Properties: Handler: software.amazonaws.example.product.handler.DeleteProductHandler::handleRequest Policies: - DynamoDBCrudPolicy: TableName: !Ref ProductsTable Events: PutRequest: Type: Api Properties: RestApiId: !Ref MyApi Path: /products/{id} Method: delete DeleteProductFunctionLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Sub "/aws/lambda/${DeleteProductFunction}" RetentionInDays: 7 ProductsTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: 'PK' AttributeType: 'S' KeySchema: - AttributeName: 'PK' KeyType: 'HASH' BillingMode: PAY_PER_REQUEST Outputs: MicronautApiEndpoint: Description: "API Gateway endpoint URL for Prod stage for Micronaut sample function" Value: !Sub "https://${MyApi}.execute-api.${AWS::Region}.amazonaws.com/prod/products"