Class App


  • public class App
    extends com.pulumi.resources.CustomResource
    Provides an Amplify App resource, a fullstack serverless app hosted on the [AWS Amplify Console](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html). > **Note:** When you create/update an Amplify App from the provider, you may end up with the error "BadRequestException: You should at least provide one valid token" because of authentication issues. See the section "Repository with Tokens" below. ## Example Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.amplify.App;
     import com.pulumi.aws.amplify.AppArgs;
     import com.pulumi.aws.amplify.inputs.AppCustomRuleArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new App("example", AppArgs.builder()
                 .customRules(AppCustomRuleArgs.builder()
                     .source("/<*>")
                     .status("404")
                     .target("/index.html")
                     .build())
                 .name("example")
                 .repository("https://github.com/example/app")
                 .buildSpec("""
     version: 0.1
     frontend:
       phases:
         preBuild:
           commands:
             - yarn install
         build:
           commands:
             - yarn run build
       artifacts:
         baseDirectory: build
         files:
           - '**/*'
       cache:
         paths:
           - node_modules/**/*
                 """)
                 .environmentVariables(Map.of("ENV", "test"))
                 .build());
     
         }
     }
     
     
    ### Repository with Tokens If you create a new Amplify App with the `repository` argument, you also need to set `oauthToken` or `accessToken` for authentication. For GitHub, get a [personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line) and set `accessToken` as follows:
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.amplify.App;
     import com.pulumi.aws.amplify.AppArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new App("example", AppArgs.builder()
                 .name("example")
                 .repository("https://github.com/example/app")
                 .accessToken("...")
                 .build());
     
         }
     }
     
     
    You can omit `accessToken` if you import an existing Amplify App created by the Amplify Console (using OAuth for authentication). ### Auto Branch Creation
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.amplify.App;
     import com.pulumi.aws.amplify.AppArgs;
     import com.pulumi.aws.amplify.inputs.AppAutoBranchCreationConfigArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new App("example", AppArgs.builder()
                 .autoBranchCreationConfig(AppAutoBranchCreationConfigArgs.builder()
                     .enableAutoBuild(true)
                     .build())
                 .name("example")
                 .enableAutoBranchCreation(true)
                 .autoBranchCreationPatterns(            
                     "*",
                     "*/**")
                 .build());
     
         }
     }
     
     
    ### Basic Authorization
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.amplify.App;
     import com.pulumi.aws.amplify.AppArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.Base64encodeArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new App("example", AppArgs.builder()
                 .name("example")
                 .enableBasicAuth(true)
                 .basicAuthCredentials(StdFunctions.base64encode(Base64encodeArgs.builder()
                     .input("username1:password1")
                     .build()).result())
                 .build());
     
         }
     }
     
     
    ### Rewrites and Redirects
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.amplify.App;
     import com.pulumi.aws.amplify.AppArgs;
     import com.pulumi.aws.amplify.inputs.AppCustomRuleArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new App("example", AppArgs.builder()
                 .customRules(            
                     AppCustomRuleArgs.builder()
                         .source("/api/<*>")
                         .status("200")
                         .target("https://api.example.com/api/<*>")
                         .build(),
                     AppCustomRuleArgs.builder()
                         .source("</^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>")
                         .status("200")
                         .target("/index.html")
                         .build())
                 .name("example")
                 .build());
     
         }
     }
     
     
    ### Custom Image
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.amplify.App;
     import com.pulumi.aws.amplify.AppArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new App("example", AppArgs.builder()
                 .name("example")
                 .environmentVariables(Map.of("_CUSTOM_IMAGE", "node:16"))
                 .build());
     
         }
     }
     
     
    ### Custom Headers
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.amplify.App;
     import com.pulumi.aws.amplify.AppArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new App("example", AppArgs.builder()
                 .name("example")
                 .customHeaders("""
     customHeaders:
       - pattern: '**'
         headers:
           - key: 'Strict-Transport-Security'
             value: 'max-age=31536000; includeSubDomains'
           - key: 'X-Frame-Options'
             value: 'SAMEORIGIN'
           - key: 'X-XSS-Protection'
             value: '1; mode=block'
           - key: 'X-Content-Type-Options'
             value: 'nosniff'
           - key: 'Content-Security-Policy'
             value: \"default-src 'self'\"
                 """)
                 .build());
     
         }
     }
     
     
    ### Job Config
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.amplify.App;
     import com.pulumi.aws.amplify.AppArgs;
     import com.pulumi.aws.amplify.inputs.AppJobConfigArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new App("example", AppArgs.builder()
                 .jobConfig(AppJobConfigArgs.builder()
                     .buildComputeType("STANDARD_8GB")
                     .build())
                 .name("example")
                 .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import Amplify App using Amplify App ID (appId). For example: ```sh $ pulumi import aws:amplify/app:App example d2ypk4k47z8u6 ``` App ID can be obtained from App ARN (e.g., `arn:aws:amplify:us-east-1:12345678:apps/d2ypk4k47z8u6`).
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Constructor Summary

      Constructors 
      Constructor Description
      App​(java.lang.String name)  
      App​(java.lang.String name, AppArgs args)  
      App​(java.lang.String name, AppArgs args, com.pulumi.resources.CustomResourceOptions options)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> accessToken()  
      com.pulumi.core.Output<java.lang.String> arn()  
      com.pulumi.core.Output<AppAutoBranchCreationConfig> autoBranchCreationConfig()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> autoBranchCreationPatterns()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> basicAuthCredentials()  
      com.pulumi.core.Output<java.lang.String> buildSpec()  
      com.pulumi.core.Output<AppCacheConfig> cacheConfig()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> computeRoleArn()  
      com.pulumi.core.Output<java.lang.String> customHeaders()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<AppCustomRule>>> customRules()  
      com.pulumi.core.Output<java.lang.String> defaultDomain()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableAutoBranchCreation()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableBasicAuth()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableBranchAutoBuild()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableBranchAutoDeletion()  
      com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> environmentVariables()  
      static App get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, AppState state, com.pulumi.resources.CustomResourceOptions options)
      Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> iamServiceRoleArn()  
      com.pulumi.core.Output<AppJobConfig> jobConfig()  
      com.pulumi.core.Output<java.lang.String> name()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> oauthToken()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> platform()  
      com.pulumi.core.Output<java.util.List<AppProductionBranch>> productionBranches()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> repository()  
      com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()  
      com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • App

        public App​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • App

        public App​(java.lang.String name,
                   @Nullable
                   AppArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • App

        public App​(java.lang.String name,
                   @Nullable
                   AppArgs args,
                   @Nullable
                   com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • accessToken

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> accessToken()
        Returns:
        Personal access token for a third-party source control system for an Amplify app. This token must have write access to the relevant repo to create a webhook and a read-only deploy key for the Amplify project. The token is not stored, so after applying this attribute can be removed and the setup token deleted.
      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN of the Amplify app.
      • autoBranchCreationConfig

        public com.pulumi.core.Output<AppAutoBranchCreationConfig> autoBranchCreationConfig()
        Returns:
        Automated branch creation configuration for an Amplify app. See `autoBranchCreationConfig` Block for details.
      • autoBranchCreationPatterns

        public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> autoBranchCreationPatterns()
        Returns:
        Automated branch creation glob patterns for an Amplify app.
      • basicAuthCredentials

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> basicAuthCredentials()
        Returns:
        Credentials for basic authorization for an Amplify app.
      • buildSpec

        public com.pulumi.core.Output<java.lang.String> buildSpec()
        Returns:
        The [build specification](https://docs.aws.amazon.com/amplify/latest/userguide/build-settings.html) (build spec) for an Amplify app.
      • cacheConfig

        public com.pulumi.core.Output<AppCacheConfig> cacheConfig()
        Returns:
        Cache configuration for the Amplify app. See `cacheConfig` Block for details.
      • computeRoleArn

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> computeRoleArn()
        Returns:
        AWS Identity and Access Management (IAM) SSR compute role for an Amplify app.
      • customHeaders

        public com.pulumi.core.Output<java.lang.String> customHeaders()
        Returns:
        The [custom HTTP headers](https://docs.aws.amazon.com/amplify/latest/userguide/custom-headers.html) for an Amplify app.
      • customRules

        public com.pulumi.core.Output<java.util.Optional<java.util.List<AppCustomRule>>> customRules()
        Returns:
        Custom rewrite and redirect rules for an Amplify app. See `customRule` Block for details.
      • defaultDomain

        public com.pulumi.core.Output<java.lang.String> defaultDomain()
        Returns:
        Default domain for the Amplify app.
      • description

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()
        Returns:
        Description for an Amplify app.
      • enableAutoBranchCreation

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableAutoBranchCreation()
        Returns:
        Enables automated branch creation for an Amplify app.
      • enableBasicAuth

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableBasicAuth()
        Returns:
        Enables basic authorization for an Amplify app. This will apply to all branches that are part of this app.
      • enableBranchAutoBuild

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableBranchAutoBuild()
        Returns:
        Enables auto-building of branches for the Amplify App.
      • enableBranchAutoDeletion

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableBranchAutoDeletion()
        Returns:
        Automatically disconnects a branch in the Amplify Console when you delete a branch from your Git repository.
      • environmentVariables

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> environmentVariables()
        Returns:
        Environment variables map for an Amplify app.
      • iamServiceRoleArn

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> iamServiceRoleArn()
        Returns:
        AWS Identity and Access Management (IAM) service role for an Amplify app.
      • jobConfig

        public com.pulumi.core.Output<AppJobConfig> jobConfig()
        Returns:
        Used to configure the [Amplify Application build instance compute type](https://docs.aws.amazon.com/amplify/latest/APIReference/API_JobConfig.html#amplify-Type-JobConfig-buildComputeType). See `jobConfig` Block for details.
      • name

        public com.pulumi.core.Output<java.lang.String> name()
        Returns:
        Name for an Amplify app.
      • oauthToken

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> oauthToken()
        Returns:
        OAuth token for a third-party source control system for an Amplify app. The OAuth token is used to create a webhook and a read-only deploy key. The OAuth token is not stored.
      • platform

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> platform()
        Returns:
        Platform or framework for an Amplify app. Valid values: `WEB`, `WEB_COMPUTE`. Default value: `WEB`.
      • productionBranches

        public com.pulumi.core.Output<java.util.List<AppProductionBranch>> productionBranches()
        Returns:
        Describes the information about a production branch for an Amplify app. A `productionBranch` block is documented below.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • repository

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> repository()
        Returns:
        Repository for an Amplify app.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Key-value mapping of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • get

        public static App get​(java.lang.String name,
                              com.pulumi.core.Output<java.lang.String> id,
                              @Nullable
                              AppState state,
                              @Nullable
                              com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.