Package com.pulumi.aws.amplify
Class Branch
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.amplify.Branch
-
public class Branch extends com.pulumi.resources.CustomResourceProvides an Amplify Branch resource. ## Example Usage
### Basic Authenticationpackage 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()); } }
### 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.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()); } }
## Import Using `pulumi import`, import Amplify branch using `appId` and `branchName`. For example: ```sh $ pulumi import aws:amplify/branch:Branch master d2ypk4k47z8u6/master ```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());}}
-
-
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 Branchget(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()
-
-
-
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.
-
-