CDK-managed Amazon Connect instance with 3rd party app integrations.
connect/
├── cdk/ # Root CDK app
│ ├── bin/cdk.ts # Orchestrates all stacks
│ └── lib/
│ ├── connect-instance-stack.ts # Connect instance + SAML (optional)
│ ├── connect-3p-apps-stack.ts # 3P app registrations
│ ├── connect-3p-integrations-stack.ts # Associates apps with instance
│ ├── connect-3p-app-base.ts # Base interface for 3P apps
│ └── connect-q-stack.ts # Q in Connect (optional)
└── 3p-apps/
└── secure-file-upload/ # Example 3P app
| Guide | Description |
|---|---|
| Architecture | Detailed architecture, stack hierarchy, 3P app structure |
| Q in Connect | AI-powered agent assistance with Bedrock knowledge bases |
| SAML Setup | SAML authentication with IAM Identity Center |
| Importing Resources | Bring existing Connect resources under CDK management |
| Secure File Upload | 3P app for secure customer file uploads |
export CDK_DEFAULT_ACCOUNT=123456789012
cd cdk
# Copy and edit context file with your values
cp cdk.context.example.json cdk.context.json
# Edit cdk.context.json with your instance ARN, region, etc.
# Deploy (reads from cdk.context.json)
npx cdk deploy --allOr pass context via CLI:
Instance stays outside CDK management. Apps and integrations are managed.
npx cdk deploy --all \
-c connectRegion=us-west-2 \
-c connectInstanceArn=arn:aws:connect:us-west-2:123456789012:instance/abc-123npx cdk deploy --all \
-c connectRegion=us-west-2 \
-c instanceAlias=my-connectWith SAML authentication:
npx cdk deploy --all \
-c connectRegion=us-west-2 \
-c instanceAlias=my-connect \
-c identityManagementType=SAML \
-c samlProviderArn=arn:aws:iam::123456789012:saml-provider/MyProviderBring an existing instance under CDK management. See Importing Resources.
./scripts/import-instance.sh arn:aws:connect:us-west-2:123456789012:instance/abc-123Enable AI-powered agent assistance:
npx cdk deploy --all \
-c connectRegion=us-west-2 \
-c connectInstanceArn=arn:... \
-c 'features={"qInConnect":true}'See Q in Connect for details.
Enable flow logs to capture contact flow execution details in CloudWatch:
npx cdk deploy --all \
-c connectRegion=us-west-2 \
-c instanceAlias=my-connect \
-c 'features={"flowLogs":true}'View logs:
aws logs filter-log-events \
--log-group-name /aws/connect/<instance-alias> \
--filter-pattern "<contact-id>"Note: For existing instances (connectInstanceArn), enable flow logs via Connect Console → Instance settings → Flows.
| Parameter | Required | Description |
|---|---|---|
connectRegion |
Yes | Region for Connect instance |
connectInstanceArn |
* | Existing instance ARN (skip instance creation) |
instanceAlias |
* | New instance alias (creates instance) |
identityManagementType |
No | CONNECT_MANAGED (default), SAML, EXISTING_DIRECTORY |
samlProviderArn |
If SAML | ARN of existing IAM SAML provider |
directoryId |
If EXISTING_DIRECTORY | AWS Directory Service ID |
features |
No | Feature flags: {"qInConnect": true, "flowLogs": true} or {"qInConnect": {"enabled": true, "logs": true}} |
apps |
No | Per-app config: {"secure-file-upload": {"enabled": true, "region": "us-east-1"}} |
* Provide either connectInstanceArn OR instanceAlias, not both.
- Create folder structure:
3p-apps/my-app/cdk/lib/my-app-stack.ts - Implement
IConnect3PAppStackinterface fromconnect-3p-app-base.ts - Export
agentAppUrlfrom your stack - Add to app registry in
cdk/bin/cdk.ts:
const appRegistry: Record<string, Connect3PAppRegistryEntry> = {
'secure-file-upload': { ... },
'my-app': {
stackClass: MyAppStack,
displayName: 'My App',
description: 'Description of my app',
permissions: ['*'],
},
};See Architecture for detailed 3P app structure.
Enable apps in Connect security profiles:
- Connect Console → Security Profiles
- Edit agent's security profile
- Enable apps under "Agent Applications"
- Save
ConnectInstanceStack SecureFileUploadStack
(or existing ARN) (independent)
│ │
│ instanceArn │ agentAppUrl
│ ▼
│ Connect3PAppsStack
│ │
│ │ appArns
▼ ▼
Connect3PIntegrationsStack
CDK deploys in correct order automatically.
See CONTRIBUTING for more information.
This project is licensed under the MIT-0 License. See the LICENSE file.
This solution is intended for demonstration and learning purposes only. It is not intended for production use without thorough review and testing. Use at your own risk.