Class Branch


  • public class Branch
    extends com.pulumi.resources.CustomResource
    Provides an Amplify Branch resource. ## 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.Branch;
     import com.pulumi.aws.amplify.BranchArgs;
     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("app")
                 .build());
     
             var master = new Branch("master", BranchArgs.builder()
                 .appId(example.id())
                 .branchName("master")
                 .framework("React")
                 .stage("PRODUCTION")
                 .environmentVariables(Map.of("REACT_APP_API_SERVER", "https://api.example.com"))
                 .build());
     
         }
     }
     
     
    ### Basic Authentication
     
     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.Branch;
     import com.pulumi.aws.amplify.BranchArgs;
     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("app")
                 .build());
     
             var master = new Branch("master", BranchArgs.builder()
                 .appId(example.id())
                 .branchName("master")
                 .enableBasicAuth(true)
                 .basicAuthCredentials(StdFunctions.base64encode(Base64encodeArgs.builder()
                     .input("username:password")
                     .build()).result())
                 .build());
     
         }
     }
     
     
    ### Notifications Amplify Console uses EventBridge (formerly known as CloudWatch Events) and SNS for email notifications. To implement the same functionality, you need to set `enableNotification` in a `aws.amplify.Branch` resource, as well as creating an EventBridge Rule, an SNS topic, and SNS subscriptions.
     
     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.Branch;
     import com.pulumi.aws.amplify.BranchArgs;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventRuleArgs;
     import com.pulumi.aws.sns.Topic;
     import com.pulumi.aws.sns.TopicArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.sns.TopicPolicy;
     import com.pulumi.aws.sns.TopicPolicyArgs;
     import com.pulumi.aws.sns.TopicSubscription;
     import com.pulumi.aws.sns.TopicSubscriptionArgs;
     import static com.pulumi.codegen.internal.Serialization.*;
     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("app")
                 .build());
     
             var master = new Branch("master", BranchArgs.builder()
                 .appId(example.id())
                 .branchName("master")
                 .enableNotification(true)
                 .build());
     
             // EventBridge Rule for Amplify notifications
             var amplifyAppMasterEventRule = new EventRule("amplifyAppMasterEventRule", EventRuleArgs.builder()
                 .name(master.branchName().applyValue(_branchName -> String.format("amplify-%s-%s-branch-notification", app.id(),_branchName)))
                 .description(master.branchName().applyValue(_branchName -> String.format("AWS Amplify build notifications for :  App: %s Branch: %s", app.id(),_branchName)))
                 .eventPattern(Output.tuple(example.id(), master.branchName()).applyValue(values -> {
                     var id = values.t1;
                     var branchName = values.t2;
                     return serializeJson(
                         jsonObject(
                             jsonProperty("detail", jsonObject(
                                 jsonProperty("appId", jsonArray(id)),
                                 jsonProperty("branchName", jsonArray(branchName)),
                                 jsonProperty("jobStatus", jsonArray(
                                     "SUCCEED", 
                                     "FAILED", 
                                     "STARTED"
                                 ))
                             )),
                             jsonProperty("detail-type", jsonArray("Amplify Deployment Status Change")),
                             jsonProperty("source", jsonArray("aws.amplify"))
                         ));
                 }))
                 .build());
     
             // SNS Topic for Amplify notifications
             var amplifyAppMasterTopic = new Topic("amplifyAppMasterTopic", TopicArgs.builder()
                 .name(master.branchName().applyValue(_branchName -> String.format("amplify-%s_%s", app.id(),_branchName)))
                 .build());
     
             var amplifyAppMasterEventTarget = new EventTarget("amplifyAppMasterEventTarget", EventTargetArgs.builder()
                 .inputTransformer(EventTargetInputTransformerArgs.builder()
                     .inputPaths(Map.ofEntries(
                         Map.entry("jobId", "$.detail.jobId"),
                         Map.entry("appId", "$.detail.appId"),
                         Map.entry("region", "$.region"),
                         Map.entry("branch", "$.detail.branchName"),
                         Map.entry("status", "$.detail.jobStatus")
                     ))
                     .inputTemplate("\"Build notification from the AWS Amplify Console for app: https://<branch>.<appId>.amplifyapp.com/. Your build status is <status>. Go to https://console.aws.amazon.com/amplify/home?region=<region>#<appId>/<branch>/<jobId> to view details on your build. \"")
                     .build())
                 .rule(amplifyAppMasterEventRule.name())
                 .targetId(master.branchName())
                 .arn(amplifyAppMasterTopic.arn())
                 .build());
     
             final var amplifyAppMaster = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("events.amazonaws.com")
                         .build())
                     .sid(master.arn().applyValue(_arn -> String.format("Allow_Publish_Events %s", _arn)))
                     .effect("Allow")
                     .actions("SNS:Publish")
                     .resources(amplifyAppMasterTopic.arn())
                     .build())
                 .build());
     
             var amplifyAppMasterTopicPolicy = new TopicPolicy("amplifyAppMasterTopicPolicy", TopicPolicyArgs.builder()
                 .arn(amplifyAppMasterTopic.arn())
                 .policy(amplifyAppMaster.applyValue(_amplifyAppMaster -> _amplifyAppMaster.json()))
                 .build());
     
             var this_ = new TopicSubscription("this", TopicSubscriptionArgs.builder()
                 .topic(amplifyAppMasterTopic.arn())
                 .protocol("email")
                 .endpoint("user@acme.com")
                 .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import Amplify branch using `appId` and `branchName`. For example: ```sh $ pulumi import aws:amplify/branch:Branch master d2ypk4k47z8u6/master ```
    • 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
      Branch​(java.lang.String name)  
      Branch​(java.lang.String name, BranchArgs args)  
      Branch​(java.lang.String name, BranchArgs 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.lang.String> appId()  
      com.pulumi.core.Output<java.lang.String> arn()  
      com.pulumi.core.Output<java.util.List<java.lang.String>> associatedResources()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> backendEnvironmentArn()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> basicAuthCredentials()  
      com.pulumi.core.Output<java.lang.String> branchName()  
      com.pulumi.core.Output<java.util.List<java.lang.String>> customDomains()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()  
      com.pulumi.core.Output<java.lang.String> destinationBranch()  
      com.pulumi.core.Output<java.lang.String> displayName()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableAutoBuild()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableBasicAuth()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableNotification()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enablePerformanceMode()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enablePullRequestPreview()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableSkewProtection()  
      com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> environmentVariables()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> framework()  
      static Branch get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, BranchState 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>> pullRequestEnvironmentName()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.lang.String> sourceBranch()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> stage()  
      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()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> ttl()  
      • 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

      • Branch

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

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

        public Branch​(java.lang.String name,
                      BranchArgs 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

      • appId

        public com.pulumi.core.Output<java.lang.String> appId()
        Returns:
        Unique ID for an Amplify app.
      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN for the branch.
      • associatedResources

        public com.pulumi.core.Output<java.util.List<java.lang.String>> associatedResources()
        Returns:
        A list of custom resources that are linked to this branch.
      • backendEnvironmentArn

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> backendEnvironmentArn()
        Returns:
        ARN for a backend environment that is part of an Amplify app.
      • basicAuthCredentials

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> basicAuthCredentials()
        Returns:
        Basic authorization credentials for the branch.
      • branchName

        public com.pulumi.core.Output<java.lang.String> branchName()
        Returns:
        Name for the branch.
      • customDomains

        public com.pulumi.core.Output<java.util.List<java.lang.String>> customDomains()
        Returns:
        Custom domains for the branch.
      • description

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()
        Returns:
        Description for the branch.
      • destinationBranch

        public com.pulumi.core.Output<java.lang.String> destinationBranch()
        Returns:
        Destination branch if the branch is a pull request branch.
      • displayName

        public com.pulumi.core.Output<java.lang.String> displayName()
        Returns:
        Display name for a branch. This is used as the default domain prefix.
      • enableAutoBuild

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableAutoBuild()
        Returns:
        Enables auto building for the branch.
      • enableBasicAuth

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableBasicAuth()
        Returns:
        Enables basic authorization for the branch.
      • enableNotification

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableNotification()
        Returns:
        Enables notifications for the branch.
      • enablePerformanceMode

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enablePerformanceMode()
        Returns:
        Enables performance mode for the branch.
      • enablePullRequestPreview

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enablePullRequestPreview()
        Returns:
        Enables pull request previews for this branch.
      • enableSkewProtection

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enableSkewProtection()
        Returns:
        Enables skew protection for the branch.
      • environmentVariables

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> environmentVariables()
        Returns:
        Environment variables for the branch.
      • framework

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> framework()
        Returns:
        Framework for the branch.
      • pullRequestEnvironmentName

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> pullRequestEnvironmentName()
        Returns:
        Amplify environment name for the pull request.
      • 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.
      • sourceBranch

        public com.pulumi.core.Output<java.lang.String> sourceBranch()
        Returns:
        Source branch if the branch is a pull request branch.
      • stage

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> stage()
        Returns:
        Describes the current stage for the branch. Valid values: `PRODUCTION`, `BETA`, `DEVELOPMENT`, `EXPERIMENTAL`, `PULL_REQUEST`.
      • 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.
      • ttl

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> ttl()
        Returns:
        Content Time To Live (TTL) for the website in seconds.
      • get

        public static Branch get​(java.lang.String name,
                                 com.pulumi.core.Output<java.lang.String> id,
                                 @Nullable
                                 BranchState 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.