The aws:connect/queue:Queue resource, part of the Pulumi AWS provider, defines an Amazon Connect queue that holds contacts until agents become available to handle them. This guide focuses on three capabilities: queue creation with operating hours, quick connect configuration for transfers, and outbound caller ID settings.
Queues belong to a Connect instance and reference hours of operation, quick connects, and contact flows that must exist separately. The examples are intentionally small. Combine them with your own Connect instance, operating schedules, and routing configuration.
Create a queue with operating hours
Contact centers route incoming calls to queues that hold contacts until agents become available.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const test = new aws.connect.Queue("test", {
instanceId: "aaaaaaaa-bbbb-cccc-dddd-111111111111",
name: "Example Name",
description: "Example Description",
hoursOfOperationId: "12345678-1234-1234-1234-123456789012",
tags: {
Name: "Example Queue",
},
});
import pulumi
import pulumi_aws as aws
test = aws.connect.Queue("test",
instance_id="aaaaaaaa-bbbb-cccc-dddd-111111111111",
name="Example Name",
description="Example Description",
hours_of_operation_id="12345678-1234-1234-1234-123456789012",
tags={
"Name": "Example Queue",
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/connect"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := connect.NewQueue(ctx, "test", &connect.QueueArgs{
InstanceId: pulumi.String("aaaaaaaa-bbbb-cccc-dddd-111111111111"),
Name: pulumi.String("Example Name"),
Description: pulumi.String("Example Description"),
HoursOfOperationId: pulumi.String("12345678-1234-1234-1234-123456789012"),
Tags: pulumi.StringMap{
"Name": pulumi.String("Example Queue"),
},
})
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 test = new Aws.Connect.Queue("test", new()
{
InstanceId = "aaaaaaaa-bbbb-cccc-dddd-111111111111",
Name = "Example Name",
Description = "Example Description",
HoursOfOperationId = "12345678-1234-1234-1234-123456789012",
Tags =
{
{ "Name", "Example Queue" },
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.connect.Queue;
import com.pulumi.aws.connect.QueueArgs;
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 test = new Queue("test", QueueArgs.builder()
.instanceId("aaaaaaaa-bbbb-cccc-dddd-111111111111")
.name("Example Name")
.description("Example Description")
.hoursOfOperationId("12345678-1234-1234-1234-123456789012")
.tags(Map.of("Name", "Example Queue"))
.build());
}
}
resources:
test:
type: aws:connect:Queue
properties:
instanceId: aaaaaaaa-bbbb-cccc-dddd-111111111111
name: Example Name
description: Example Description
hoursOfOperationId: 12345678-1234-1234-1234-123456789012
tags:
Name: Example Queue
The instanceId identifies your Connect instance. The hoursOfOperationId determines when agents can handle contacts from this queue. Without additional configuration, the queue uses default routing behavior and doesn’t support transfers or outbound calling.
Enable quick connects for agent transfers
Agents often need to transfer contacts to other agents, queues, or external numbers during calls.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const test = new aws.connect.Queue("test", {
instanceId: "aaaaaaaa-bbbb-cccc-dddd-111111111111",
name: "Example Name",
description: "Example Description",
hoursOfOperationId: "12345678-1234-1234-1234-123456789012",
quickConnectIds: ["12345678-abcd-1234-abcd-123456789012"],
tags: {
Name: "Example Queue with Quick Connect IDs",
},
});
import pulumi
import pulumi_aws as aws
test = aws.connect.Queue("test",
instance_id="aaaaaaaa-bbbb-cccc-dddd-111111111111",
name="Example Name",
description="Example Description",
hours_of_operation_id="12345678-1234-1234-1234-123456789012",
quick_connect_ids=["12345678-abcd-1234-abcd-123456789012"],
tags={
"Name": "Example Queue with Quick Connect IDs",
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/connect"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := connect.NewQueue(ctx, "test", &connect.QueueArgs{
InstanceId: pulumi.String("aaaaaaaa-bbbb-cccc-dddd-111111111111"),
Name: pulumi.String("Example Name"),
Description: pulumi.String("Example Description"),
HoursOfOperationId: pulumi.String("12345678-1234-1234-1234-123456789012"),
QuickConnectIds: pulumi.StringArray{
pulumi.String("12345678-abcd-1234-abcd-123456789012"),
},
Tags: pulumi.StringMap{
"Name": pulumi.String("Example Queue with Quick Connect IDs"),
},
})
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 test = new Aws.Connect.Queue("test", new()
{
InstanceId = "aaaaaaaa-bbbb-cccc-dddd-111111111111",
Name = "Example Name",
Description = "Example Description",
HoursOfOperationId = "12345678-1234-1234-1234-123456789012",
QuickConnectIds = new[]
{
"12345678-abcd-1234-abcd-123456789012",
},
Tags =
{
{ "Name", "Example Queue with Quick Connect IDs" },
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.connect.Queue;
import com.pulumi.aws.connect.QueueArgs;
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 test = new Queue("test", QueueArgs.builder()
.instanceId("aaaaaaaa-bbbb-cccc-dddd-111111111111")
.name("Example Name")
.description("Example Description")
.hoursOfOperationId("12345678-1234-1234-1234-123456789012")
.quickConnectIds("12345678-abcd-1234-abcd-123456789012")
.tags(Map.of("Name", "Example Queue with Quick Connect IDs"))
.build());
}
}
resources:
test:
type: aws:connect:Queue
properties:
instanceId: aaaaaaaa-bbbb-cccc-dddd-111111111111
name: Example Name
description: Example Description
hoursOfOperationId: 12345678-1234-1234-1234-123456789012
quickConnectIds:
- 12345678-abcd-1234-abcd-123456789012
tags:
Name: Example Queue with Quick Connect IDs
The quickConnectIds property lists predefined transfer destinations that agents can access. Each quick connect ID references a configured destination (another queue, an agent, or an external phone number). Agents see these options in their contact control panel during active calls.
Configure outbound caller ID for callbacks
When agents make outbound calls or callbacks from a queue, the system needs to know which caller ID to display.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const test = new aws.connect.Queue("test", {
instanceId: "aaaaaaaa-bbbb-cccc-dddd-111111111111",
name: "Example Name",
description: "Example Description",
hoursOfOperationId: "12345678-1234-1234-1234-123456789012",
outboundCallerConfig: {
outboundCallerIdName: "example",
outboundCallerIdNumberId: "12345678-abcd-1234-abcd-123456789012",
outboundFlowId: "87654321-defg-1234-defg-987654321234",
},
tags: {
Name: "Example Queue with Outbound Caller Config",
},
});
import pulumi
import pulumi_aws as aws
test = aws.connect.Queue("test",
instance_id="aaaaaaaa-bbbb-cccc-dddd-111111111111",
name="Example Name",
description="Example Description",
hours_of_operation_id="12345678-1234-1234-1234-123456789012",
outbound_caller_config={
"outbound_caller_id_name": "example",
"outbound_caller_id_number_id": "12345678-abcd-1234-abcd-123456789012",
"outbound_flow_id": "87654321-defg-1234-defg-987654321234",
},
tags={
"Name": "Example Queue with Outbound Caller Config",
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/connect"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := connect.NewQueue(ctx, "test", &connect.QueueArgs{
InstanceId: pulumi.String("aaaaaaaa-bbbb-cccc-dddd-111111111111"),
Name: pulumi.String("Example Name"),
Description: pulumi.String("Example Description"),
HoursOfOperationId: pulumi.String("12345678-1234-1234-1234-123456789012"),
OutboundCallerConfig: &connect.QueueOutboundCallerConfigArgs{
OutboundCallerIdName: pulumi.String("example"),
OutboundCallerIdNumberId: pulumi.String("12345678-abcd-1234-abcd-123456789012"),
OutboundFlowId: pulumi.String("87654321-defg-1234-defg-987654321234"),
},
Tags: pulumi.StringMap{
"Name": pulumi.String("Example Queue with Outbound Caller Config"),
},
})
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 test = new Aws.Connect.Queue("test", new()
{
InstanceId = "aaaaaaaa-bbbb-cccc-dddd-111111111111",
Name = "Example Name",
Description = "Example Description",
HoursOfOperationId = "12345678-1234-1234-1234-123456789012",
OutboundCallerConfig = new Aws.Connect.Inputs.QueueOutboundCallerConfigArgs
{
OutboundCallerIdName = "example",
OutboundCallerIdNumberId = "12345678-abcd-1234-abcd-123456789012",
OutboundFlowId = "87654321-defg-1234-defg-987654321234",
},
Tags =
{
{ "Name", "Example Queue with Outbound Caller Config" },
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.connect.Queue;
import com.pulumi.aws.connect.QueueArgs;
import com.pulumi.aws.connect.inputs.QueueOutboundCallerConfigArgs;
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 test = new Queue("test", QueueArgs.builder()
.instanceId("aaaaaaaa-bbbb-cccc-dddd-111111111111")
.name("Example Name")
.description("Example Description")
.hoursOfOperationId("12345678-1234-1234-1234-123456789012")
.outboundCallerConfig(QueueOutboundCallerConfigArgs.builder()
.outboundCallerIdName("example")
.outboundCallerIdNumberId("12345678-abcd-1234-abcd-123456789012")
.outboundFlowId("87654321-defg-1234-defg-987654321234")
.build())
.tags(Map.of("Name", "Example Queue with Outbound Caller Config"))
.build());
}
}
resources:
test:
type: aws:connect:Queue
properties:
instanceId: aaaaaaaa-bbbb-cccc-dddd-111111111111
name: Example Name
description: Example Description
hoursOfOperationId: 12345678-1234-1234-1234-123456789012
outboundCallerConfig:
outboundCallerIdName: example
outboundCallerIdNumberId: 12345678-abcd-1234-abcd-123456789012
outboundFlowId: 87654321-defg-1234-defg-987654321234
tags:
Name: Example Queue with Outbound Caller Config
The outboundCallerConfig block controls caller ID presentation for outbound calls. The outboundCallerIdName sets the display name, outboundCallerIdNumberId references the phone number to show, and outboundFlowId specifies the contact flow that handles the outbound call logic.
Beyond these examples
These snippets focus on specific queue-level features: queue creation with operating hours, agent transfer destinations, and outbound caller ID configuration. They’re intentionally minimal rather than full contact center deployments.
The examples reference pre-existing infrastructure such as Amazon Connect instances, hours of operation schedules, and quick connects, caller ID numbers, and contact flows for relevant examples. They focus on configuring the queue rather than provisioning the surrounding Connect infrastructure.
To keep things focused, common queue patterns are omitted, including:
- Queue capacity limits (maxContacts)
- Queue status management (status: ENABLED/DISABLED)
- Contact routing priorities and delays
- Queue metrics and real-time monitoring
These omissions are intentional: the goal is to illustrate how each queue feature is wired, not provide drop-in contact center modules. See the Connect Queue resource reference for all available configuration options.
Let's create AWS Connect Queues
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Configuration & Setup
instanceId, name, hoursOfOperationId, and status. The status must be either ENABLED or DISABLED.ENABLED or DISABLED.Queue Features & Limits
quickConnectIds to specify quick connects available to agents working the queue. Use outboundCallerConfig to define the outbound caller ID name, number, and outbound whisper flow for outbound calls.Management & Operations
instanceId:queueId separated by a colon. For example: pulumi import aws:connect/queue:Queue example f1288a1f-6193-445a-b47e-af739b2:c1d4e5f6-1b3c-1b3c-1b3c-c1d4e5f6c1d4e5.Using a different cloud?
Explore integration guides for other cloud providers: