diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/AppRunner/AutoScalingConfiguration.hs b/gen/Stratosphere/AppRunner/AutoScalingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/AutoScalingConfiguration.hs
@@ -0,0 +1,76 @@
+module Stratosphere.AppRunner.AutoScalingConfiguration (
+        AutoScalingConfiguration(..), mkAutoScalingConfiguration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data AutoScalingConfiguration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-autoscalingconfiguration.html>
+    AutoScalingConfiguration {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-autoscalingconfiguration.html#cfn-apprunner-autoscalingconfiguration-autoscalingconfigurationname>
+                              autoScalingConfigurationName :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-autoscalingconfiguration.html#cfn-apprunner-autoscalingconfiguration-maxconcurrency>
+                              maxConcurrency :: (Prelude.Maybe (Value Prelude.Integer)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-autoscalingconfiguration.html#cfn-apprunner-autoscalingconfiguration-maxsize>
+                              maxSize :: (Prelude.Maybe (Value Prelude.Integer)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-autoscalingconfiguration.html#cfn-apprunner-autoscalingconfiguration-minsize>
+                              minSize :: (Prelude.Maybe (Value Prelude.Integer)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-autoscalingconfiguration.html#cfn-apprunner-autoscalingconfiguration-tags>
+                              tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAutoScalingConfiguration :: AutoScalingConfiguration
+mkAutoScalingConfiguration
+  = AutoScalingConfiguration
+      {haddock_workaround_ = (),
+       autoScalingConfigurationName = Prelude.Nothing,
+       maxConcurrency = Prelude.Nothing, maxSize = Prelude.Nothing,
+       minSize = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties AutoScalingConfiguration where
+  toResourceProperties AutoScalingConfiguration {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::AutoScalingConfiguration",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AutoScalingConfigurationName"
+                              Prelude.<$> autoScalingConfigurationName,
+                            (JSON..=) "MaxConcurrency" Prelude.<$> maxConcurrency,
+                            (JSON..=) "MaxSize" Prelude.<$> maxSize,
+                            (JSON..=) "MinSize" Prelude.<$> minSize,
+                            (JSON..=) "Tags" Prelude.<$> tags])}
+instance JSON.ToJSON AutoScalingConfiguration where
+  toJSON AutoScalingConfiguration {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AutoScalingConfigurationName"
+                 Prelude.<$> autoScalingConfigurationName,
+               (JSON..=) "MaxConcurrency" Prelude.<$> maxConcurrency,
+               (JSON..=) "MaxSize" Prelude.<$> maxSize,
+               (JSON..=) "MinSize" Prelude.<$> minSize,
+               (JSON..=) "Tags" Prelude.<$> tags]))
+instance Property "AutoScalingConfigurationName" AutoScalingConfiguration where
+  type PropertyType "AutoScalingConfigurationName" AutoScalingConfiguration = Value Prelude.Text
+  set newValue AutoScalingConfiguration {..}
+    = AutoScalingConfiguration
+        {autoScalingConfigurationName = Prelude.pure newValue, ..}
+instance Property "MaxConcurrency" AutoScalingConfiguration where
+  type PropertyType "MaxConcurrency" AutoScalingConfiguration = Value Prelude.Integer
+  set newValue AutoScalingConfiguration {..}
+    = AutoScalingConfiguration
+        {maxConcurrency = Prelude.pure newValue, ..}
+instance Property "MaxSize" AutoScalingConfiguration where
+  type PropertyType "MaxSize" AutoScalingConfiguration = Value Prelude.Integer
+  set newValue AutoScalingConfiguration {..}
+    = AutoScalingConfiguration {maxSize = Prelude.pure newValue, ..}
+instance Property "MinSize" AutoScalingConfiguration where
+  type PropertyType "MinSize" AutoScalingConfiguration = Value Prelude.Integer
+  set newValue AutoScalingConfiguration {..}
+    = AutoScalingConfiguration {minSize = Prelude.pure newValue, ..}
+instance Property "Tags" AutoScalingConfiguration where
+  type PropertyType "Tags" AutoScalingConfiguration = [Tag]
+  set newValue AutoScalingConfiguration {..}
+    = AutoScalingConfiguration {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/ObservabilityConfiguration.hs b/gen/Stratosphere/AppRunner/ObservabilityConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/ObservabilityConfiguration.hs
@@ -0,0 +1,61 @@
+module Stratosphere.AppRunner.ObservabilityConfiguration (
+        module Exports, ObservabilityConfiguration(..),
+        mkObservabilityConfiguration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.ObservabilityConfiguration.TraceConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data ObservabilityConfiguration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-observabilityconfiguration.html>
+    ObservabilityConfiguration {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-observabilityconfiguration.html#cfn-apprunner-observabilityconfiguration-observabilityconfigurationname>
+                                observabilityConfigurationName :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-observabilityconfiguration.html#cfn-apprunner-observabilityconfiguration-tags>
+                                tags :: (Prelude.Maybe [Tag]),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-observabilityconfiguration.html#cfn-apprunner-observabilityconfiguration-traceconfiguration>
+                                traceConfiguration :: (Prelude.Maybe TraceConfigurationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkObservabilityConfiguration :: ObservabilityConfiguration
+mkObservabilityConfiguration
+  = ObservabilityConfiguration
+      {haddock_workaround_ = (),
+       observabilityConfigurationName = Prelude.Nothing,
+       tags = Prelude.Nothing, traceConfiguration = Prelude.Nothing}
+instance ToResourceProperties ObservabilityConfiguration where
+  toResourceProperties ObservabilityConfiguration {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::ObservabilityConfiguration",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ObservabilityConfigurationName"
+                              Prelude.<$> observabilityConfigurationName,
+                            (JSON..=) "Tags" Prelude.<$> tags,
+                            (JSON..=) "TraceConfiguration" Prelude.<$> traceConfiguration])}
+instance JSON.ToJSON ObservabilityConfiguration where
+  toJSON ObservabilityConfiguration {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ObservabilityConfigurationName"
+                 Prelude.<$> observabilityConfigurationName,
+               (JSON..=) "Tags" Prelude.<$> tags,
+               (JSON..=) "TraceConfiguration" Prelude.<$> traceConfiguration]))
+instance Property "ObservabilityConfigurationName" ObservabilityConfiguration where
+  type PropertyType "ObservabilityConfigurationName" ObservabilityConfiguration = Value Prelude.Text
+  set newValue ObservabilityConfiguration {..}
+    = ObservabilityConfiguration
+        {observabilityConfigurationName = Prelude.pure newValue, ..}
+instance Property "Tags" ObservabilityConfiguration where
+  type PropertyType "Tags" ObservabilityConfiguration = [Tag]
+  set newValue ObservabilityConfiguration {..}
+    = ObservabilityConfiguration {tags = Prelude.pure newValue, ..}
+instance Property "TraceConfiguration" ObservabilityConfiguration where
+  type PropertyType "TraceConfiguration" ObservabilityConfiguration = TraceConfigurationProperty
+  set newValue ObservabilityConfiguration {..}
+    = ObservabilityConfiguration
+        {traceConfiguration = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/ObservabilityConfiguration/TraceConfigurationProperty.hs b/gen/Stratosphere/AppRunner/ObservabilityConfiguration/TraceConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/ObservabilityConfiguration/TraceConfigurationProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.AppRunner.ObservabilityConfiguration.TraceConfigurationProperty (
+        TraceConfigurationProperty(..), mkTraceConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TraceConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-observabilityconfiguration-traceconfiguration.html>
+    TraceConfigurationProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-observabilityconfiguration-traceconfiguration.html#cfn-apprunner-observabilityconfiguration-traceconfiguration-vendor>
+                                vendor :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTraceConfigurationProperty ::
+  Value Prelude.Text -> TraceConfigurationProperty
+mkTraceConfigurationProperty vendor
+  = TraceConfigurationProperty
+      {haddock_workaround_ = (), vendor = vendor}
+instance ToResourceProperties TraceConfigurationProperty where
+  toResourceProperties TraceConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::ObservabilityConfiguration.TraceConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["Vendor" JSON..= vendor]}
+instance JSON.ToJSON TraceConfigurationProperty where
+  toJSON TraceConfigurationProperty {..}
+    = JSON.object ["Vendor" JSON..= vendor]
+instance Property "Vendor" TraceConfigurationProperty where
+  type PropertyType "Vendor" TraceConfigurationProperty = Value Prelude.Text
+  set newValue TraceConfigurationProperty {..}
+    = TraceConfigurationProperty {vendor = newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/ObservabilityConfiguration/TraceConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/ObservabilityConfiguration/TraceConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/ObservabilityConfiguration/TraceConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.ObservabilityConfiguration.TraceConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TraceConfigurationProperty :: Prelude.Type
+instance ToResourceProperties TraceConfigurationProperty
+instance Prelude.Eq TraceConfigurationProperty
+instance Prelude.Show TraceConfigurationProperty
+instance JSON.ToJSON TraceConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service.hs b/gen/Stratosphere/AppRunner/Service.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service.hs
@@ -0,0 +1,126 @@
+module Stratosphere.AppRunner.Service (
+        module Exports, Service(..), mkService
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.EncryptionConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.HealthCheckConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.InstanceConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.NetworkConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.ServiceObservabilityConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.SourceConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Service
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html>
+    Service {haddock_workaround_ :: (),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-autoscalingconfigurationarn>
+             autoScalingConfigurationArn :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-encryptionconfiguration>
+             encryptionConfiguration :: (Prelude.Maybe EncryptionConfigurationProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-healthcheckconfiguration>
+             healthCheckConfiguration :: (Prelude.Maybe HealthCheckConfigurationProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-instanceconfiguration>
+             instanceConfiguration :: (Prelude.Maybe InstanceConfigurationProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-networkconfiguration>
+             networkConfiguration :: (Prelude.Maybe NetworkConfigurationProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-observabilityconfiguration>
+             observabilityConfiguration :: (Prelude.Maybe ServiceObservabilityConfigurationProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-servicename>
+             serviceName :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-sourceconfiguration>
+             sourceConfiguration :: SourceConfigurationProperty,
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-service.html#cfn-apprunner-service-tags>
+             tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkService :: SourceConfigurationProperty -> Service
+mkService sourceConfiguration
+  = Service
+      {haddock_workaround_ = (),
+       sourceConfiguration = sourceConfiguration,
+       autoScalingConfigurationArn = Prelude.Nothing,
+       encryptionConfiguration = Prelude.Nothing,
+       healthCheckConfiguration = Prelude.Nothing,
+       instanceConfiguration = Prelude.Nothing,
+       networkConfiguration = Prelude.Nothing,
+       observabilityConfiguration = Prelude.Nothing,
+       serviceName = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Service where
+  toResourceProperties Service {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["SourceConfiguration" JSON..= sourceConfiguration]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutoScalingConfigurationArn"
+                                 Prelude.<$> autoScalingConfigurationArn,
+                               (JSON..=) "EncryptionConfiguration"
+                                 Prelude.<$> encryptionConfiguration,
+                               (JSON..=) "HealthCheckConfiguration"
+                                 Prelude.<$> healthCheckConfiguration,
+                               (JSON..=) "InstanceConfiguration"
+                                 Prelude.<$> instanceConfiguration,
+                               (JSON..=) "NetworkConfiguration" Prelude.<$> networkConfiguration,
+                               (JSON..=) "ObservabilityConfiguration"
+                                 Prelude.<$> observabilityConfiguration,
+                               (JSON..=) "ServiceName" Prelude.<$> serviceName,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Service where
+  toJSON Service {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["SourceConfiguration" JSON..= sourceConfiguration]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutoScalingConfigurationArn"
+                    Prelude.<$> autoScalingConfigurationArn,
+                  (JSON..=) "EncryptionConfiguration"
+                    Prelude.<$> encryptionConfiguration,
+                  (JSON..=) "HealthCheckConfiguration"
+                    Prelude.<$> healthCheckConfiguration,
+                  (JSON..=) "InstanceConfiguration"
+                    Prelude.<$> instanceConfiguration,
+                  (JSON..=) "NetworkConfiguration" Prelude.<$> networkConfiguration,
+                  (JSON..=) "ObservabilityConfiguration"
+                    Prelude.<$> observabilityConfiguration,
+                  (JSON..=) "ServiceName" Prelude.<$> serviceName,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AutoScalingConfigurationArn" Service where
+  type PropertyType "AutoScalingConfigurationArn" Service = Value Prelude.Text
+  set newValue Service {..}
+    = Service {autoScalingConfigurationArn = Prelude.pure newValue, ..}
+instance Property "EncryptionConfiguration" Service where
+  type PropertyType "EncryptionConfiguration" Service = EncryptionConfigurationProperty
+  set newValue Service {..}
+    = Service {encryptionConfiguration = Prelude.pure newValue, ..}
+instance Property "HealthCheckConfiguration" Service where
+  type PropertyType "HealthCheckConfiguration" Service = HealthCheckConfigurationProperty
+  set newValue Service {..}
+    = Service {healthCheckConfiguration = Prelude.pure newValue, ..}
+instance Property "InstanceConfiguration" Service where
+  type PropertyType "InstanceConfiguration" Service = InstanceConfigurationProperty
+  set newValue Service {..}
+    = Service {instanceConfiguration = Prelude.pure newValue, ..}
+instance Property "NetworkConfiguration" Service where
+  type PropertyType "NetworkConfiguration" Service = NetworkConfigurationProperty
+  set newValue Service {..}
+    = Service {networkConfiguration = Prelude.pure newValue, ..}
+instance Property "ObservabilityConfiguration" Service where
+  type PropertyType "ObservabilityConfiguration" Service = ServiceObservabilityConfigurationProperty
+  set newValue Service {..}
+    = Service {observabilityConfiguration = Prelude.pure newValue, ..}
+instance Property "ServiceName" Service where
+  type PropertyType "ServiceName" Service = Value Prelude.Text
+  set newValue Service {..}
+    = Service {serviceName = Prelude.pure newValue, ..}
+instance Property "SourceConfiguration" Service where
+  type PropertyType "SourceConfiguration" Service = SourceConfigurationProperty
+  set newValue Service {..}
+    = Service {sourceConfiguration = newValue, ..}
+instance Property "Tags" Service where
+  type PropertyType "Tags" Service = [Tag]
+  set newValue Service {..}
+    = Service {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/AuthenticationConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/AuthenticationConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/AuthenticationConfigurationProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.AppRunner.Service.AuthenticationConfigurationProperty (
+        AuthenticationConfigurationProperty(..),
+        mkAuthenticationConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AuthenticationConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-authenticationconfiguration.html>
+    AuthenticationConfigurationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-authenticationconfiguration.html#cfn-apprunner-service-authenticationconfiguration-accessrolearn>
+                                         accessRoleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-authenticationconfiguration.html#cfn-apprunner-service-authenticationconfiguration-connectionarn>
+                                         connectionArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAuthenticationConfigurationProperty ::
+  AuthenticationConfigurationProperty
+mkAuthenticationConfigurationProperty
+  = AuthenticationConfigurationProperty
+      {haddock_workaround_ = (), accessRoleArn = Prelude.Nothing,
+       connectionArn = Prelude.Nothing}
+instance ToResourceProperties AuthenticationConfigurationProperty where
+  toResourceProperties AuthenticationConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.AuthenticationConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AccessRoleArn" Prelude.<$> accessRoleArn,
+                            (JSON..=) "ConnectionArn" Prelude.<$> connectionArn])}
+instance JSON.ToJSON AuthenticationConfigurationProperty where
+  toJSON AuthenticationConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AccessRoleArn" Prelude.<$> accessRoleArn,
+               (JSON..=) "ConnectionArn" Prelude.<$> connectionArn]))
+instance Property "AccessRoleArn" AuthenticationConfigurationProperty where
+  type PropertyType "AccessRoleArn" AuthenticationConfigurationProperty = Value Prelude.Text
+  set newValue AuthenticationConfigurationProperty {..}
+    = AuthenticationConfigurationProperty
+        {accessRoleArn = Prelude.pure newValue, ..}
+instance Property "ConnectionArn" AuthenticationConfigurationProperty where
+  type PropertyType "ConnectionArn" AuthenticationConfigurationProperty = Value Prelude.Text
+  set newValue AuthenticationConfigurationProperty {..}
+    = AuthenticationConfigurationProperty
+        {connectionArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/AuthenticationConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/AuthenticationConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/AuthenticationConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.AuthenticationConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AuthenticationConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AuthenticationConfigurationProperty
+instance Prelude.Eq AuthenticationConfigurationProperty
+instance Prelude.Show AuthenticationConfigurationProperty
+instance JSON.ToJSON AuthenticationConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/CodeConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/CodeConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/CodeConfigurationProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.AppRunner.Service.CodeConfigurationProperty (
+        module Exports, CodeConfigurationProperty(..),
+        mkCodeConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.CodeConfigurationValuesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CodeConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfiguration.html>
+    CodeConfigurationProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfiguration.html#cfn-apprunner-service-codeconfiguration-codeconfigurationvalues>
+                               codeConfigurationValues :: (Prelude.Maybe CodeConfigurationValuesProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfiguration.html#cfn-apprunner-service-codeconfiguration-configurationsource>
+                               configurationSource :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCodeConfigurationProperty ::
+  Value Prelude.Text -> CodeConfigurationProperty
+mkCodeConfigurationProperty configurationSource
+  = CodeConfigurationProperty
+      {haddock_workaround_ = (),
+       configurationSource = configurationSource,
+       codeConfigurationValues = Prelude.Nothing}
+instance ToResourceProperties CodeConfigurationProperty where
+  toResourceProperties CodeConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.CodeConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ConfigurationSource" JSON..= configurationSource]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CodeConfigurationValues"
+                                 Prelude.<$> codeConfigurationValues]))}
+instance JSON.ToJSON CodeConfigurationProperty where
+  toJSON CodeConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ConfigurationSource" JSON..= configurationSource]
+              (Prelude.catMaybes
+                 [(JSON..=) "CodeConfigurationValues"
+                    Prelude.<$> codeConfigurationValues])))
+instance Property "CodeConfigurationValues" CodeConfigurationProperty where
+  type PropertyType "CodeConfigurationValues" CodeConfigurationProperty = CodeConfigurationValuesProperty
+  set newValue CodeConfigurationProperty {..}
+    = CodeConfigurationProperty
+        {codeConfigurationValues = Prelude.pure newValue, ..}
+instance Property "ConfigurationSource" CodeConfigurationProperty where
+  type PropertyType "ConfigurationSource" CodeConfigurationProperty = Value Prelude.Text
+  set newValue CodeConfigurationProperty {..}
+    = CodeConfigurationProperty {configurationSource = newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/CodeConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/CodeConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/CodeConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.CodeConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CodeConfigurationProperty :: Prelude.Type
+instance ToResourceProperties CodeConfigurationProperty
+instance Prelude.Eq CodeConfigurationProperty
+instance Prelude.Show CodeConfigurationProperty
+instance JSON.ToJSON CodeConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/CodeConfigurationValuesProperty.hs b/gen/Stratosphere/AppRunner/Service/CodeConfigurationValuesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/CodeConfigurationValuesProperty.hs
@@ -0,0 +1,94 @@
+module Stratosphere.AppRunner.Service.CodeConfigurationValuesProperty (
+        module Exports, CodeConfigurationValuesProperty(..),
+        mkCodeConfigurationValuesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.KeyValuePairProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CodeConfigurationValuesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfigurationvalues.html>
+    CodeConfigurationValuesProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfigurationvalues.html#cfn-apprunner-service-codeconfigurationvalues-buildcommand>
+                                     buildCommand :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfigurationvalues.html#cfn-apprunner-service-codeconfigurationvalues-port>
+                                     port :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfigurationvalues.html#cfn-apprunner-service-codeconfigurationvalues-runtime>
+                                     runtime :: (Value Prelude.Text),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfigurationvalues.html#cfn-apprunner-service-codeconfigurationvalues-runtimeenvironmentsecrets>
+                                     runtimeEnvironmentSecrets :: (Prelude.Maybe [KeyValuePairProperty]),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfigurationvalues.html#cfn-apprunner-service-codeconfigurationvalues-runtimeenvironmentvariables>
+                                     runtimeEnvironmentVariables :: (Prelude.Maybe [KeyValuePairProperty]),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-codeconfigurationvalues.html#cfn-apprunner-service-codeconfigurationvalues-startcommand>
+                                     startCommand :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCodeConfigurationValuesProperty ::
+  Value Prelude.Text -> CodeConfigurationValuesProperty
+mkCodeConfigurationValuesProperty runtime
+  = CodeConfigurationValuesProperty
+      {haddock_workaround_ = (), runtime = runtime,
+       buildCommand = Prelude.Nothing, port = Prelude.Nothing,
+       runtimeEnvironmentSecrets = Prelude.Nothing,
+       runtimeEnvironmentVariables = Prelude.Nothing,
+       startCommand = Prelude.Nothing}
+instance ToResourceProperties CodeConfigurationValuesProperty where
+  toResourceProperties CodeConfigurationValuesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.CodeConfigurationValues",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Runtime" JSON..= runtime]
+                           (Prelude.catMaybes
+                              [(JSON..=) "BuildCommand" Prelude.<$> buildCommand,
+                               (JSON..=) "Port" Prelude.<$> port,
+                               (JSON..=) "RuntimeEnvironmentSecrets"
+                                 Prelude.<$> runtimeEnvironmentSecrets,
+                               (JSON..=) "RuntimeEnvironmentVariables"
+                                 Prelude.<$> runtimeEnvironmentVariables,
+                               (JSON..=) "StartCommand" Prelude.<$> startCommand]))}
+instance JSON.ToJSON CodeConfigurationValuesProperty where
+  toJSON CodeConfigurationValuesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Runtime" JSON..= runtime]
+              (Prelude.catMaybes
+                 [(JSON..=) "BuildCommand" Prelude.<$> buildCommand,
+                  (JSON..=) "Port" Prelude.<$> port,
+                  (JSON..=) "RuntimeEnvironmentSecrets"
+                    Prelude.<$> runtimeEnvironmentSecrets,
+                  (JSON..=) "RuntimeEnvironmentVariables"
+                    Prelude.<$> runtimeEnvironmentVariables,
+                  (JSON..=) "StartCommand" Prelude.<$> startCommand])))
+instance Property "BuildCommand" CodeConfigurationValuesProperty where
+  type PropertyType "BuildCommand" CodeConfigurationValuesProperty = Value Prelude.Text
+  set newValue CodeConfigurationValuesProperty {..}
+    = CodeConfigurationValuesProperty
+        {buildCommand = Prelude.pure newValue, ..}
+instance Property "Port" CodeConfigurationValuesProperty where
+  type PropertyType "Port" CodeConfigurationValuesProperty = Value Prelude.Text
+  set newValue CodeConfigurationValuesProperty {..}
+    = CodeConfigurationValuesProperty
+        {port = Prelude.pure newValue, ..}
+instance Property "Runtime" CodeConfigurationValuesProperty where
+  type PropertyType "Runtime" CodeConfigurationValuesProperty = Value Prelude.Text
+  set newValue CodeConfigurationValuesProperty {..}
+    = CodeConfigurationValuesProperty {runtime = newValue, ..}
+instance Property "RuntimeEnvironmentSecrets" CodeConfigurationValuesProperty where
+  type PropertyType "RuntimeEnvironmentSecrets" CodeConfigurationValuesProperty = [KeyValuePairProperty]
+  set newValue CodeConfigurationValuesProperty {..}
+    = CodeConfigurationValuesProperty
+        {runtimeEnvironmentSecrets = Prelude.pure newValue, ..}
+instance Property "RuntimeEnvironmentVariables" CodeConfigurationValuesProperty where
+  type PropertyType "RuntimeEnvironmentVariables" CodeConfigurationValuesProperty = [KeyValuePairProperty]
+  set newValue CodeConfigurationValuesProperty {..}
+    = CodeConfigurationValuesProperty
+        {runtimeEnvironmentVariables = Prelude.pure newValue, ..}
+instance Property "StartCommand" CodeConfigurationValuesProperty where
+  type PropertyType "StartCommand" CodeConfigurationValuesProperty = Value Prelude.Text
+  set newValue CodeConfigurationValuesProperty {..}
+    = CodeConfigurationValuesProperty
+        {startCommand = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/CodeConfigurationValuesProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/CodeConfigurationValuesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/CodeConfigurationValuesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.CodeConfigurationValuesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CodeConfigurationValuesProperty :: Prelude.Type
+instance ToResourceProperties CodeConfigurationValuesProperty
+instance Prelude.Eq CodeConfigurationValuesProperty
+instance Prelude.Show CodeConfigurationValuesProperty
+instance JSON.ToJSON CodeConfigurationValuesProperty
diff --git a/gen/Stratosphere/AppRunner/Service/CodeRepositoryProperty.hs b/gen/Stratosphere/AppRunner/Service/CodeRepositoryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/CodeRepositoryProperty.hs
@@ -0,0 +1,72 @@
+module Stratosphere.AppRunner.Service.CodeRepositoryProperty (
+        module Exports, CodeRepositoryProperty(..),
+        mkCodeRepositoryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.CodeConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.SourceCodeVersionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CodeRepositoryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-coderepository.html>
+    CodeRepositoryProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-coderepository.html#cfn-apprunner-service-coderepository-codeconfiguration>
+                            codeConfiguration :: (Prelude.Maybe CodeConfigurationProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-coderepository.html#cfn-apprunner-service-coderepository-repositoryurl>
+                            repositoryUrl :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-coderepository.html#cfn-apprunner-service-coderepository-sourcecodeversion>
+                            sourceCodeVersion :: SourceCodeVersionProperty,
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-coderepository.html#cfn-apprunner-service-coderepository-sourcedirectory>
+                            sourceDirectory :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCodeRepositoryProperty ::
+  Value Prelude.Text
+  -> SourceCodeVersionProperty -> CodeRepositoryProperty
+mkCodeRepositoryProperty repositoryUrl sourceCodeVersion
+  = CodeRepositoryProperty
+      {haddock_workaround_ = (), repositoryUrl = repositoryUrl,
+       sourceCodeVersion = sourceCodeVersion,
+       codeConfiguration = Prelude.Nothing,
+       sourceDirectory = Prelude.Nothing}
+instance ToResourceProperties CodeRepositoryProperty where
+  toResourceProperties CodeRepositoryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.CodeRepository",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RepositoryUrl" JSON..= repositoryUrl,
+                            "SourceCodeVersion" JSON..= sourceCodeVersion]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CodeConfiguration" Prelude.<$> codeConfiguration,
+                               (JSON..=) "SourceDirectory" Prelude.<$> sourceDirectory]))}
+instance JSON.ToJSON CodeRepositoryProperty where
+  toJSON CodeRepositoryProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RepositoryUrl" JSON..= repositoryUrl,
+               "SourceCodeVersion" JSON..= sourceCodeVersion]
+              (Prelude.catMaybes
+                 [(JSON..=) "CodeConfiguration" Prelude.<$> codeConfiguration,
+                  (JSON..=) "SourceDirectory" Prelude.<$> sourceDirectory])))
+instance Property "CodeConfiguration" CodeRepositoryProperty where
+  type PropertyType "CodeConfiguration" CodeRepositoryProperty = CodeConfigurationProperty
+  set newValue CodeRepositoryProperty {..}
+    = CodeRepositoryProperty
+        {codeConfiguration = Prelude.pure newValue, ..}
+instance Property "RepositoryUrl" CodeRepositoryProperty where
+  type PropertyType "RepositoryUrl" CodeRepositoryProperty = Value Prelude.Text
+  set newValue CodeRepositoryProperty {..}
+    = CodeRepositoryProperty {repositoryUrl = newValue, ..}
+instance Property "SourceCodeVersion" CodeRepositoryProperty where
+  type PropertyType "SourceCodeVersion" CodeRepositoryProperty = SourceCodeVersionProperty
+  set newValue CodeRepositoryProperty {..}
+    = CodeRepositoryProperty {sourceCodeVersion = newValue, ..}
+instance Property "SourceDirectory" CodeRepositoryProperty where
+  type PropertyType "SourceDirectory" CodeRepositoryProperty = Value Prelude.Text
+  set newValue CodeRepositoryProperty {..}
+    = CodeRepositoryProperty
+        {sourceDirectory = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/CodeRepositoryProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/CodeRepositoryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/CodeRepositoryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.CodeRepositoryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CodeRepositoryProperty :: Prelude.Type
+instance ToResourceProperties CodeRepositoryProperty
+instance Prelude.Eq CodeRepositoryProperty
+instance Prelude.Show CodeRepositoryProperty
+instance JSON.ToJSON CodeRepositoryProperty
diff --git a/gen/Stratosphere/AppRunner/Service/EgressConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/EgressConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/EgressConfigurationProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.AppRunner.Service.EgressConfigurationProperty (
+        EgressConfigurationProperty(..), mkEgressConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EgressConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-egressconfiguration.html>
+    EgressConfigurationProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-egressconfiguration.html#cfn-apprunner-service-egressconfiguration-egresstype>
+                                 egressType :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-egressconfiguration.html#cfn-apprunner-service-egressconfiguration-vpcconnectorarn>
+                                 vpcConnectorArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEgressConfigurationProperty ::
+  Value Prelude.Text -> EgressConfigurationProperty
+mkEgressConfigurationProperty egressType
+  = EgressConfigurationProperty
+      {haddock_workaround_ = (), egressType = egressType,
+       vpcConnectorArn = Prelude.Nothing}
+instance ToResourceProperties EgressConfigurationProperty where
+  toResourceProperties EgressConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.EgressConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["EgressType" JSON..= egressType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "VpcConnectorArn" Prelude.<$> vpcConnectorArn]))}
+instance JSON.ToJSON EgressConfigurationProperty where
+  toJSON EgressConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["EgressType" JSON..= egressType]
+              (Prelude.catMaybes
+                 [(JSON..=) "VpcConnectorArn" Prelude.<$> vpcConnectorArn])))
+instance Property "EgressType" EgressConfigurationProperty where
+  type PropertyType "EgressType" EgressConfigurationProperty = Value Prelude.Text
+  set newValue EgressConfigurationProperty {..}
+    = EgressConfigurationProperty {egressType = newValue, ..}
+instance Property "VpcConnectorArn" EgressConfigurationProperty where
+  type PropertyType "VpcConnectorArn" EgressConfigurationProperty = Value Prelude.Text
+  set newValue EgressConfigurationProperty {..}
+    = EgressConfigurationProperty
+        {vpcConnectorArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/EgressConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/EgressConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/EgressConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.EgressConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EgressConfigurationProperty :: Prelude.Type
+instance ToResourceProperties EgressConfigurationProperty
+instance Prelude.Eq EgressConfigurationProperty
+instance Prelude.Show EgressConfigurationProperty
+instance JSON.ToJSON EgressConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/EncryptionConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/EncryptionConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/EncryptionConfigurationProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.AppRunner.Service.EncryptionConfigurationProperty (
+        EncryptionConfigurationProperty(..),
+        mkEncryptionConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EncryptionConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-encryptionconfiguration.html>
+    EncryptionConfigurationProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-encryptionconfiguration.html#cfn-apprunner-service-encryptionconfiguration-kmskey>
+                                     kmsKey :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEncryptionConfigurationProperty ::
+  Value Prelude.Text -> EncryptionConfigurationProperty
+mkEncryptionConfigurationProperty kmsKey
+  = EncryptionConfigurationProperty
+      {haddock_workaround_ = (), kmsKey = kmsKey}
+instance ToResourceProperties EncryptionConfigurationProperty where
+  toResourceProperties EncryptionConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.EncryptionConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["KmsKey" JSON..= kmsKey]}
+instance JSON.ToJSON EncryptionConfigurationProperty where
+  toJSON EncryptionConfigurationProperty {..}
+    = JSON.object ["KmsKey" JSON..= kmsKey]
+instance Property "KmsKey" EncryptionConfigurationProperty where
+  type PropertyType "KmsKey" EncryptionConfigurationProperty = Value Prelude.Text
+  set newValue EncryptionConfigurationProperty {..}
+    = EncryptionConfigurationProperty {kmsKey = newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/EncryptionConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/EncryptionConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/EncryptionConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.EncryptionConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EncryptionConfigurationProperty :: Prelude.Type
+instance ToResourceProperties EncryptionConfigurationProperty
+instance Prelude.Eq EncryptionConfigurationProperty
+instance Prelude.Show EncryptionConfigurationProperty
+instance JSON.ToJSON EncryptionConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/HealthCheckConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/HealthCheckConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/HealthCheckConfigurationProperty.hs
@@ -0,0 +1,87 @@
+module Stratosphere.AppRunner.Service.HealthCheckConfigurationProperty (
+        HealthCheckConfigurationProperty(..),
+        mkHealthCheckConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HealthCheckConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-healthcheckconfiguration.html>
+    HealthCheckConfigurationProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-healthcheckconfiguration.html#cfn-apprunner-service-healthcheckconfiguration-healthythreshold>
+                                      healthyThreshold :: (Prelude.Maybe (Value Prelude.Integer)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-healthcheckconfiguration.html#cfn-apprunner-service-healthcheckconfiguration-interval>
+                                      interval :: (Prelude.Maybe (Value Prelude.Integer)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-healthcheckconfiguration.html#cfn-apprunner-service-healthcheckconfiguration-path>
+                                      path :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-healthcheckconfiguration.html#cfn-apprunner-service-healthcheckconfiguration-protocol>
+                                      protocol :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-healthcheckconfiguration.html#cfn-apprunner-service-healthcheckconfiguration-timeout>
+                                      timeout :: (Prelude.Maybe (Value Prelude.Integer)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-healthcheckconfiguration.html#cfn-apprunner-service-healthcheckconfiguration-unhealthythreshold>
+                                      unhealthyThreshold :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHealthCheckConfigurationProperty ::
+  HealthCheckConfigurationProperty
+mkHealthCheckConfigurationProperty
+  = HealthCheckConfigurationProperty
+      {haddock_workaround_ = (), healthyThreshold = Prelude.Nothing,
+       interval = Prelude.Nothing, path = Prelude.Nothing,
+       protocol = Prelude.Nothing, timeout = Prelude.Nothing,
+       unhealthyThreshold = Prelude.Nothing}
+instance ToResourceProperties HealthCheckConfigurationProperty where
+  toResourceProperties HealthCheckConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.HealthCheckConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "HealthyThreshold" Prelude.<$> healthyThreshold,
+                            (JSON..=) "Interval" Prelude.<$> interval,
+                            (JSON..=) "Path" Prelude.<$> path,
+                            (JSON..=) "Protocol" Prelude.<$> protocol,
+                            (JSON..=) "Timeout" Prelude.<$> timeout,
+                            (JSON..=) "UnhealthyThreshold" Prelude.<$> unhealthyThreshold])}
+instance JSON.ToJSON HealthCheckConfigurationProperty where
+  toJSON HealthCheckConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "HealthyThreshold" Prelude.<$> healthyThreshold,
+               (JSON..=) "Interval" Prelude.<$> interval,
+               (JSON..=) "Path" Prelude.<$> path,
+               (JSON..=) "Protocol" Prelude.<$> protocol,
+               (JSON..=) "Timeout" Prelude.<$> timeout,
+               (JSON..=) "UnhealthyThreshold" Prelude.<$> unhealthyThreshold]))
+instance Property "HealthyThreshold" HealthCheckConfigurationProperty where
+  type PropertyType "HealthyThreshold" HealthCheckConfigurationProperty = Value Prelude.Integer
+  set newValue HealthCheckConfigurationProperty {..}
+    = HealthCheckConfigurationProperty
+        {healthyThreshold = Prelude.pure newValue, ..}
+instance Property "Interval" HealthCheckConfigurationProperty where
+  type PropertyType "Interval" HealthCheckConfigurationProperty = Value Prelude.Integer
+  set newValue HealthCheckConfigurationProperty {..}
+    = HealthCheckConfigurationProperty
+        {interval = Prelude.pure newValue, ..}
+instance Property "Path" HealthCheckConfigurationProperty where
+  type PropertyType "Path" HealthCheckConfigurationProperty = Value Prelude.Text
+  set newValue HealthCheckConfigurationProperty {..}
+    = HealthCheckConfigurationProperty
+        {path = Prelude.pure newValue, ..}
+instance Property "Protocol" HealthCheckConfigurationProperty where
+  type PropertyType "Protocol" HealthCheckConfigurationProperty = Value Prelude.Text
+  set newValue HealthCheckConfigurationProperty {..}
+    = HealthCheckConfigurationProperty
+        {protocol = Prelude.pure newValue, ..}
+instance Property "Timeout" HealthCheckConfigurationProperty where
+  type PropertyType "Timeout" HealthCheckConfigurationProperty = Value Prelude.Integer
+  set newValue HealthCheckConfigurationProperty {..}
+    = HealthCheckConfigurationProperty
+        {timeout = Prelude.pure newValue, ..}
+instance Property "UnhealthyThreshold" HealthCheckConfigurationProperty where
+  type PropertyType "UnhealthyThreshold" HealthCheckConfigurationProperty = Value Prelude.Integer
+  set newValue HealthCheckConfigurationProperty {..}
+    = HealthCheckConfigurationProperty
+        {unhealthyThreshold = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/HealthCheckConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/HealthCheckConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/HealthCheckConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.HealthCheckConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HealthCheckConfigurationProperty :: Prelude.Type
+instance ToResourceProperties HealthCheckConfigurationProperty
+instance Prelude.Eq HealthCheckConfigurationProperty
+instance Prelude.Show HealthCheckConfigurationProperty
+instance JSON.ToJSON HealthCheckConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/ImageConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/ImageConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/ImageConfigurationProperty.hs
@@ -0,0 +1,72 @@
+module Stratosphere.AppRunner.Service.ImageConfigurationProperty (
+        module Exports, ImageConfigurationProperty(..),
+        mkImageConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.KeyValuePairProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ImageConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imageconfiguration.html>
+    ImageConfigurationProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imageconfiguration.html#cfn-apprunner-service-imageconfiguration-port>
+                                port :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imageconfiguration.html#cfn-apprunner-service-imageconfiguration-runtimeenvironmentsecrets>
+                                runtimeEnvironmentSecrets :: (Prelude.Maybe [KeyValuePairProperty]),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imageconfiguration.html#cfn-apprunner-service-imageconfiguration-runtimeenvironmentvariables>
+                                runtimeEnvironmentVariables :: (Prelude.Maybe [KeyValuePairProperty]),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imageconfiguration.html#cfn-apprunner-service-imageconfiguration-startcommand>
+                                startCommand :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkImageConfigurationProperty :: ImageConfigurationProperty
+mkImageConfigurationProperty
+  = ImageConfigurationProperty
+      {haddock_workaround_ = (), port = Prelude.Nothing,
+       runtimeEnvironmentSecrets = Prelude.Nothing,
+       runtimeEnvironmentVariables = Prelude.Nothing,
+       startCommand = Prelude.Nothing}
+instance ToResourceProperties ImageConfigurationProperty where
+  toResourceProperties ImageConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.ImageConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Port" Prelude.<$> port,
+                            (JSON..=) "RuntimeEnvironmentSecrets"
+                              Prelude.<$> runtimeEnvironmentSecrets,
+                            (JSON..=) "RuntimeEnvironmentVariables"
+                              Prelude.<$> runtimeEnvironmentVariables,
+                            (JSON..=) "StartCommand" Prelude.<$> startCommand])}
+instance JSON.ToJSON ImageConfigurationProperty where
+  toJSON ImageConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Port" Prelude.<$> port,
+               (JSON..=) "RuntimeEnvironmentSecrets"
+                 Prelude.<$> runtimeEnvironmentSecrets,
+               (JSON..=) "RuntimeEnvironmentVariables"
+                 Prelude.<$> runtimeEnvironmentVariables,
+               (JSON..=) "StartCommand" Prelude.<$> startCommand]))
+instance Property "Port" ImageConfigurationProperty where
+  type PropertyType "Port" ImageConfigurationProperty = Value Prelude.Text
+  set newValue ImageConfigurationProperty {..}
+    = ImageConfigurationProperty {port = Prelude.pure newValue, ..}
+instance Property "RuntimeEnvironmentSecrets" ImageConfigurationProperty where
+  type PropertyType "RuntimeEnvironmentSecrets" ImageConfigurationProperty = [KeyValuePairProperty]
+  set newValue ImageConfigurationProperty {..}
+    = ImageConfigurationProperty
+        {runtimeEnvironmentSecrets = Prelude.pure newValue, ..}
+instance Property "RuntimeEnvironmentVariables" ImageConfigurationProperty where
+  type PropertyType "RuntimeEnvironmentVariables" ImageConfigurationProperty = [KeyValuePairProperty]
+  set newValue ImageConfigurationProperty {..}
+    = ImageConfigurationProperty
+        {runtimeEnvironmentVariables = Prelude.pure newValue, ..}
+instance Property "StartCommand" ImageConfigurationProperty where
+  type PropertyType "StartCommand" ImageConfigurationProperty = Value Prelude.Text
+  set newValue ImageConfigurationProperty {..}
+    = ImageConfigurationProperty
+        {startCommand = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/ImageConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/ImageConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/ImageConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.ImageConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ImageConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ImageConfigurationProperty
+instance Prelude.Eq ImageConfigurationProperty
+instance Prelude.Show ImageConfigurationProperty
+instance JSON.ToJSON ImageConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/ImageRepositoryProperty.hs b/gen/Stratosphere/AppRunner/Service/ImageRepositoryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/ImageRepositoryProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.AppRunner.Service.ImageRepositoryProperty (
+        module Exports, ImageRepositoryProperty(..),
+        mkImageRepositoryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.ImageConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ImageRepositoryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imagerepository.html>
+    ImageRepositoryProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imagerepository.html#cfn-apprunner-service-imagerepository-imageconfiguration>
+                             imageConfiguration :: (Prelude.Maybe ImageConfigurationProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imagerepository.html#cfn-apprunner-service-imagerepository-imageidentifier>
+                             imageIdentifier :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-imagerepository.html#cfn-apprunner-service-imagerepository-imagerepositorytype>
+                             imageRepositoryType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkImageRepositoryProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ImageRepositoryProperty
+mkImageRepositoryProperty imageIdentifier imageRepositoryType
+  = ImageRepositoryProperty
+      {haddock_workaround_ = (), imageIdentifier = imageIdentifier,
+       imageRepositoryType = imageRepositoryType,
+       imageConfiguration = Prelude.Nothing}
+instance ToResourceProperties ImageRepositoryProperty where
+  toResourceProperties ImageRepositoryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.ImageRepository",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ImageIdentifier" JSON..= imageIdentifier,
+                            "ImageRepositoryType" JSON..= imageRepositoryType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ImageConfiguration" Prelude.<$> imageConfiguration]))}
+instance JSON.ToJSON ImageRepositoryProperty where
+  toJSON ImageRepositoryProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ImageIdentifier" JSON..= imageIdentifier,
+               "ImageRepositoryType" JSON..= imageRepositoryType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ImageConfiguration" Prelude.<$> imageConfiguration])))
+instance Property "ImageConfiguration" ImageRepositoryProperty where
+  type PropertyType "ImageConfiguration" ImageRepositoryProperty = ImageConfigurationProperty
+  set newValue ImageRepositoryProperty {..}
+    = ImageRepositoryProperty
+        {imageConfiguration = Prelude.pure newValue, ..}
+instance Property "ImageIdentifier" ImageRepositoryProperty where
+  type PropertyType "ImageIdentifier" ImageRepositoryProperty = Value Prelude.Text
+  set newValue ImageRepositoryProperty {..}
+    = ImageRepositoryProperty {imageIdentifier = newValue, ..}
+instance Property "ImageRepositoryType" ImageRepositoryProperty where
+  type PropertyType "ImageRepositoryType" ImageRepositoryProperty = Value Prelude.Text
+  set newValue ImageRepositoryProperty {..}
+    = ImageRepositoryProperty {imageRepositoryType = newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/ImageRepositoryProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/ImageRepositoryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/ImageRepositoryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.ImageRepositoryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ImageRepositoryProperty :: Prelude.Type
+instance ToResourceProperties ImageRepositoryProperty
+instance Prelude.Eq ImageRepositoryProperty
+instance Prelude.Show ImageRepositoryProperty
+instance JSON.ToJSON ImageRepositoryProperty
diff --git a/gen/Stratosphere/AppRunner/Service/IngressConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/IngressConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/IngressConfigurationProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.AppRunner.Service.IngressConfigurationProperty (
+        IngressConfigurationProperty(..), mkIngressConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IngressConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-ingressconfiguration.html>
+    IngressConfigurationProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-ingressconfiguration.html#cfn-apprunner-service-ingressconfiguration-ispubliclyaccessible>
+                                  isPubliclyAccessible :: (Value Prelude.Bool)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIngressConfigurationProperty ::
+  Value Prelude.Bool -> IngressConfigurationProperty
+mkIngressConfigurationProperty isPubliclyAccessible
+  = IngressConfigurationProperty
+      {haddock_workaround_ = (),
+       isPubliclyAccessible = isPubliclyAccessible}
+instance ToResourceProperties IngressConfigurationProperty where
+  toResourceProperties IngressConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.IngressConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["IsPubliclyAccessible" JSON..= isPubliclyAccessible]}
+instance JSON.ToJSON IngressConfigurationProperty where
+  toJSON IngressConfigurationProperty {..}
+    = JSON.object ["IsPubliclyAccessible" JSON..= isPubliclyAccessible]
+instance Property "IsPubliclyAccessible" IngressConfigurationProperty where
+  type PropertyType "IsPubliclyAccessible" IngressConfigurationProperty = Value Prelude.Bool
+  set newValue IngressConfigurationProperty {..}
+    = IngressConfigurationProperty
+        {isPubliclyAccessible = newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/IngressConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/IngressConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/IngressConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.IngressConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IngressConfigurationProperty :: Prelude.Type
+instance ToResourceProperties IngressConfigurationProperty
+instance Prelude.Eq IngressConfigurationProperty
+instance Prelude.Show IngressConfigurationProperty
+instance JSON.ToJSON IngressConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/InstanceConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/InstanceConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/InstanceConfigurationProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.AppRunner.Service.InstanceConfigurationProperty (
+        InstanceConfigurationProperty(..), mkInstanceConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InstanceConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-instanceconfiguration.html>
+    InstanceConfigurationProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-instanceconfiguration.html#cfn-apprunner-service-instanceconfiguration-cpu>
+                                   cpu :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-instanceconfiguration.html#cfn-apprunner-service-instanceconfiguration-instancerolearn>
+                                   instanceRoleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-instanceconfiguration.html#cfn-apprunner-service-instanceconfiguration-memory>
+                                   memory :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInstanceConfigurationProperty :: InstanceConfigurationProperty
+mkInstanceConfigurationProperty
+  = InstanceConfigurationProperty
+      {haddock_workaround_ = (), cpu = Prelude.Nothing,
+       instanceRoleArn = Prelude.Nothing, memory = Prelude.Nothing}
+instance ToResourceProperties InstanceConfigurationProperty where
+  toResourceProperties InstanceConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.InstanceConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Cpu" Prelude.<$> cpu,
+                            (JSON..=) "InstanceRoleArn" Prelude.<$> instanceRoleArn,
+                            (JSON..=) "Memory" Prelude.<$> memory])}
+instance JSON.ToJSON InstanceConfigurationProperty where
+  toJSON InstanceConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Cpu" Prelude.<$> cpu,
+               (JSON..=) "InstanceRoleArn" Prelude.<$> instanceRoleArn,
+               (JSON..=) "Memory" Prelude.<$> memory]))
+instance Property "Cpu" InstanceConfigurationProperty where
+  type PropertyType "Cpu" InstanceConfigurationProperty = Value Prelude.Text
+  set newValue InstanceConfigurationProperty {..}
+    = InstanceConfigurationProperty {cpu = Prelude.pure newValue, ..}
+instance Property "InstanceRoleArn" InstanceConfigurationProperty where
+  type PropertyType "InstanceRoleArn" InstanceConfigurationProperty = Value Prelude.Text
+  set newValue InstanceConfigurationProperty {..}
+    = InstanceConfigurationProperty
+        {instanceRoleArn = Prelude.pure newValue, ..}
+instance Property "Memory" InstanceConfigurationProperty where
+  type PropertyType "Memory" InstanceConfigurationProperty = Value Prelude.Text
+  set newValue InstanceConfigurationProperty {..}
+    = InstanceConfigurationProperty
+        {memory = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/InstanceConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/InstanceConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/InstanceConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.InstanceConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InstanceConfigurationProperty :: Prelude.Type
+instance ToResourceProperties InstanceConfigurationProperty
+instance Prelude.Eq InstanceConfigurationProperty
+instance Prelude.Show InstanceConfigurationProperty
+instance JSON.ToJSON InstanceConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/KeyValuePairProperty.hs b/gen/Stratosphere/AppRunner/Service/KeyValuePairProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/KeyValuePairProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.AppRunner.Service.KeyValuePairProperty (
+        KeyValuePairProperty(..), mkKeyValuePairProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data KeyValuePairProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-keyvaluepair.html>
+    KeyValuePairProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-keyvaluepair.html#cfn-apprunner-service-keyvaluepair-name>
+                          name :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-keyvaluepair.html#cfn-apprunner-service-keyvaluepair-value>
+                          value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkKeyValuePairProperty :: KeyValuePairProperty
+mkKeyValuePairProperty
+  = KeyValuePairProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties KeyValuePairProperty where
+  toResourceProperties KeyValuePairProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.KeyValuePair",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON KeyValuePairProperty where
+  toJSON KeyValuePairProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Name" KeyValuePairProperty where
+  type PropertyType "Name" KeyValuePairProperty = Value Prelude.Text
+  set newValue KeyValuePairProperty {..}
+    = KeyValuePairProperty {name = Prelude.pure newValue, ..}
+instance Property "Value" KeyValuePairProperty where
+  type PropertyType "Value" KeyValuePairProperty = Value Prelude.Text
+  set newValue KeyValuePairProperty {..}
+    = KeyValuePairProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/KeyValuePairProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/KeyValuePairProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/KeyValuePairProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.KeyValuePairProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data KeyValuePairProperty :: Prelude.Type
+instance ToResourceProperties KeyValuePairProperty
+instance Prelude.Eq KeyValuePairProperty
+instance Prelude.Show KeyValuePairProperty
+instance JSON.ToJSON KeyValuePairProperty
diff --git a/gen/Stratosphere/AppRunner/Service/NetworkConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/NetworkConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/NetworkConfigurationProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.AppRunner.Service.NetworkConfigurationProperty (
+        module Exports, NetworkConfigurationProperty(..),
+        mkNetworkConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.EgressConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.IngressConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NetworkConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-networkconfiguration.html>
+    NetworkConfigurationProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-networkconfiguration.html#cfn-apprunner-service-networkconfiguration-egressconfiguration>
+                                  egressConfiguration :: (Prelude.Maybe EgressConfigurationProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-networkconfiguration.html#cfn-apprunner-service-networkconfiguration-ingressconfiguration>
+                                  ingressConfiguration :: (Prelude.Maybe IngressConfigurationProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-networkconfiguration.html#cfn-apprunner-service-networkconfiguration-ipaddresstype>
+                                  ipAddressType :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNetworkConfigurationProperty :: NetworkConfigurationProperty
+mkNetworkConfigurationProperty
+  = NetworkConfigurationProperty
+      {haddock_workaround_ = (), egressConfiguration = Prelude.Nothing,
+       ingressConfiguration = Prelude.Nothing,
+       ipAddressType = Prelude.Nothing}
+instance ToResourceProperties NetworkConfigurationProperty where
+  toResourceProperties NetworkConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.NetworkConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "EgressConfiguration" Prelude.<$> egressConfiguration,
+                            (JSON..=) "IngressConfiguration" Prelude.<$> ingressConfiguration,
+                            (JSON..=) "IpAddressType" Prelude.<$> ipAddressType])}
+instance JSON.ToJSON NetworkConfigurationProperty where
+  toJSON NetworkConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "EgressConfiguration" Prelude.<$> egressConfiguration,
+               (JSON..=) "IngressConfiguration" Prelude.<$> ingressConfiguration,
+               (JSON..=) "IpAddressType" Prelude.<$> ipAddressType]))
+instance Property "EgressConfiguration" NetworkConfigurationProperty where
+  type PropertyType "EgressConfiguration" NetworkConfigurationProperty = EgressConfigurationProperty
+  set newValue NetworkConfigurationProperty {..}
+    = NetworkConfigurationProperty
+        {egressConfiguration = Prelude.pure newValue, ..}
+instance Property "IngressConfiguration" NetworkConfigurationProperty where
+  type PropertyType "IngressConfiguration" NetworkConfigurationProperty = IngressConfigurationProperty
+  set newValue NetworkConfigurationProperty {..}
+    = NetworkConfigurationProperty
+        {ingressConfiguration = Prelude.pure newValue, ..}
+instance Property "IpAddressType" NetworkConfigurationProperty where
+  type PropertyType "IpAddressType" NetworkConfigurationProperty = Value Prelude.Text
+  set newValue NetworkConfigurationProperty {..}
+    = NetworkConfigurationProperty
+        {ipAddressType = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/NetworkConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/NetworkConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/NetworkConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.NetworkConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NetworkConfigurationProperty :: Prelude.Type
+instance ToResourceProperties NetworkConfigurationProperty
+instance Prelude.Eq NetworkConfigurationProperty
+instance Prelude.Show NetworkConfigurationProperty
+instance JSON.ToJSON NetworkConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/ServiceObservabilityConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/ServiceObservabilityConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/ServiceObservabilityConfigurationProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.AppRunner.Service.ServiceObservabilityConfigurationProperty (
+        ServiceObservabilityConfigurationProperty(..),
+        mkServiceObservabilityConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ServiceObservabilityConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-serviceobservabilityconfiguration.html>
+    ServiceObservabilityConfigurationProperty {haddock_workaround_ :: (),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-serviceobservabilityconfiguration.html#cfn-apprunner-service-serviceobservabilityconfiguration-observabilityconfigurationarn>
+                                               observabilityConfigurationArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-serviceobservabilityconfiguration.html#cfn-apprunner-service-serviceobservabilityconfiguration-observabilityenabled>
+                                               observabilityEnabled :: (Value Prelude.Bool)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkServiceObservabilityConfigurationProperty ::
+  Value Prelude.Bool -> ServiceObservabilityConfigurationProperty
+mkServiceObservabilityConfigurationProperty observabilityEnabled
+  = ServiceObservabilityConfigurationProperty
+      {haddock_workaround_ = (),
+       observabilityEnabled = observabilityEnabled,
+       observabilityConfigurationArn = Prelude.Nothing}
+instance ToResourceProperties ServiceObservabilityConfigurationProperty where
+  toResourceProperties ServiceObservabilityConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.ServiceObservabilityConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ObservabilityEnabled" JSON..= observabilityEnabled]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ObservabilityConfigurationArn"
+                                 Prelude.<$> observabilityConfigurationArn]))}
+instance JSON.ToJSON ServiceObservabilityConfigurationProperty where
+  toJSON ServiceObservabilityConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ObservabilityEnabled" JSON..= observabilityEnabled]
+              (Prelude.catMaybes
+                 [(JSON..=) "ObservabilityConfigurationArn"
+                    Prelude.<$> observabilityConfigurationArn])))
+instance Property "ObservabilityConfigurationArn" ServiceObservabilityConfigurationProperty where
+  type PropertyType "ObservabilityConfigurationArn" ServiceObservabilityConfigurationProperty = Value Prelude.Text
+  set newValue ServiceObservabilityConfigurationProperty {..}
+    = ServiceObservabilityConfigurationProperty
+        {observabilityConfigurationArn = Prelude.pure newValue, ..}
+instance Property "ObservabilityEnabled" ServiceObservabilityConfigurationProperty where
+  type PropertyType "ObservabilityEnabled" ServiceObservabilityConfigurationProperty = Value Prelude.Bool
+  set newValue ServiceObservabilityConfigurationProperty {..}
+    = ServiceObservabilityConfigurationProperty
+        {observabilityEnabled = newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/ServiceObservabilityConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/ServiceObservabilityConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/ServiceObservabilityConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.ServiceObservabilityConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ServiceObservabilityConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ServiceObservabilityConfigurationProperty
+instance Prelude.Eq ServiceObservabilityConfigurationProperty
+instance Prelude.Show ServiceObservabilityConfigurationProperty
+instance JSON.ToJSON ServiceObservabilityConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/Service/SourceCodeVersionProperty.hs b/gen/Stratosphere/AppRunner/Service/SourceCodeVersionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/SourceCodeVersionProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.AppRunner.Service.SourceCodeVersionProperty (
+        SourceCodeVersionProperty(..), mkSourceCodeVersionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceCodeVersionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-sourcecodeversion.html>
+    SourceCodeVersionProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-sourcecodeversion.html#cfn-apprunner-service-sourcecodeversion-type>
+                               type' :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-sourcecodeversion.html#cfn-apprunner-service-sourcecodeversion-value>
+                               value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceCodeVersionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> SourceCodeVersionProperty
+mkSourceCodeVersionProperty type' value
+  = SourceCodeVersionProperty
+      {haddock_workaround_ = (), type' = type', value = value}
+instance ToResourceProperties SourceCodeVersionProperty where
+  toResourceProperties SourceCodeVersionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.SourceCodeVersion",
+         supportsTags = Prelude.False,
+         properties = ["Type" JSON..= type', "Value" JSON..= value]}
+instance JSON.ToJSON SourceCodeVersionProperty where
+  toJSON SourceCodeVersionProperty {..}
+    = JSON.object ["Type" JSON..= type', "Value" JSON..= value]
+instance Property "Type" SourceCodeVersionProperty where
+  type PropertyType "Type" SourceCodeVersionProperty = Value Prelude.Text
+  set newValue SourceCodeVersionProperty {..}
+    = SourceCodeVersionProperty {type' = newValue, ..}
+instance Property "Value" SourceCodeVersionProperty where
+  type PropertyType "Value" SourceCodeVersionProperty = Value Prelude.Text
+  set newValue SourceCodeVersionProperty {..}
+    = SourceCodeVersionProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/SourceCodeVersionProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/SourceCodeVersionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/SourceCodeVersionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.SourceCodeVersionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceCodeVersionProperty :: Prelude.Type
+instance ToResourceProperties SourceCodeVersionProperty
+instance Prelude.Eq SourceCodeVersionProperty
+instance Prelude.Show SourceCodeVersionProperty
+instance JSON.ToJSON SourceCodeVersionProperty
diff --git a/gen/Stratosphere/AppRunner/Service/SourceConfigurationProperty.hs b/gen/Stratosphere/AppRunner/Service/SourceConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/SourceConfigurationProperty.hs
@@ -0,0 +1,76 @@
+module Stratosphere.AppRunner.Service.SourceConfigurationProperty (
+        module Exports, SourceConfigurationProperty(..),
+        mkSourceConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.AuthenticationConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.CodeRepositoryProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppRunner.Service.ImageRepositoryProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-sourceconfiguration.html>
+    SourceConfigurationProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-sourceconfiguration.html#cfn-apprunner-service-sourceconfiguration-authenticationconfiguration>
+                                 authenticationConfiguration :: (Prelude.Maybe AuthenticationConfigurationProperty),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-sourceconfiguration.html#cfn-apprunner-service-sourceconfiguration-autodeploymentsenabled>
+                                 autoDeploymentsEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-sourceconfiguration.html#cfn-apprunner-service-sourceconfiguration-coderepository>
+                                 codeRepository :: (Prelude.Maybe CodeRepositoryProperty),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-service-sourceconfiguration.html#cfn-apprunner-service-sourceconfiguration-imagerepository>
+                                 imageRepository :: (Prelude.Maybe ImageRepositoryProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceConfigurationProperty :: SourceConfigurationProperty
+mkSourceConfigurationProperty
+  = SourceConfigurationProperty
+      {haddock_workaround_ = (),
+       authenticationConfiguration = Prelude.Nothing,
+       autoDeploymentsEnabled = Prelude.Nothing,
+       codeRepository = Prelude.Nothing,
+       imageRepository = Prelude.Nothing}
+instance ToResourceProperties SourceConfigurationProperty where
+  toResourceProperties SourceConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::Service.SourceConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AuthenticationConfiguration"
+                              Prelude.<$> authenticationConfiguration,
+                            (JSON..=) "AutoDeploymentsEnabled"
+                              Prelude.<$> autoDeploymentsEnabled,
+                            (JSON..=) "CodeRepository" Prelude.<$> codeRepository,
+                            (JSON..=) "ImageRepository" Prelude.<$> imageRepository])}
+instance JSON.ToJSON SourceConfigurationProperty where
+  toJSON SourceConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AuthenticationConfiguration"
+                 Prelude.<$> authenticationConfiguration,
+               (JSON..=) "AutoDeploymentsEnabled"
+                 Prelude.<$> autoDeploymentsEnabled,
+               (JSON..=) "CodeRepository" Prelude.<$> codeRepository,
+               (JSON..=) "ImageRepository" Prelude.<$> imageRepository]))
+instance Property "AuthenticationConfiguration" SourceConfigurationProperty where
+  type PropertyType "AuthenticationConfiguration" SourceConfigurationProperty = AuthenticationConfigurationProperty
+  set newValue SourceConfigurationProperty {..}
+    = SourceConfigurationProperty
+        {authenticationConfiguration = Prelude.pure newValue, ..}
+instance Property "AutoDeploymentsEnabled" SourceConfigurationProperty where
+  type PropertyType "AutoDeploymentsEnabled" SourceConfigurationProperty = Value Prelude.Bool
+  set newValue SourceConfigurationProperty {..}
+    = SourceConfigurationProperty
+        {autoDeploymentsEnabled = Prelude.pure newValue, ..}
+instance Property "CodeRepository" SourceConfigurationProperty where
+  type PropertyType "CodeRepository" SourceConfigurationProperty = CodeRepositoryProperty
+  set newValue SourceConfigurationProperty {..}
+    = SourceConfigurationProperty
+        {codeRepository = Prelude.pure newValue, ..}
+instance Property "ImageRepository" SourceConfigurationProperty where
+  type PropertyType "ImageRepository" SourceConfigurationProperty = ImageRepositoryProperty
+  set newValue SourceConfigurationProperty {..}
+    = SourceConfigurationProperty
+        {imageRepository = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/Service/SourceConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/Service/SourceConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/Service/SourceConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.Service.SourceConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceConfigurationProperty :: Prelude.Type
+instance ToResourceProperties SourceConfigurationProperty
+instance Prelude.Eq SourceConfigurationProperty
+instance Prelude.Show SourceConfigurationProperty
+instance JSON.ToJSON SourceConfigurationProperty
diff --git a/gen/Stratosphere/AppRunner/VpcConnector.hs b/gen/Stratosphere/AppRunner/VpcConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/VpcConnector.hs
@@ -0,0 +1,65 @@
+module Stratosphere.AppRunner.VpcConnector (
+        VpcConnector(..), mkVpcConnector
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data VpcConnector
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcconnector.html>
+    VpcConnector {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcconnector.html#cfn-apprunner-vpcconnector-securitygroups>
+                  securityGroups :: (Prelude.Maybe (ValueList Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcconnector.html#cfn-apprunner-vpcconnector-subnets>
+                  subnets :: (ValueList Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcconnector.html#cfn-apprunner-vpcconnector-tags>
+                  tags :: (Prelude.Maybe [Tag]),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcconnector.html#cfn-apprunner-vpcconnector-vpcconnectorname>
+                  vpcConnectorName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkVpcConnector :: ValueList Prelude.Text -> VpcConnector
+mkVpcConnector subnets
+  = VpcConnector
+      {haddock_workaround_ = (), subnets = subnets,
+       securityGroups = Prelude.Nothing, tags = Prelude.Nothing,
+       vpcConnectorName = Prelude.Nothing}
+instance ToResourceProperties VpcConnector where
+  toResourceProperties VpcConnector {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::VpcConnector",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Subnets" JSON..= subnets]
+                           (Prelude.catMaybes
+                              [(JSON..=) "SecurityGroups" Prelude.<$> securityGroups,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "VpcConnectorName" Prelude.<$> vpcConnectorName]))}
+instance JSON.ToJSON VpcConnector where
+  toJSON VpcConnector {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Subnets" JSON..= subnets]
+              (Prelude.catMaybes
+                 [(JSON..=) "SecurityGroups" Prelude.<$> securityGroups,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "VpcConnectorName" Prelude.<$> vpcConnectorName])))
+instance Property "SecurityGroups" VpcConnector where
+  type PropertyType "SecurityGroups" VpcConnector = ValueList Prelude.Text
+  set newValue VpcConnector {..}
+    = VpcConnector {securityGroups = Prelude.pure newValue, ..}
+instance Property "Subnets" VpcConnector where
+  type PropertyType "Subnets" VpcConnector = ValueList Prelude.Text
+  set newValue VpcConnector {..}
+    = VpcConnector {subnets = newValue, ..}
+instance Property "Tags" VpcConnector where
+  type PropertyType "Tags" VpcConnector = [Tag]
+  set newValue VpcConnector {..}
+    = VpcConnector {tags = Prelude.pure newValue, ..}
+instance Property "VpcConnectorName" VpcConnector where
+  type PropertyType "VpcConnectorName" VpcConnector = Value Prelude.Text
+  set newValue VpcConnector {..}
+    = VpcConnector {vpcConnectorName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/VpcIngressConnection.hs b/gen/Stratosphere/AppRunner/VpcIngressConnection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/VpcIngressConnection.hs
@@ -0,0 +1,72 @@
+module Stratosphere.AppRunner.VpcIngressConnection (
+        module Exports, VpcIngressConnection(..), mkVpcIngressConnection
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppRunner.VpcIngressConnection.IngressVpcConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data VpcIngressConnection
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcingressconnection.html>
+    VpcIngressConnection {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcingressconnection.html#cfn-apprunner-vpcingressconnection-ingressvpcconfiguration>
+                          ingressVpcConfiguration :: IngressVpcConfigurationProperty,
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcingressconnection.html#cfn-apprunner-vpcingressconnection-servicearn>
+                          serviceArn :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcingressconnection.html#cfn-apprunner-vpcingressconnection-tags>
+                          tags :: (Prelude.Maybe [Tag]),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apprunner-vpcingressconnection.html#cfn-apprunner-vpcingressconnection-vpcingressconnectionname>
+                          vpcIngressConnectionName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkVpcIngressConnection ::
+  IngressVpcConfigurationProperty
+  -> Value Prelude.Text -> VpcIngressConnection
+mkVpcIngressConnection ingressVpcConfiguration serviceArn
+  = VpcIngressConnection
+      {haddock_workaround_ = (),
+       ingressVpcConfiguration = ingressVpcConfiguration,
+       serviceArn = serviceArn, tags = Prelude.Nothing,
+       vpcIngressConnectionName = Prelude.Nothing}
+instance ToResourceProperties VpcIngressConnection where
+  toResourceProperties VpcIngressConnection {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::VpcIngressConnection",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["IngressVpcConfiguration" JSON..= ingressVpcConfiguration,
+                            "ServiceArn" JSON..= serviceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "VpcIngressConnectionName"
+                                 Prelude.<$> vpcIngressConnectionName]))}
+instance JSON.ToJSON VpcIngressConnection where
+  toJSON VpcIngressConnection {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["IngressVpcConfiguration" JSON..= ingressVpcConfiguration,
+               "ServiceArn" JSON..= serviceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "VpcIngressConnectionName"
+                    Prelude.<$> vpcIngressConnectionName])))
+instance Property "IngressVpcConfiguration" VpcIngressConnection where
+  type PropertyType "IngressVpcConfiguration" VpcIngressConnection = IngressVpcConfigurationProperty
+  set newValue VpcIngressConnection {..}
+    = VpcIngressConnection {ingressVpcConfiguration = newValue, ..}
+instance Property "ServiceArn" VpcIngressConnection where
+  type PropertyType "ServiceArn" VpcIngressConnection = Value Prelude.Text
+  set newValue VpcIngressConnection {..}
+    = VpcIngressConnection {serviceArn = newValue, ..}
+instance Property "Tags" VpcIngressConnection where
+  type PropertyType "Tags" VpcIngressConnection = [Tag]
+  set newValue VpcIngressConnection {..}
+    = VpcIngressConnection {tags = Prelude.pure newValue, ..}
+instance Property "VpcIngressConnectionName" VpcIngressConnection where
+  type PropertyType "VpcIngressConnectionName" VpcIngressConnection = Value Prelude.Text
+  set newValue VpcIngressConnection {..}
+    = VpcIngressConnection
+        {vpcIngressConnectionName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/VpcIngressConnection/IngressVpcConfigurationProperty.hs b/gen/Stratosphere/AppRunner/VpcIngressConnection/IngressVpcConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/VpcIngressConnection/IngressVpcConfigurationProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.AppRunner.VpcIngressConnection.IngressVpcConfigurationProperty (
+        IngressVpcConfigurationProperty(..),
+        mkIngressVpcConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IngressVpcConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-vpcingressconnection-ingressvpcconfiguration.html>
+    IngressVpcConfigurationProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-vpcingressconnection-ingressvpcconfiguration.html#cfn-apprunner-vpcingressconnection-ingressvpcconfiguration-vpcendpointid>
+                                     vpcEndpointId :: (Value Prelude.Text),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apprunner-vpcingressconnection-ingressvpcconfiguration.html#cfn-apprunner-vpcingressconnection-ingressvpcconfiguration-vpcid>
+                                     vpcId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIngressVpcConfigurationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> IngressVpcConfigurationProperty
+mkIngressVpcConfigurationProperty vpcEndpointId vpcId
+  = IngressVpcConfigurationProperty
+      {haddock_workaround_ = (), vpcEndpointId = vpcEndpointId,
+       vpcId = vpcId}
+instance ToResourceProperties IngressVpcConfigurationProperty where
+  toResourceProperties IngressVpcConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppRunner::VpcIngressConnection.IngressVpcConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["VpcEndpointId" JSON..= vpcEndpointId,
+                       "VpcId" JSON..= vpcId]}
+instance JSON.ToJSON IngressVpcConfigurationProperty where
+  toJSON IngressVpcConfigurationProperty {..}
+    = JSON.object
+        ["VpcEndpointId" JSON..= vpcEndpointId, "VpcId" JSON..= vpcId]
+instance Property "VpcEndpointId" IngressVpcConfigurationProperty where
+  type PropertyType "VpcEndpointId" IngressVpcConfigurationProperty = Value Prelude.Text
+  set newValue IngressVpcConfigurationProperty {..}
+    = IngressVpcConfigurationProperty {vpcEndpointId = newValue, ..}
+instance Property "VpcId" IngressVpcConfigurationProperty where
+  type PropertyType "VpcId" IngressVpcConfigurationProperty = Value Prelude.Text
+  set newValue IngressVpcConfigurationProperty {..}
+    = IngressVpcConfigurationProperty {vpcId = newValue, ..}
diff --git a/gen/Stratosphere/AppRunner/VpcIngressConnection/IngressVpcConfigurationProperty.hs-boot b/gen/Stratosphere/AppRunner/VpcIngressConnection/IngressVpcConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppRunner/VpcIngressConnection/IngressVpcConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppRunner.VpcIngressConnection.IngressVpcConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IngressVpcConfigurationProperty :: Prelude.Type
+instance ToResourceProperties IngressVpcConfigurationProperty
+instance Prelude.Eq IngressVpcConfigurationProperty
+instance Prelude.Show IngressVpcConfigurationProperty
+instance JSON.ToJSON IngressVpcConfigurationProperty
diff --git a/stratosphere-apprunner.cabal b/stratosphere-apprunner.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-apprunner.cabal
@@ -0,0 +1,95 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-apprunner
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS AppRunner.
+description:    Integration into stratosphere to generate resources and properties for AWS AppRunner
+category:       AWS, Cloud, AppRunner
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.AppRunner.AutoScalingConfiguration
+      Stratosphere.AppRunner.ObservabilityConfiguration
+      Stratosphere.AppRunner.ObservabilityConfiguration.TraceConfigurationProperty
+      Stratosphere.AppRunner.Service
+      Stratosphere.AppRunner.Service.AuthenticationConfigurationProperty
+      Stratosphere.AppRunner.Service.CodeConfigurationProperty
+      Stratosphere.AppRunner.Service.CodeConfigurationValuesProperty
+      Stratosphere.AppRunner.Service.CodeRepositoryProperty
+      Stratosphere.AppRunner.Service.EgressConfigurationProperty
+      Stratosphere.AppRunner.Service.EncryptionConfigurationProperty
+      Stratosphere.AppRunner.Service.HealthCheckConfigurationProperty
+      Stratosphere.AppRunner.Service.ImageConfigurationProperty
+      Stratosphere.AppRunner.Service.ImageRepositoryProperty
+      Stratosphere.AppRunner.Service.IngressConfigurationProperty
+      Stratosphere.AppRunner.Service.InstanceConfigurationProperty
+      Stratosphere.AppRunner.Service.KeyValuePairProperty
+      Stratosphere.AppRunner.Service.NetworkConfigurationProperty
+      Stratosphere.AppRunner.Service.ServiceObservabilityConfigurationProperty
+      Stratosphere.AppRunner.Service.SourceCodeVersionProperty
+      Stratosphere.AppRunner.Service.SourceConfigurationProperty
+      Stratosphere.AppRunner.VpcConnector
+      Stratosphere.AppRunner.VpcIngressConnection
+      Stratosphere.AppRunner.VpcIngressConnection.IngressVpcConfigurationProperty
+  other-modules:
+      Paths_stratosphere_apprunner
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
