The aws:codedeploy/application:Application resource, part of the Pulumi AWS provider, defines a CodeDeploy application container that groups deployment configurations and deployment groups for a specific compute platform. This guide focuses on one capability: compute platform selection.
CodeDeploy applications are organizational containers, not deployment executors. They group deployment groups and configurations but don’t deploy code themselves. The examples are intentionally small. Combine them with DeploymentGroup and DeploymentConfig resources for complete deployment pipelines.
Create an application for EC2 or on-premises deployments
Most CodeDeploy usage starts with the Server platform for traditional EC2 or on-premises deployments.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.codedeploy.Application("example", {
computePlatform: "Server",
name: "example",
});
import pulumi
import pulumi_aws as aws
example = aws.codedeploy.Application("example",
compute_platform="Server",
name="example")
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/codedeploy"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := codedeploy.NewApplication(ctx, "example", &codedeploy.ApplicationArgs{
ComputePlatform: pulumi.String("Server"),
Name: pulumi.String("example"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.CodeDeploy.Application("example", new()
{
ComputePlatform = "Server",
Name = "example",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.codedeploy.Application;
import com.pulumi.aws.codedeploy.ApplicationArgs;
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 Application("example", ApplicationArgs.builder()
.computePlatform("Server")
.name("example")
.build());
}
}
resources:
example:
type: aws:codedeploy:Application
properties:
computePlatform: Server
name: example
The computePlatform property determines what type of infrastructure this application can deploy to. Server is the default and supports EC2 instances and on-premises servers. The name property provides a unique identifier within your AWS account.
Create an application for Lambda function deployments
Serverless teams use the Lambda platform to manage traffic shifting between function versions.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.codedeploy.Application("example", {
computePlatform: "Lambda",
name: "example",
});
import pulumi
import pulumi_aws as aws
example = aws.codedeploy.Application("example",
compute_platform="Lambda",
name="example")
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/codedeploy"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := codedeploy.NewApplication(ctx, "example", &codedeploy.ApplicationArgs{
ComputePlatform: pulumi.String("Lambda"),
Name: pulumi.String("example"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.CodeDeploy.Application("example", new()
{
ComputePlatform = "Lambda",
Name = "example",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.codedeploy.Application;
import com.pulumi.aws.codedeploy.ApplicationArgs;
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 Application("example", ApplicationArgs.builder()
.computePlatform("Lambda")
.name("example")
.build());
}
}
resources:
example:
type: aws:codedeploy:Application
properties:
computePlatform: Lambda
name: example
Setting computePlatform to Lambda restricts this application to Lambda function deployments. CodeDeploy handles gradual traffic shifting and automatic rollback for Lambda aliases.
Create an application for ECS service deployments
Container deployments use the ECS platform for blue/green deployments behind load balancers.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.codedeploy.Application("example", {
computePlatform: "ECS",
name: "example",
});
import pulumi
import pulumi_aws as aws
example = aws.codedeploy.Application("example",
compute_platform="ECS",
name="example")
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/codedeploy"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := codedeploy.NewApplication(ctx, "example", &codedeploy.ApplicationArgs{
ComputePlatform: pulumi.String("ECS"),
Name: pulumi.String("example"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.CodeDeploy.Application("example", new()
{
ComputePlatform = "ECS",
Name = "example",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.codedeploy.Application;
import com.pulumi.aws.codedeploy.ApplicationArgs;
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 Application("example", ApplicationArgs.builder()
.computePlatform("ECS")
.name("example")
.build());
}
}
resources:
example:
type: aws:codedeploy:Application
properties:
computePlatform: ECS
name: example
The ECS platform enables blue/green deployments where CodeDeploy creates new task sets and shifts traffic between them. This requires ECS services configured with load balancers.
Beyond these examples
These snippets focus on compute platform selection (Server, Lambda, ECS). They’re intentionally minimal rather than complete deployment pipelines.
The examples don’t rely on pre-existing infrastructure. They focus on creating the application container that will later hold deployment groups and configurations.
To keep things focused, application-level properties are omitted, including:
- Resource tagging (tags property)
- Explicit region configuration (region property)
- GitHub integration (linkedToGithub, githubAccountName)
These omissions are intentional: the goal is to illustrate how each compute platform is configured, not provide drop-in deployment modules. See the CodeDeploy Application resource reference for all available configuration options.
Let's create AWS CodeDeploy Applications
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Platform Configuration
ECS, Lambda, and Server. The default platform is Server if not specified.computePlatform property is immutable. Changing it after creation will force the application to be recreated.Resource Management
pulumi import aws:codedeploy/application:Application example my-applicationUsing a different cloud?
Explore integration guides for other cloud providers: