Parameters: SageMakerProjectName: Type: String Description: The name of the SageMaker project. MaxLength: 32 MinLength: 1 SageMakerProjectId: Type: String Description: Service generated Id of the project. MaxLength: 16 MinLength: 1 StageName: Type: String Default: dev Description: The stage name. MaxLength: 8 MinLength: 1 CodeCommitSeedBucket: Type: String Description: The optional s3 seed bucket MinLength: 1 CodeCommitSeedKey: Type: String Description: The optional s3 seed key MinLength: 1 Resources: CodeRepo: Type: AWS::CodeCommit::Repository Properties: RepositoryName: Fn::Join: - "" - - sagemaker- - Ref: SageMakerProjectName - -repo Code: BranchName: main S3: Bucket: Ref: CodeCommitSeedBucket Key: Ref: CodeCommitSeedKey RepositoryDescription: Amazon SageMaker A/B testing pipeline Tags: - Key: sagemaker:deployment-stage Value: Ref: StageName - Key: sagemaker:project-id Value: Ref: SageMakerProjectId - Key: sagemaker:project-name Value: Ref: SageMakerProjectName CdkBuild455F642E: Type: AWS::CodeBuild::Project Properties: Artifacts: Type: CODEPIPELINE Environment: ComputeType: BUILD_GENERAL1_SMALL EnvironmentVariables: - Name: SAGEMAKER_PROJECT_NAME Type: PLAINTEXT Value: Ref: SageMakerProjectName - Name: SAGEMAKER_PROJECT_ID Type: PLAINTEXT Value: Ref: SageMakerProjectId - Name: STAGE_NAME Type: PLAINTEXT Value: Ref: StageName Image: aws/codebuild/standard:1.0 ImagePullCredentialsType: CODEBUILD PrivilegedMode: false Type: LINUX_CONTAINER ServiceRole: Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":iam::" - Ref: AWS::AccountId - :role/service-role/AmazonSageMakerServiceCatalogProductsUseRole Source: BuildSpec: >- { "version": "0.2", "phases": { "install": { "commands": [ "npm install aws-cdk", "npm update", "python -m pip install -r requirements.txt" ] }, "build": { "commands": [ "npx cdk synth -o dist --path-metadata false" ] } }, "artifacts": { "base-directory": "dist", "files": [ "*.template.json" ] }, "environment": { "buildImage": { "type": "LINUX_CONTAINER", "defaultComputeType": "BUILD_GENERAL1_SMALL", "imageId": "aws/codebuild/amazonlinux2-x86_64-standard:3.0", "imagePullPrincipalType": "CODEBUILD" } } } Type: CODEPIPELINE EncryptionKey: alias/aws/s3 Name: Fn::Join: - "" - - sagemaker- - Ref: SageMakerProjectName - -cdk- - Ref: StageName S3Artifact80610462: Type: AWS::S3::Bucket Properties: BucketName: Fn::Join: - "" - - sagemaker- - Ref: SageMakerProjectId - -artifact- - Ref: StageName - "-" - Ref: AWS::Region UpdateReplacePolicy: Delete DeletionPolicy: Delete PipelineC660917D: Type: AWS::CodePipeline::Pipeline Properties: RoleArn: Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":iam::" - Ref: AWS::AccountId - :role/service-role/AmazonSageMakerServiceCatalogProductsUseRole Stages: - Actions: - ActionTypeId: Category: Source Owner: AWS Provider: CodeCommit Version: "1" Configuration: RepositoryName: Fn::GetAtt: - CodeRepo - Name BranchName: main PollForSourceChanges: false Name: CodeCommit_Source OutputArtifacts: - Name: Artifact_Source_CodeCommit_Source RunOrder: 1 Name: Source - Actions: - ActionTypeId: Category: Build Owner: AWS Provider: CodeBuild Version: "1" Configuration: ProjectName: Ref: CdkBuild455F642E InputArtifacts: - Name: Artifact_Source_CodeCommit_Source Name: CDK_Build OutputArtifacts: - Name: Artifact_Build_CDK_Build RunOrder: 1 Name: Build - Actions: - ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: "1" Configuration: StackName: Fn::Join: - "" - - sagemaker- - Ref: SageMakerProjectName - -deploy- - Ref: StageName RoleArn: Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":iam::" - Ref: AWS::AccountId - :role/service-role/AmazonSageMakerServiceCatalogProductsUseRole ActionMode: REPLACE_ON_FAILURE TemplatePath: Artifact_Build_CDK_Build::ab-testing-sagemaker.template.json InputArtifacts: - Name: Artifact_Build_CDK_Build Name: SageMaker_CFN_Deploy RunOrder: 1 Name: Deploy ArtifactStore: Location: Ref: S3Artifact80610462 Type: S3 Name: Fn::Join: - "" - - sagemaker- - Ref: SageMakerProjectName - -pipeline- - Ref: StageName DeployRule0F8E909D: Type: AWS::Events::Rule Properties: Description: Rule to trigger a deployment when SageMaker Model registry is updated with a new model package. EventPattern: detail: ModelPackageGroupName: - Fn::Join: - "" - - Ref: SageMakerProjectName - -champion - Fn::Join: - "" - - Ref: SageMakerProjectName - -challenger detail-type: - SageMaker Model Package State Change source: - aws.sagemaker Name: Fn::Join: - "" - - sagemaker- - Ref: SageMakerProjectName - -model- - Ref: StageName State: ENABLED Targets: - Arn: Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":codepipeline:" - Ref: AWS::Region - ":" - Ref: AWS::AccountId - ":" - Ref: PipelineC660917D Id: Target0 RoleArn: Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":iam::" - Ref: AWS::AccountId - :role/service-role/AmazonSageMakerServiceCatalogProductsUseRole CodeRule663E3DC0: Type: AWS::Events::Rule Properties: Description: Rule to trigger a deployment when deployment configured is updated in CodeCommit. EventPattern: detail: event: - referenceCreated - referenceUpdated referenceType: - branch referenceName: - main detail-type: - CodeCommit Repository State Change resources: - Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":codecommit:" - Ref: AWS::Region - ":" - Ref: AWS::AccountId - ":" - Fn::GetAtt: - CodeRepo - Name source: - aws.codecommit Name: Fn::Join: - "" - - sagemaker- - Ref: SageMakerProjectName - -code- - Ref: StageName State: ENABLED Targets: - Arn: Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":codepipeline:" - Ref: AWS::Region - ":" - Ref: AWS::AccountId - ":" - Ref: PipelineC660917D Id: Target0 RoleArn: Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":iam::" - Ref: AWS::AccountId - :role/service-role/AmazonSageMakerServiceCatalogProductsUseRole CDKMetadata: Type: AWS::CDK::Metadata Properties: Analytics: v2:deflate64:H4sIAAAAAAAAE0WN0YrCMBBFv8X3OCIVln0T/YFSvyBOR3ZskynJRCkh/742Lfh0L3M5Z47we4Lj7mzfcY/9cMgogSDf1OJgrg/f2mAdKQXTUZQUkMxVfNSQUJf9e334z9CzsvhiFl1m6yC3MjLOVVVbMSg9oTjHClUwSWSVMNfhnnjsPxRPNLKnNsiT1k9bLSY2kC8JB6rnta3WaaO+fAW3Xgy9yGuE3KWxLkuWUkw765/4QwM/0OyekXkfkld2BN2a//2ekvEmAQAA Condition: CDKMetadataAvailable Conditions: CDKMetadataAvailable: Fn::Or: - Fn::Or: - Fn::Equals: - Ref: AWS::Region - af-south-1 - Fn::Equals: - Ref: AWS::Region - ap-east-1 - Fn::Equals: - Ref: AWS::Region - ap-northeast-1 - Fn::Equals: - Ref: AWS::Region - ap-northeast-2 - Fn::Equals: - Ref: AWS::Region - ap-south-1 - Fn::Equals: - Ref: AWS::Region - ap-southeast-1 - Fn::Equals: - Ref: AWS::Region - ap-southeast-2 - Fn::Equals: - Ref: AWS::Region - ca-central-1 - Fn::Equals: - Ref: AWS::Region - cn-north-1 - Fn::Equals: - Ref: AWS::Region - cn-northwest-1 - Fn::Or: - Fn::Equals: - Ref: AWS::Region - eu-central-1 - Fn::Equals: - Ref: AWS::Region - eu-north-1 - Fn::Equals: - Ref: AWS::Region - eu-south-1 - Fn::Equals: - Ref: AWS::Region - eu-west-1 - Fn::Equals: - Ref: AWS::Region - eu-west-2 - Fn::Equals: - Ref: AWS::Region - eu-west-3 - Fn::Equals: - Ref: AWS::Region - me-south-1 - Fn::Equals: - Ref: AWS::Region - sa-east-1 - Fn::Equals: - Ref: AWS::Region - us-east-1 - Fn::Equals: - Ref: AWS::Region - us-east-2 - Fn::Or: - Fn::Equals: - Ref: AWS::Region - us-west-1 - Fn::Equals: - Ref: AWS::Region - us-west-2