import * as core from 'aws-cdk-lib'; import { aws_iam as iam } from 'aws-cdk-lib'; import * as constructs from 'constructs'; export interface AzureFederatedCredentials { readonly clientId: string; readonly tenantId: string; readonly subscriptionId: string; readonly lambdaRoleName: string; readonly spObjectId: string; } export interface FunctionCodeProps { readonly s3BucketName: string; readonly s3ObjectKey: string; } export interface BicepDeploymentProps { readonly template: string; readonly parameters?: Record; readonly azureFederatedCredentials: AzureFederatedCredentials; readonly resourceGroupName: string; readonly deploymentName?: string; readonly cloudformationStackArn?: string; readonly functionCode?: FunctionCodeProps; } /** * Deploys Azure Bicep templates via CloudFormation Custom Resource. * * This construct uses a Docker-based Lambda function because Azure CLI and Bicep * exceed Lambda's 250MB deployment package limit (~170MB combined). Docker Lambda * provides a 10GB image size limit, allowing us to pre-install Azure CLI and Bicep * in the container image. * * The Lambda executes `az deployment group create` to deploy Bicep templates and * returns outputs to CloudFormation, enabling atomic multi-cloud deployments where * AWS resources can depend on Azure resources within a single CDK stack. * * For simple Azure AD operations (app registrations, etc.), consider using the * SOP (Standard Operating Procedure) pattern instead, which makes direct Graph API * calls without requiring Azure CLI or Docker. */ export declare class BicepDeployment extends constructs.Construct { readonly customResource: core.CustomResource; readonly outputs: Record; readonly lambdaRole: iam.IRole; constructor(scope: constructs.Construct, id: string, props: BicepDeploymentProps); getOutput(key: string): string; }