AWS Marketplace Deployment

Step-by-step guide for deploying Ohlala SmartOps through AWS Marketplace with detailed CloudFormation instructions

AWS Marketplace Deployment

Complete guide for subscribing and deploying Ohlala SmartOps through AWS Marketplace.

📋 Prerequisites

Before starting deployment:

Required Access

  • AWS Account: With administrative permissions
  • Marketplace Access: Ability to subscribe to products
  • CloudFormation: Permission to create stacks
  • IAM: Ability to create roles

Azure Bot Setup

  • ✅ Azure Bot registered
  • ✅ Microsoft App ID obtained
  • ✅ App Password created and saved
  • ✅ Tenant ID noted

🚀 Step 1: Subscribe to SmartOps

  1. Go to AWS Marketplace:

    https://aws.amazon.com/marketplace/pp/prodview-XXXXX
    
  2. Review product details:

    • Pricing information
    • Supported regions
    • Terms and conditions

Subscribe to Product

  1. Click “Continue to Subscribe”
  2. Review and accept terms
  3. Wait for subscription activation (usually immediate)
  4. Click “Continue to Configuration”

🎯 Step 2: Configure Product

Select Configuration Options

  1. Software Version: Select latest version

  2. Region: Choose your deployment region

    • Consider data residency requirements
    • Select region closest to users
    • Ensure Bedrock is available
  3. Click “Continue to Launch”

Choose Launch Method

  1. Select “Launch CloudFormation”
  2. Review launch configuration
  3. Click “Launch”

⚙️ Step 3: CloudFormation Stack

Stack Creation

The CloudFormation console opens with:

  • Template URL pre-populated
  • Stack creation wizard started

Configure Stack Details

Stack Name:

ohlala-smartops-prod

Use a descriptive name for your environment

Set Parameters

Required Parameters

Microsoft Teams Integration:

MicrosoftAppId: "12345678-90ab-cdef-1234-567890abcdef"
MicrosoftAppPassword: "abcDEF123~hijKLM456-nopQRS789"
MicrosoftAppTenantId: "87654321-abcd-efgh-4321-0987654321fe"

Deployment Configuration:

DeploymentMode: "NewVPC"  # or "ExistingVPC"
InstanceType: "FARGATE"
ContainerCPU: "512"
ContainerMemory: "1024"

Network Configuration

For NewVPC Mode:

# No additional parameters needed
# CloudFormation creates all networking

For ExistingVPC Mode:

VpcId: "vpc-0abc123def456789"
PrivateSubnetIds: "subnet-0abc123,subnet-0def456"
PublicSubnetIds: "subnet-0ghi789,subnet-0jkl012"

Configure Stack Options

Tags (Recommended):

Environment: "production"
Application: "smartops"
Owner: "platform-team"
CostCenter: "engineering"

Permissions:

  • ✅ IAM Role: Use default or specify existing role
  • ✅ Stack Policy: Optional, for production protection

Advanced Options:

  • Rollback on failure: Enabled (recommended)
  • Timeout: None (stack completes in ~10 minutes)
  • Termination protection: Enable for production

Review and Create

  1. Review all settings

  2. Acknowledge capabilities:

    • ✅ “I acknowledge that AWS CloudFormation might create IAM resources with custom names”
    • ✅ “I acknowledge that AWS CloudFormation might require the following capability: CAPABILITY_IAM”
  3. Click “Create Stack”

⏱️ Step 4: Monitor Deployment

Stack Progress

Monitor creation in CloudFormation console:

  • Events Tab: Real-time progress
  • Resources Tab: Created resources
  • Outputs Tab: Important values (appears after completion)

Expected Timeline

0-2 min:   VPC and networking (if NewVPC)
2-4 min:   Security groups and IAM roles
4-6 min:   DynamoDB tables and Secrets
6-8 min:   ECS cluster and service
8-10 min:  API Gateway and final config

Common Creation Events

CREATE_IN_PROGRESS - AWS::IAM::Role - ECSTaskRole
CREATE_COMPLETE - AWS::EC2::VPC - SmartOpsVPC
CREATE_IN_PROGRESS - AWS::ECS::Service - SmartOpsService
CREATE_COMPLETE - AWS::ApiGateway::RestApi - SmartOpsAPI

✅ Step 5: Retrieve Outputs

Access Stack Outputs

Once stack shows CREATE_COMPLETE:

  1. Go to Outputs tab
  2. Copy these critical values:

Key Outputs:

TeamsWebhookURL: "https://abc123.execute-api.region.amazonaws.com/prod/api/messages"
HealthEndpoint: "https://abc123.execute-api.region.amazonaws.com/prod/health"
ECSClusterName: "smartops-cluster-abc123"
LogGroupName: "/aws/ecs/smartops-abc123"

Save Configuration

Create a configuration document:

# SmartOps Deployment Configuration
# Date: 2024-03-20
# Stack: ohlala-smartops-prod

Webhook URL: https://abc123.execute-api.us-east-1.amazonaws.com/prod/api/messages
Health Check: https://abc123.execute-api.us-east-1.amazonaws.com/prod/health
Log Group: /aws/ecs/smartops-abc123

Azure Bot ID: 12345678-90ab-cdef-1234-567890abcdef
Tenant ID: 87654321-abcd-efgh-4321-0987654321fe

🔍 Step 6: Verify Deployment

Quick Health Check

Test the health endpoint:

curl https://your-api-gateway-url/prod/health

Expected response:

{
  "status": "healthy",
  "version": "1.0.0",
  "timestamp": "2024-03-20T10:30:00Z"
}

Check ECS Service

  1. Go to ECS Console
  2. Select your cluster
  3. Verify service shows:
    • Desired tasks: 1
    • Running tasks: 1
    • Health: HEALTHY

Review CloudWatch Logs

  1. Go to CloudWatch Console
  2. Navigate to Log Groups
  3. Find /aws/ecs/smartops-{stack-name}
  4. Check recent log streams for startup messages

🚨 Deployment Troubleshooting

Stack Creation Failures

IAM Permission Issues:

Error: User is not authorized to perform iam:CreateRole
Solution: Ensure account has IAM admin permissions

Resource Limit Errors:

Error: Maximum VPCs reached
Solution: Delete unused VPCs or request limit increase

Region Availability:

Error: Bedrock not available in region
Solution: Choose supported region (us-east-1, us-west-2, etc.)

Rollback Scenarios

If stack fails and rolls back:

  1. Check Events tab for failure reason
  2. Address the root cause
  3. Delete failed stack
  4. Retry creation with corrected parameters

Common Issues

Secrets Not Found:

  • Ensure Microsoft credentials are correct
  • Check parameter formatting (no extra spaces)

ECS Task Not Starting:

  • Review task definition CPU/memory settings
  • Check CloudWatch logs for container errors
  • Verify Bedrock model access

📖 Next Steps

Configure Azure Bot

  1. Use the webhook URL from outputs
  2. Configure Bot Messaging Endpoint →

Test Integration

  1. Send test message in Teams →
  2. Verify bot responds →

Monitor and Optimize

  1. Set up CloudWatch alarms →
  2. Review cost optimization →

📚 Additional Resources

Documentation

Support