BranchArgs

data class BranchArgs(val appId: Output<String>? = null, val backendEnvironmentArn: Output<String>? = null, val basicAuthCredentials: Output<String>? = null, val branchName: Output<String>? = null, val description: Output<String>? = null, val displayName: Output<String>? = null, val enableAutoBuild: Output<Boolean>? = null, val enableBasicAuth: Output<Boolean>? = null, val enableNotification: Output<Boolean>? = null, val enablePerformanceMode: Output<Boolean>? = null, val enablePullRequestPreview: Output<Boolean>? = null, val environmentVariables: Output<Map<String, String>>? = null, val framework: Output<String>? = null, val pullRequestEnvironmentName: Output<String>? = null, val stage: Output<String>? = null, val tags: Output<Map<String, String>>? = null, val ttl: Output<String>? = null) : ConvertibleToJava<BranchArgs>

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.Branch;
import com.pulumi.aws.amplify.BranchArgs;
import java.util.List;
import java.util.ArrayList;
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");
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 enable_notification 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.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.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.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.List;
import java.util.ArrayList;
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");
var master = new Branch("master", BranchArgs.builder()
.appId(example.id())
.branchName("master")
.enableNotification(true)
.build());
var amplifyAppMasterEventRule = new EventRule("amplifyAppMasterEventRule", EventRuleArgs.builder()
.description(master.branchName().applyValue(branchName -> String.format("AWS Amplify build notifications for : App: %s Branch: %s", aws_amplify_app.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());
var amplifyAppMasterTopic = new Topic("amplifyAppMasterTopic");
var amplifyAppMasterEventTarget = new EventTarget("amplifyAppMasterEventTarget", EventTargetArgs.builder()
.rule(amplifyAppMasterEventRule.name())
.arn(amplifyAppMasterTopic.arn())
.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())
.build());
final var amplifyAppMasterPolicyDocument = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
.statements(GetPolicyDocumentStatementArgs.builder()
.sid(master.arn().applyValue(arn -> String.format("Allow_Publish_Events %s", arn)))
.effect("Allow")
.actions("SNS:Publish")
.principals(GetPolicyDocumentStatementPrincipalArgs.builder()
.type("Service")
.identifiers("events.amazonaws.com")
.build())
.resources(amplifyAppMasterTopic.arn())
.build())
.build());
var amplifyAppMasterTopicPolicy = new TopicPolicy("amplifyAppMasterTopicPolicy", TopicPolicyArgs.builder()
.arn(amplifyAppMasterTopic.arn())
.policy(amplifyAppMasterPolicyDocument.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult).applyValue(amplifyAppMasterPolicyDocument -> amplifyAppMasterPolicyDocument.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json())))
.build());
var this_ = new TopicSubscription("this", TopicSubscriptionArgs.builder()
.topic(amplifyAppMasterTopic.arn())
.protocol("email")
.endpoint("user@acme.com")
.build());
}
}

Import

Amplify branch can be imported using app_id and branch_name, e.g.,

$ pulumi import aws:amplify/branch:Branch master d2ypk4k47z8u6/master

Constructors

Link copied to clipboard
constructor(appId: Output<String>? = null, backendEnvironmentArn: Output<String>? = null, basicAuthCredentials: Output<String>? = null, branchName: Output<String>? = null, description: Output<String>? = null, displayName: Output<String>? = null, enableAutoBuild: Output<Boolean>? = null, enableBasicAuth: Output<Boolean>? = null, enableNotification: Output<Boolean>? = null, enablePerformanceMode: Output<Boolean>? = null, enablePullRequestPreview: Output<Boolean>? = null, environmentVariables: Output<Map<String, String>>? = null, framework: Output<String>? = null, pullRequestEnvironmentName: Output<String>? = null, stage: Output<String>? = null, tags: Output<Map<String, String>>? = null, ttl: Output<String>? = null)

Properties

Link copied to clipboard
val appId: Output<String>? = null

Unique ID for an Amplify app.

Link copied to clipboard
val backendEnvironmentArn: Output<String>? = null

ARN for a backend environment that is part of an Amplify app.

Link copied to clipboard
val basicAuthCredentials: Output<String>? = null

Basic authorization credentials for the branch.

Link copied to clipboard
val branchName: Output<String>? = null

Name for the branch.

Link copied to clipboard
val description: Output<String>? = null

Description for the branch.

Link copied to clipboard
val displayName: Output<String>? = null

Display name for a branch. This is used as the default domain prefix.

Link copied to clipboard
val enableAutoBuild: Output<Boolean>? = null

Enables auto building for the branch.

Link copied to clipboard
val enableBasicAuth: Output<Boolean>? = null

Enables basic authorization for the branch.

Link copied to clipboard
val enableNotification: Output<Boolean>? = null

Enables notifications for the branch.

Link copied to clipboard
val enablePerformanceMode: Output<Boolean>? = null

Enables performance mode for the branch.

Link copied to clipboard
val enablePullRequestPreview: Output<Boolean>? = null

Enables pull request previews for this branch.

Link copied to clipboard
val environmentVariables: Output<Map<String, String>>? = null

Environment variables for the branch.

Link copied to clipboard
val framework: Output<String>? = null

Framework for the branch.

Link copied to clipboard
val pullRequestEnvironmentName: Output<String>? = null

Amplify environment name for the pull request.

Link copied to clipboard
val stage: Output<String>? = null

Describes the current stage for the branch. Valid values: PRODUCTION, BETA, DEVELOPMENT, EXPERIMENTAL, PULL_REQUEST.

Link copied to clipboard
val tags: Output<Map<String, String>>? = null

Key-value mapping of resource tags. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.

Link copied to clipboard
val ttl: Output<String>? = null

Content Time To Live (TTL) for the website in seconds.

Functions

Link copied to clipboard
open override fun toJava(): BranchArgs