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 integration for transfers, and outbound caller ID configuration.
Queues belong to a Connect instance and reference Hours of Operation, Quick Connects, phone numbers, and contact flows that must exist separately. The examples are intentionally small. Combine them with your own Connect instance, operating hours, and routing configuration.
Create a queue with operating hours
Contact centers route incoming calls to queues that hold contacts until agents become available. Each queue requires operating hours that define when agents can handle contacts.
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 receive contacts from this queue. Without operating hours, the queue cannot route contacts to agents.
Enable quick connects for agent transfers
Agents often need to transfer contacts to other agents, queues, or external numbers. Quick connects provide pre-configured transfer destinations that agents can access 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 transfer destinations available to agents working this queue. Each ID references a Quick Connect resource that defines the transfer target (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, the queue’s outbound caller configuration determines what caller ID information recipients see and which flow handles the call setup.
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 a claimed phone number, and outboundFlowId specifies the contact flow that handles call setup. Recipients see the configured name and number when agents call from this queue.
Beyond these examples
These snippets focus on specific queue-level features: queue creation with operating hours, quick connect integration, and outbound caller ID configuration. They’re intentionally minimal rather than full contact center routing configurations.
The examples reference pre-existing infrastructure such as Amazon Connect instances, Hours of Operation resources, Quick Connect resources for transfer scenarios, and phone numbers and contact flows for outbound scenarios. 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 (ENABLED/DISABLED)
- Contact flow associations
- Queue metrics and 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 Basics
instanceId (your Connect instance), name (queue name), hoursOfOperationId (operating hours), status (ENABLED or DISABLED), and region (defaults to provider region if not specified).status property to ENABLED or DISABLED.Queue Capacity & Routing
maxContacts property sets the maximum number of contacts allowed in the queue before it’s considered full. The minimum value is 0.quickConnectIds property with a list of quick connect IDs.Outbound Calling
outboundCallerConfig when you need to set the outbound caller ID name (outboundCallerIdName), caller ID number (outboundCallerIdNumberId), or outbound whisper flow (outboundFlowId) for calls from this queue.Import & Management
instance_id:queue_id 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: