diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 3ace24a96..e38fe4149 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -57,16 +57,18 @@ jobs: role-to-assume: "${{ secrets.ACTIONS_INTEGRATION_ROLE_NAME }}" role-session-name: java-language-sdk-test aws-region: ${{ env.AWS_REGION }} + - name: Build locally + run: mvn -B -q -Dmaven.test.skip=true install --file pom.xml - name: sam build run: | # add --no-cached if debugging sam build sam build --parameter-overrides \ - 'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=DockerFile,ParameterValue=examples/Dockerfile-java${{ matrix.java }} ParameterKey=FunctionNameSuffix,ParameterValue=-java${{ matrix.java }}' + 'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }}' working-directory: ./examples - name: sam deploy run: | - sam deploy --stack-name Java${{ matrix.java }}SDKCloudBasedIntegrationTestStack \ + sam deploy --stack-name JavaSDKCloudBasedIntegrationTestStack-Java${{ matrix.java }}Runtime \ --resolve-image-repos --resolve-s3 --capabilities CAPABILITY_IAM --parameter-overrides \ - 'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=DockerFile,ParameterValue=examples/Dockerfile-java${{ matrix.java }} ParameterKey=FunctionNameSuffix,ParameterValue=-java${{ matrix.java }}' + 'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }}' working-directory: ./examples - name: Setup Java ${{ matrix.java }} uses: actions/setup-java@v5 @@ -77,5 +79,5 @@ jobs: - name: Build locally run: mvn -B -q -Dmaven.test.skip=true install --file pom.xml - name: Cloud Based Integration Tests - run: mvn clean test -B -Dtest.cloud.enabled=true -Dtest=CloudBasedIntegrationTest -Dtest.function.name.suffix='-java${{ matrix.java }}' + run: mvn clean test -B -Dtest.cloud.enabled=true -Dtest=CloudBasedIntegrationTest -Dtest.function.name.suffix='-java${{ matrix.java }}-runtime' working-directory: ./examples diff --git a/examples/Dockerfile b/examples/Dockerfile deleted file mode 100644 index 379c2c8d1..000000000 --- a/examples/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# Build stage -FROM amazoncorretto:17-alpine AS builder - -# Install Maven -RUN apk add --no-cache maven -WORKDIR /build - -# Copy parent pom and all modules -COPY pom.xml . -COPY sdk ./sdk -COPY sdk-testing ./sdk-testing -COPY sdk-integration-tests ./sdk-integration-tests -COPY examples ./examples -COPY coverage-report ./coverage-report - -# Build and install the SDK modules first -RUN mvn clean install -DskipTests -pl sdk,sdk-testing -am - -# Build the examples project -RUN mvn clean package -DskipTests -pl examples -am - -# Runtime stage -FROM public.ecr.aws/lambda/java:17 - -# Copy only the built JAR from build stage -COPY --from=builder /build/examples/target/*.jar ${LAMBDA_TASK_ROOT}/lib/ - -# Default CMD (will be overridden by ImageConfig.Command in SAM template) -CMD ["software.amazon.lambda.durable.examples.step.SimpleStepExample::handleRequest"] diff --git a/examples/Dockerfile-java17 b/examples/Dockerfile-java17 deleted file mode 100644 index 8e49bfd33..000000000 --- a/examples/Dockerfile-java17 +++ /dev/null @@ -1,30 +0,0 @@ -# Build stage -FROM --platform=linux/amd64 amazoncorretto:17-alpine AS builder - -WORKDIR /build - -# Copy parent pom and all modules -COPY pom.xml . -COPY sdk ./sdk -COPY sdk-testing ./sdk-testing -COPY sdk-integration-tests ./sdk-integration-tests -COPY examples ./examples -COPY coverage-report ./coverage-report - -# Install Maven -RUN apk add --no-cache maven - -# Build and install the SDK modules first -RUN mvn clean install -DskipTests -pl sdk,sdk-testing -am - -# Build the examples project -RUN mvn clean package -DskipTests -pl examples -am - -# Runtime stage -FROM public.ecr.aws/lambda/java:17 - -# Copy only the built JAR from build stage -COPY --from=builder /build/examples/target/*.jar ${LAMBDA_TASK_ROOT}/lib/ - -# Default CMD (will be overridden by ImageConfig.Command in SAM template) -CMD ["software.amazon.lambda.durable.examples.step.SimpleStepExample::handleRequest"] diff --git a/examples/Dockerfile-java21 b/examples/Dockerfile-java21 deleted file mode 100644 index c0714457b..000000000 --- a/examples/Dockerfile-java21 +++ /dev/null @@ -1,30 +0,0 @@ -# Build stage -FROM --platform=linux/amd64 amazoncorretto:21-alpine AS builder - -WORKDIR /build - -# Copy parent pom and all modules -COPY pom.xml . -COPY sdk ./sdk -COPY sdk-testing ./sdk-testing -COPY sdk-integration-tests ./sdk-integration-tests -COPY examples ./examples -COPY coverage-report ./coverage-report - -# Install Maven -RUN apk add --no-cache maven - -# Build and install the SDK modules first -RUN mvn clean install -DskipTests -pl sdk,sdk-testing -am - -# Build the examples project -RUN mvn clean package -DskipTests -pl examples -am - -# Runtime stage -FROM public.ecr.aws/lambda/java:21 - -# Copy only the built JAR from build stage -COPY --from=builder /build/examples/target/*.jar ${LAMBDA_TASK_ROOT}/lib/ - -# Default CMD (will be overridden by ImageConfig.Command in SAM template) -CMD ["software.amazon.lambda.durable.examples.step.SimpleStepExample::handleRequest"] diff --git a/examples/Dockerfile-java25 b/examples/Dockerfile-java25 deleted file mode 100644 index 6201b7918..000000000 --- a/examples/Dockerfile-java25 +++ /dev/null @@ -1,30 +0,0 @@ -# Build stage -FROM --platform=linux/amd64 amazoncorretto:25-alpine AS builder - -WORKDIR /build - -# Copy parent pom and all modules -COPY pom.xml . -COPY sdk ./sdk -COPY sdk-testing ./sdk-testing -COPY sdk-integration-tests ./sdk-integration-tests -COPY examples ./examples -COPY coverage-report ./coverage-report - -# Install Maven -RUN apk add --no-cache maven - -# Build and install the SDK modules first -RUN mvn clean install -DskipTests -pl sdk,sdk-testing -am - -# Build the examples project -RUN mvn clean package -DskipTests -pl examples -am - -# Runtime stage -FROM public.ecr.aws/lambda/java:25 - -# Copy only the built JAR from build stage -COPY --from=builder /build/examples/target/*.jar ${LAMBDA_TASK_ROOT}/lib/ - -# Default CMD (will be overridden by ImageConfig.Command in SAM template) -CMD ["software.amazon.lambda.durable.examples.step.SimpleStepExample::handleRequest"] diff --git a/examples/README.md b/examples/README.md index 606aa6370..3eb183e0a 100644 --- a/examples/README.md +++ b/examples/README.md @@ -7,7 +7,6 @@ Example applications demonstrating the AWS Lambda Durable Execution SDK for Java - Java 17+ - Maven 3.8+ - AWS SAM CLI (for deployment) -- Docker (for SAM build) - AWS credentials configured ## Local Testing diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/CloudBasedIntegrationTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/CloudBasedIntegrationTest.java index 740f3f017..6f809513e 100644 --- a/examples/src/test/java/software/amazon/lambda/durable/examples/CloudBasedIntegrationTest.java +++ b/examples/src/test/java/software/amazon/lambda/durable/examples/CloudBasedIntegrationTest.java @@ -60,7 +60,7 @@ static void setup() { account = System.getProperty("test.aws.account"); region = System.getProperty("test.aws.region"); - functionNameSuffix = System.getProperty("test.function.name.suffix", ""); + functionNameSuffix = System.getProperty("test.function.name.suffix", "-java17-runtime"); if (account == null || region == null) { try (var sts = StsClient.create()) { diff --git a/examples/template.yaml b/examples/template.yaml index 324ff008e..36adfc5a5 100644 --- a/examples/template.yaml +++ b/examples/template.yaml @@ -10,14 +10,10 @@ Parameters: AllowedValues: - x86_64 - arm64 - DockerFile: + JavaVersion: Type: String - Default: examples/Dockerfile - Description: path to Dockerfile - FunctionNameSuffix: - Type: String - Default: '' - Description: Suffix to append to all function names + Default: 'java17' + Description: Java runtime version Globals: Function: @@ -25,57 +21,41 @@ Globals: MemorySize: 512 Architectures: - !Ref Architecture + DurableConfig: + ExecutionTimeout: 300 + RetentionPeriodInDays: 7 + Runtime: !Ref JavaVersion Resources: NoopExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - noop-example - - !Ref FunctionNameSuffix - ImageConfig: - Command: [ "software.amazon.lambda.durable.examples.general.NoopExample::handleRequest" ] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.general.NoopExample" SimpleStepExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - simple-step-example - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.step.SimpleStepExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.step.SimpleStepExample" SimpleInvokeExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'simple-invoke-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample" Policies: - Statement: - Effect: Allow @@ -83,665 +63,420 @@ Resources: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - lambda:InvokeFunction - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:simple-invoke-example${FunctionNameSuffix}" + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:simple-invoke-example-${JavaVersion}-runtime" - Effect: Allow Action: - lambda:InvokeFunction Resource: '*' - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples WaitExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'wait-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.wait.WaitExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.wait.WaitExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-example-${JavaVersion}-runtime" RetryExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'retry-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.step.RetryExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.step.RetryExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:retry-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:retry-example-${JavaVersion}-runtime" WaitAtLeastExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'wait-at-least-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.wait.WaitAtLeastExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.wait.WaitAtLeastExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-at-least-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-at-least-example-${JavaVersion}-runtime" WaitAtLeastInProcessExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'wait-at-least-in-process-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.wait.WaitAtLeastInProcessExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.wait.WaitAtLeastInProcessExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-at-least-in-process-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-at-least-in-process-example-${JavaVersion}-runtime" RetryInProcessExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'retry-in-process-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.step.RetryInProcessExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.step.RetryInProcessExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:retry-in-process-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:retry-in-process-example-${JavaVersion}-runtime" GenericTypesExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'generic-types-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.general.GenericTypesExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.general.GenericTypesExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:generic-types-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:generic-types-example-${JavaVersion}-runtime" GenericInputOutputExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'generic-input-output-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.general.GenericInputOutputExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.general.GenericInputOutputExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:generic-input-output-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:generic-input-output-example-${JavaVersion}-runtime" CustomConfigExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'custom-config-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.general.CustomConfigExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.general.CustomConfigExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:custom-config-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:custom-config-example-${JavaVersion}-runtime" LoggingExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'logging-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.general.LoggingExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.general.LoggingExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:logging-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:logging-example-${JavaVersion}-runtime" ErrorHandlingExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'error-handling-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.general.ErrorHandlingExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.general.ErrorHandlingExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:error-handling-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:error-handling-example-${JavaVersion}-runtime" CallbackExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'callback-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.callback.CallbackExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.callback.CallbackExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:callback-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:callback-example-${JavaVersion}-runtime" ManyAsyncStepsExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'many-async-steps-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:many-async-steps-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:many-async-steps-example-${JavaVersion}-runtime" ChildContextExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'child-context-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.child.ChildContextExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.child.ChildContextExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:child-context-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:child-context-example-${JavaVersion}-runtime" WaitAsyncExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'wait-async-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.wait.WaitAsyncExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.wait.WaitAsyncExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-async-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-async-example-${JavaVersion}-runtime" ManyAsyncChildContextExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'many-async-child-context-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:many-async-child-context-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:many-async-child-context-example-${JavaVersion}-runtime" SimpleMapExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'simple-map-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.map.SimpleMapExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.map.SimpleMapExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:simple-map-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:simple-map-example-${JavaVersion}-runtime" ComplexMapExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'complex-map-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.map.ComplexMapExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.map.ComplexMapExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:complex-map-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:complex-map-example-${JavaVersion}-runtime" WaitForConditionExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'wait-for-condition-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.wait.WaitForConditionExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.wait.WaitForConditionExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-for-condition-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-for-condition-example-${JavaVersion}-runtime" ConcurrentWaitForConditionExampleFunction: Type: AWS::Serverless::Function Properties: - PackageType: Image FunctionName: !Join - - '' + - '-' - - 'concurrent-wait-for-condition-example' - - !Ref FunctionNameSuffix - ImageConfig: - Command: ["software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample::handleRequest"] - DurableConfig: - ExecutionTimeout: 300 - RetentionPeriodInDays: 7 + - !Ref JavaVersion + - runtime + Handler: "software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample" Policies: - Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState - Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:concurrent-wait-for-condition-example${FunctionNameSuffix}" - Metadata: - Dockerfile: !Ref DockerFile - DockerContext: ../ - DockerTag: durable-examples + Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:concurrent-wait-for-condition-example-${JavaVersion}-runtime" Outputs: NoopExampleFunction: Description: Noop Example Function ARN Value: !GetAtt NoopExampleFunction.Arn - NoopExampleFunctionName: - Description: Noop Example Function Name - Value: !Ref NoopExampleFunction - SimpleStepExampleFunction: Description: Simple Step Example Function ARN Value: !GetAtt SimpleStepExampleFunction.Arn - SimpleStepExampleFunctionName: - Description: Simple Step Example Function Name - Value: !Ref SimpleStepExampleFunction - SimpleInvokeExampleFunction: Description: Simple Invoke Example Function ARN Value: !GetAtt SimpleInvokeExampleFunction.Arn - SimpleInvokeExampleFunctionName: - Description: Simple Invoke Example Function Name - Value: !Ref SimpleInvokeExampleFunction - WaitExampleFunction: Description: Wait Example Function ARN Value: !GetAtt WaitExampleFunction.Arn - WaitExampleFunctionName: - Description: Wait Example Function Name - Value: !Ref WaitExampleFunction - RetryExampleFunction: Description: Retry Example Function ARN Value: !GetAtt RetryExampleFunction.Arn - RetryExampleFunctionName: - Description: Retry Example Function Name - Value: !Ref RetryExampleFunction - WaitAtLeastExampleFunction: Description: Wait At Least Example Function ARN Value: !GetAtt WaitAtLeastExampleFunction.Arn - WaitAtLeastExampleFunctionName: - Description: Wait At Least Example Function Name - Value: !Ref WaitAtLeastExampleFunction - WaitAtLeastInProcessExampleFunction: Description: Wait At Least In Process Example Function ARN Value: !GetAtt WaitAtLeastInProcessExampleFunction.Arn - WaitAtLeastInProcessExampleFunctionName: - Description: Wait At Least In Process Example Function Name - Value: !Ref WaitAtLeastInProcessExampleFunction - RetryInProcessExampleFunction: Description: Retry In Process Example Function ARN Value: !GetAtt RetryInProcessExampleFunction.Arn - RetryInProcessExampleFunctionName: - Description: Retry In Process Example Function Name - Value: !Ref RetryInProcessExampleFunction - GenericTypesExampleFunction: Description: Generic Types Example Function ARN Value: !GetAtt GenericTypesExampleFunction.Arn - GenericTypesExampleFunctionName: - Description: Generic Types Example Function Name - Value: !Ref GenericTypesExampleFunction - GenericInputOutputExampleFunction: Description: Generic Input Output Example Function ARN Value: !GetAtt GenericInputOutputExampleFunction.Arn - GenericInputOutputExampleFunctionName: - Description: Generic Input Output Example Function Name - Value: !Ref GenericInputOutputExampleFunction - CustomConfigExampleFunction: Description: Custom Config Example Function ARN Value: !GetAtt CustomConfigExampleFunction.Arn - CustomConfigExampleFunctionName: - Description: Custom Config Example Function Name - Value: !Ref CustomConfigExampleFunction - LoggingExampleFunction: Description: Logging Example Function ARN Value: !GetAtt LoggingExampleFunction.Arn - LoggingExampleFunctionName: - Description: Logging Example Function Name - Value: !Ref LoggingExampleFunction - ErrorHandlingExampleFunction: Description: Error Handling Example Function ARN Value: !GetAtt ErrorHandlingExampleFunction.Arn - ErrorHandlingExampleFunctionName: - Description: Error Handling Example Function Name - Value: !Ref ErrorHandlingExampleFunction - CallbackExampleFunction: Description: Callback Example Function ARN Value: !GetAtt CallbackExampleFunction.Arn - CallbackExampleFunctionName: - Description: Callback Example Function Name - Value: !Ref CallbackExampleFunction - ManyAsyncStepsExampleFunction: Description: Many Async Steps Example Function ARN Value: !GetAtt ManyAsyncStepsExampleFunction.Arn - ManyAsyncStepsExampleFunctionName: - Description: Many Async Steps Example Function Name - Value: !Ref ManyAsyncStepsExampleFunction - ChildContextExampleFunction: Description: Child Context Example Function ARN Value: !GetAtt ChildContextExampleFunction.Arn - ChildContextExampleFunctionName: - Description: Child Context Example Function Name - Value: !Ref ChildContextExampleFunction - WaitAsyncExampleFunction: Description: Wait Async Example Function ARN Value: !GetAtt WaitAsyncExampleFunction.Arn - WaitAsyncExampleFunctionName: - Description: Wait Async Example Function Name - Value: !Ref WaitAsyncExampleFunction - ManyAsyncChildContextExampleFunction: Description: Many Async Child Context Example Function ARN Value: !GetAtt ManyAsyncChildContextExampleFunction.Arn - ManyAsyncChildContextExampleFunctionName: - Description: Many Async Child Context Example Function Name - Value: !Ref ManyAsyncChildContextExampleFunction - SimpleMapExampleFunction: Description: Simple Map Example Function ARN Value: !GetAtt SimpleMapExampleFunction.Arn - SimpleMapExampleFunctionName: - Description: Simple Map Example Function Name - Value: !Ref SimpleMapExampleFunction - ComplexMapExampleFunction: Description: Complex Map Example Function ARN Value: !GetAtt ComplexMapExampleFunction.Arn - ComplexMapExampleFunctionName: - Description: Complex Map Example Function Name - Value: !Ref ComplexMapExampleFunction - WaitForConditionExampleFunction: Description: Wait For Condition Example Function ARN Value: !GetAtt WaitForConditionExampleFunction.Arn - WaitForConditionExampleFunctionName: - Description: Wait For Condition Example Function Name - Value: !Ref WaitForConditionExampleFunction - ConcurrentWaitForConditionExampleFunction: Description: Concurrent Wait For Condition Example Function ARN Value: !GetAtt ConcurrentWaitForConditionExampleFunction.Arn - - ConcurrentWaitForConditionExampleFunctionName: - Description: Concurrent Wait For Condition Example Function Name - Value: !Ref ConcurrentWaitForConditionExampleFunction -