// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Snapshot operator-library stack test 1`] = ` Object { "AWSTemplateFormatVersion": "2010-09-09", "Conditions": Object { "AllowAccessToExternalBucket": Object { "Fn::Not": Array [ Object { "Fn::Equals": Array [ Object { "Ref": "ExternalBucketArn", }, "", ], }, ], }, }, "Description": "media-insights-on-aws version %%VERSION%%. This AWS CloudFormation template provisions the Media Insights on AWS operator library.", "Mappings": Object { "SourceCode": Object { "General": Object { "CodeKeyPrefix": "media-insights-on-aws/%%VERSION%%", "RegionalS3Bucket": "%%REGIONAL_BUCKET_NAME%%", }, }, }, "Outputs": Object { "CelebRecognition": Object { "Description": "CelebRecognition operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "CelebRecognition", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "celebrityRecognitionOperation", "Name", ], }, }, "CelebrityRecognitionOperationImage": Object { "Description": "CelebRecognition image operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "CelebRecognitionImage", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "celebrityRecognitionOperationImage", "Name", ], }, }, "ContentModeration": Object { "Description": "Content moderation operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "ContentModeration", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "contentModerationOperation", "Name", ], }, }, "ContentModerationOperationImage": Object { "Description": "Content moderation image operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "ContentModerationImage", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "contentModerationOperationImage", "Name", ], }, }, "CreateSRTCaptionsOperation": Object { "Description": "Operation to create SRT captions", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "CreateSRTCaptions", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "CreateSRTCaptionsOperation", "Name", ], }, }, "CreateVTTCaptionsOperation": Object { "Description": "Operation to create VTT captions", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "CreateVTTCaptions", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "CreateVTTCaptionsOperation", "Name", ], }, }, "FaceDetection": Object { "Description": "Face detection operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "FaceDetection", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "faceDetectionOperation", "Name", ], }, }, "FaceDetectionOperationImage": Object { "Description": "Face detection image operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "FaceDetectionImage", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "faceDetectionOperationImage", "Name", ], }, }, "FaceSearch": Object { "Description": "Face search operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "FaceSearch", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "faceSearchOperation", "Name", ], }, }, "FaceSearchOperationImage": Object { "Description": "Face search image operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "FaceSearchImage", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "faceSearchOperationImage", "Name", ], }, }, "GenericDataLookupOperation": Object { "Description": "Operation name of GenericDataLookup", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "GenericDataLookup", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "GenericDataLookupOperation", "Name", ], }, }, "LabelDetection": Object { "Description": "Label detection operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "LabelDetection", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "labelDetectionOperation", "Name", ], }, }, "LabelDetectionOperationImage": Object { "Description": "CelebRecognition image operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "LabelDetectionImage", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "labelDetectionOperationImage", "Name", ], }, }, "MediaconvertOperation": Object { "Description": "Operation name of mediaconvert", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "Mediaconvert", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "MediaconvertOperation", "Name", ], }, }, "MediainfoOperation": Object { "Description": "Operation name of Mediainfo", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "Mediainfo", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "MediainfoOperation", "Name", ], }, }, "MediainfoOperationImage": Object { "Description": "Operation name of MediainfoImage", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "MediainfoImage", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "MediainfoOperationImage", "Name", ], }, }, "PersonTracking": Object { "Description": "Person tracking", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "PersonTracking", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "personTrackingOperation", "Name", ], }, }, "PollyOperation": Object { "Description": "Operation name of polly", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "Polly", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "PollyOperation", "Name", ], }, }, "PollyWebCaptionsOperation": Object { "Description": "Operation to create audio tracks from webcaptions collection transcripts", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "PollyWebCaptions", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "PollyWebCaptionsOperation", "Name", ], }, }, "TechnicalCueDetection": Object { "Description": "technicalCueDetection operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "TechnicalCueDetection", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "technicalCueDetectionOperation", "Name", ], }, }, "TextDetection": Object { "Description": "Text detection operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "TextDetection", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "textDetectionOperation", "Name", ], }, }, "TextDetectionOperationImage": Object { "Description": "Text Detection image operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "TextDetectionImage", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "textDetectionOperationImage", "Name", ], }, }, "ThumbnailOperation": Object { "Description": "Operation name of thumbnail", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "Thumbnail", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "ThumbnailOperation", "Name", ], }, }, "TranscribeAudioOperation": Object { "Description": "Operation name of transcribe for audio", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "TranscribeAudio", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "TranscribeAudioOperation", "Name", ], }, }, "TranscribeVideoOperation": Object { "Description": "Operation name of transcribe for video", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "TranscribeVideo", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "TranscribeVideoOperation", "Name", ], }, }, "TranslateOperation": Object { "Description": "Operation name of translate", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "Translate", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "TranslateOperation", "Name", ], }, }, "TranslateWebCaptionsOperation": Object { "Description": "Operation name of translate WebCaptions", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "TranslateWebCaptions", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "TranslateWebCaptionsOperation", "Name", ], }, }, "WaitOperation": Object { "Description": "Wait operator - wait until /workflow/execution/continue API is called", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "Wait", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "WaitOperation", "Name", ], }, }, "WebCaptionsOperation": Object { "Description": "Operation to create web captions", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "WebCaptions", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "WebCaptionsOperation", "Name", ], }, }, "WebToSRTCaptionsOperation": Object { "Description": "Operation to convert web captions to SRT format", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "WebToSRTCaptions", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "WebToSRTCaptionsOperation", "Name", ], }, }, "WebToVTTCaptionsOperation": Object { "Description": "Operation to convert web captions to VTT format", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "WebToVTTCaptions", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "WebToVTTCaptionsOperation", "Name", ], }, }, "comprehendEntitiesOperation": Object { "Description": "Operation name of polly", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "ComprehendEntities", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "comprehendEntitiesOperation", "Name", ], }, }, "comprehendPhrasesOperation": Object { "Description": "Operation name of polly", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "ComprehendPhrases", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "comprehendPhrasesOperation", "Name", ], }, }, "shotDetection": Object { "Description": "shotDetection operator", "Export": Object { "Name": Object { "Fn::Join": Array [ ":", Array [ Object { "Ref": "AWS::StackName", }, "ShotDetection", ], ], }, }, "Value": Object { "Fn::GetAtt": Array [ "shotDetectionOperation", "Name", ], }, }, }, "Parameters": Object { "Boto3UserAgent": Object { "Description": "Boto3 user agent string", "Type": "String", }, "CheckWaitOperationLambda": Object { "Description": "ARN of control plane lambda function to if a workflow is in Waiting state", "Type": "String", }, "DataPlaneBucket": Object { "Description": "Bucket for the dataplane", "Type": "String", }, "DataPlaneEndpoint": Object { "Description": "Name of the dataplane handler lambda function", "Type": "String", }, "DataPlaneHandlerArn": Object { "Description": "Arn of dataplane lambda handler", "Type": "String", }, "ExternalBucketArn": Object { "Description": "The ARN for Amazon S3 resources that exist outside the stack which may need to be used as inputs to the workflows", "Type": "String", }, "MediaConvertEndpoint": Object { "Description": "Account-specific endpoint URL for MediaConvert", "Type": "String", }, "StartWaitOperationLambda": Object { "Description": "ARN of control plane lambda function to set a workflow to Waiting state", "Type": "String", }, "WorkflowCustomResourceArn": Object { "Description": "ARN of the Media insights on AWS custom resource that handles creating operations, stages and workflows", "Type": "String", }, "referencetoMiTestStackMediaInsightsEnginePython37Layer": Object { "Type": "String", }, "referencetoMiTestStackMediaInsightsEnginePython39Layer": Object { "Type": "String", }, "referencetoMiTestStackMieKey": Object { "Type": "String", }, "referencetoMiTestStackMieKeyArn": Object { "Type": "String", }, }, "Resources": Object { "CheckMediaConvertFunction": Object { "DependsOn": Array [ "mediaConvertLambdaRoleDefaultPolicy", "mediaConvertLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "get_media_convert.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "MEDIACONVERT_ENDPOINT": Object { "Ref": "MediaConvertEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "get_media_convert.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "mediaConvertLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 60, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "CheckPollyFunction": Object { "DependsOn": Array [ "pollyRoleDefaultPolicy", "pollyRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "get_polly.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "get_polly.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "pollyRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "CheckPollyWebCaptionsFunction": Object { "DependsOn": Array [ "pollyRoleDefaultPolicy", "pollyRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "webcaptions.check_polly_webcaptions", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "pollyRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, }, "Type": "AWS::Lambda::Function", }, "CheckThumbnailFunction": Object { "DependsOn": Array [ "mediaConvertLambdaRoleDefaultPolicy", "mediaConvertLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_thumbnail.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "MEDIACONVERT_ENDPOINT": Object { "Ref": "MediaConvertEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, "mediaconvertRole": Object { "Fn::GetAtt": Array [ "mediaConvertS3Role", "Arn", ], }, }, }, "Handler": "check_thumbnail.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "mediaConvertLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 60, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "CheckTranscribeFunction": Object { "DependsOn": Array [ "transcribeRoleDefaultPolicy", "transcribeRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "get_transcribe.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "get_transcribe.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "transcribeRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "CheckTranslateWebcaptionsFunction": Object { "DependsOn": Array [ "translateRoleDefaultPolicy", "translateRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "webcaptions.check_translate_webcaptions", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "translateRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, }, "Type": "AWS::Lambda::Function", }, "CreateSRTCaptionsFunction": Object { "DependsOn": Array [ "captionsRoleDefaultPolicy", "captionsRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "webcaptions.create_srt", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "captionsRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "CreateSRTCaptionsOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Text", }, "Name": "CreateSRTCaptions", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "CreateSRTCaptionsFunction", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "CreateVTTCaptionsFunction": Object { "DependsOn": Array [ "captionsRoleDefaultPolicy", "captionsRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "webcaptions.create_vtt", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "captionsRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "CreateVTTCaptionsOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Text", }, "Name": "CreateVTTCaptions", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "CreateVTTCaptionsFunction", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "GenericDataLookupOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": false, "MediaType": "Video", }, "Name": "GenericDataLookup", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startGenericDataLookup", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "MediaconvertOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "CheckMediaConvertFunction", "Arn", ], }, "Name": "Mediaconvert", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "StartMediaConvertFunction", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "Mediainfo": Object { "DependsOn": Array [ "mediainfoLambdaRoleDefaultPolicy", "mediainfoLambdaRole", ], "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-L1", "reason": "The version of pymediainfo does not support latest runtime version", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "mediainfo.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DataLookupRole": Object { "Fn::GetAtt": Array [ "mediainfoLambdaRole", "Arn", ], }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "LD_LIBRARY_PATH": "/opt/python/", "OPERATOR_NAME": "Mediainfo", "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "mediainfo.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython37Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "mediainfoLambdaRole", "Arn", ], }, "Runtime": "python3.7", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "MediainfoOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "Name": "Mediainfo", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "Mediainfo", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "MediainfoOperationImage": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Image", }, "Name": "MediainfoImage", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "Mediainfo", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "PollyOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": false, "MediaType": "Text", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "CheckPollyFunction", "Arn", ], }, "Name": "Polly", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "StartPollyFunction", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "PollyWebCaptionsOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "MetadataOnly", "SourceLanguageCode": "en", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "CheckPollyWebCaptionsFunction", "Arn", ], }, "Name": "PollyWebCaptions", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "StartPollyWebCaptionsFunction", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "StartMediaConvertFunction": Object { "DependsOn": Array [ "mediaConvertLambdaRoleDefaultPolicy", "mediaConvertLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_media_convert.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "MEDIACONVERT_ENDPOINT": Object { "Ref": "MediaConvertEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, "mediaconvertRole": Object { "Fn::GetAtt": Array [ "mediaConvertS3Role", "Arn", ], }, }, }, "Handler": "start_media_convert.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "mediaConvertLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 60, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "StartPollyFunction": Object { "DependsOn": Array [ "pollyRoleDefaultPolicy", "pollyRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_polly.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_polly.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "pollyRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "StartPollyWebCaptionsFunction": Object { "DependsOn": Array [ "pollyRoleDefaultPolicy", "pollyRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "webcaptions.start_polly_webcaptions", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "pollyRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, }, "Type": "AWS::Lambda::Function", }, "StartThumbnailFunction": Object { "DependsOn": Array [ "mediaConvertLambdaRoleDefaultPolicy", "mediaConvertLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_thumbnail.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "MEDIACONVERT_ENDPOINT": Object { "Ref": "MediaConvertEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, "mediaconvertRole": Object { "Fn::GetAtt": Array [ "mediaConvertS3Role", "Arn", ], }, }, }, "Handler": "start_thumbnail.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "mediaConvertLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 60, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "StartTranscribeFunction": Object { "DependsOn": Array [ "transcribeRoleDefaultPolicy", "transcribeRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_transcribe.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_transcribe.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "transcribeRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "StartTranslateWebcaptionsFunction": Object { "DependsOn": Array [ "translateRoleDefaultPolicy", "translateRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, "translateRole": Object { "Fn::GetAtt": Array [ "translateS3Role", "Arn", ], }, }, }, "Handler": "webcaptions.start_translate_webcaptions", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "translateRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, }, "Type": "AWS::Lambda::Function", }, "ThumbnailOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "CheckThumbnailFunction", "Arn", ], }, "Name": "Thumbnail", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "StartThumbnailFunction", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "TranscribeAudioOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Audio", "TranscribeLanguage": "en-US", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "CheckTranscribeFunction", "Arn", ], }, "Name": "TranscribeAudio", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "StartTranscribeFunction", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "TranscribeVideoOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", "TranscribeLanguage": "en-US", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "CheckTranscribeFunction", "Arn", ], }, "Name": "TranscribeVideo", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "StartTranscribeFunction", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "TranslateFunction": Object { "DependsOn": Array [ "translateRoleDefaultPolicy", "translateRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_translate.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_translate.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "translateRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "TranslateOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Text", "SourceLanguageCode": "en", "TargetLanguageCode": "ru", }, "Name": "Translate", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "TranslateFunction", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "TranslateWebCaptionsOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "MetadataOnly", "SourceLanguageCode": "en", "TargetLanguageCodes": Array [ "es", ], }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "CheckTranslateWebcaptionsFunction", "Arn", ], }, "Name": "TranslateWebCaptions", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "StartTranslateWebcaptionsFunction", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "WaitOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": false, "MediaType": "MetadataOnly", }, "MonitorLambdaArn": Object { "Ref": "CheckWaitOperationLambda", }, "Name": "Wait", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Ref": "StartWaitOperationLambda", }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "WebCaptionsFunction": Object { "DependsOn": Array [ "captionsRoleDefaultPolicy", "captionsRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "webcaptions.web_captions", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "captionsRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "WebCaptionsOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "MetadataOnly", "SourceLanguageCode": "en", }, "Name": "WebCaptions", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "WebCaptionsFunction", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "WebToSRTCaptionsFunction": Object { "DependsOn": Array [ "captionsRoleDefaultPolicy", "captionsRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "webcaptions.create_srt", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "captionsRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "WebToSRTCaptionsOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "MetadataOnly", "TargetLanguageCodes": Array [ "en", ], }, "Name": "WebToSRTCaptions", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "WebToSRTCaptionsFunction", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "WebToVTTCaptionsFunction": Object { "DependsOn": Array [ "captionsRoleDefaultPolicy", "captionsRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "webcaptions.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "webcaptions.create_vtt", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "captionsRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "WebToVTTCaptionsOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "MetadataOnly", "TargetLanguageCodes": Array [ "en", ], }, "Name": "WebToVTTCaptions", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "WebToVTTCaptionsFunction", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "captionsRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "CaptionsAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "captionsRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "captionsRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "captionsRole", }, ], }, "Type": "AWS::IAM::Policy", }, "celebrityRecognitionOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkCelebrityRecognition", "Arn", ], }, "Name": "celebrityRecognition", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startCelebrityRecognition", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "celebrityRecognitionOperationImage": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Image", }, "Name": "celebrityRecognitionImage", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startCelebrityRecognition", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "checkCelebrityRecognition": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "celebrityRecognition", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_celebrity_recognition_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "checkContentModeration": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "contentModeration", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_content_moderation_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "checkFaceDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "faceDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_face_detection_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 512, "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "checkFaceSearch": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "faceSearch", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_face_search_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "checkLabelDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "labelDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_label_detection_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 240, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "checkPersonTracking": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "personTracking", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_person_tracking_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "checkShotDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "shotDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_shot_detection_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "checkTechnicalCueDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "technicalCueDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_technical_cue_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "checkTextDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "check_rekognition_status.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "textDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "check_rekognition_status.check_text_detection_status", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 240, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "comprehendEntitiesOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Text", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "getEntityDetection", "Arn", ], }, "Name": "ComprehendEntities", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startEntityDetection", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "comprehendPhrasesOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Text", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "getKeyPhrases", "Arn", ], }, "Name": "ComprehendKeyPhrases", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startKeyPhrases", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "comprehendRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "iam:PassRole", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "comprehendS3Role", "Arn", ], }, }, Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": Array [ "comprehend:StartEntitiesDetectionJob", "comprehend:DetectSentiment", "comprehend:DescribeEntityRecognizer", "comprehend:ListTopicsDetectionJobs", "comprehend:DescribeDominantLanguageDetectionJob", "comprehend:StopTrainingEntityRecognizer", "comprehend:DescribeDocumentClassificationJob", "comprehend:StopSentimentDetectionJob", "comprehend:StartDominantLanguageDetectionJob", "comprehend:StartTopicsDetectionJob", "comprehend:DetectDominantLanguage", "comprehend:CreateDocumentClassifier", "comprehend:ListEntityRecognizers", "comprehend:ListSentimentDetectionJobs", "comprehend:BatchDetectSyntax", "comprehend:StartSentimentDetectionJob", "comprehend:ListDominantLanguageDetectionJobs", "comprehend:ListDocumentClassifiers", "comprehend:DescribeKeyPhrasesDetectionJob", "comprehend:CreateEntityRecognizer", "comprehend:ListKeyPhrasesDetectionJobs", "comprehend:DescribeSentimentDetectionJob", "comprehend:DescribeTopicsDetectionJob", "comprehend:StopDominantLanguageDetectionJob", "comprehend:BatchDetectSentiment", "comprehend:StartKeyPhrasesDetectionJob", "comprehend:BatchDetectEntities", "comprehend:BatchDetectKeyPhrases", "comprehend:ListEntitiesDetectionJobs", "comprehend:StopKeyPhrasesDetectionJob", "comprehend:ListDocumentClassificationJobs", "comprehend:DetectSyntax", "comprehend:DescribeEntitiesDetectionJob", "comprehend:StopTrainingDocumentClassifier", "comprehend:ListTagsForResource", "comprehend:DescribeDocumentClassifier", "comprehend:StopEntitiesDetectionJob", "comprehend:BatchDetectDominantLanguage", "comprehend:StartDocumentClassificationJob", "comprehend:DetectEntities", "comprehend:DetectKeyPhrases", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:CreateGrant", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "comprehendAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "comprehendRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "comprehendRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "comprehendRole", }, ], }, "Type": "AWS::IAM::Policy", }, "comprehendS3Role": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "comprehend.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "s3:ListBucket", "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, ], ], }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:CreateGrant", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "ComprehendAllowS3", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "contentModerationOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkContentModeration", "Arn", ], }, "Name": "contentModeration", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startContentModeration", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "contentModerationOperationImage": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Image", }, "Name": "contentModerationImage", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startContentModeration", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "faceDetectionOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkFaceDetection", "Arn", ], }, "Name": "faceDetection", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startFaceDetection", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "faceDetectionOperationImage": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Image", }, "Name": "faceDetectionImage", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startFaceDetection", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "faceSearchOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "CollectionId": "", "Enabled": false, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkFaceSearch", "Arn", ], }, "Name": "faceSearch", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startFaceSearch", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "faceSearchOperationImage": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "CollectionId": "", "Enabled": false, "MediaType": "Image", }, "Name": "faceSearchImage", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startFaceSearch", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "genericDataLookupLambdaRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, Object { "id": "AwsSolutions-IAM4", "reason": "Managed policies required for IAM role.", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/AmazonS3ReadOnlyAccess", ], ], }, ], "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "GenericDataLookupLambdaAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "genericDataLookupLambdaRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, Object { "id": "AwsSolutions-IAM4", "reason": "Managed policies required for IAM role.", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "genericDataLookupLambdaRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "genericDataLookupLambdaRole", }, ], }, "Type": "AWS::IAM::Policy", }, "getEntityDetection": Object { "DependsOn": Array [ "comprehendRoleDefaultPolicy", "comprehendRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "get_entity_detection.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "KmsId": Object { "Ref": "referencetoMiTestStackMieKey", }, "OPERATOR_NAME": "comprehendEntityDetection", "botoConfig": Object { "Ref": "Boto3UserAgent", }, "comprehendRole": Object { "Fn::GetAtt": Array [ "comprehendS3Role", "Arn", ], }, }, }, "Handler": "get_entity_detection.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "comprehendRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "getKeyPhrases": Object { "DependsOn": Array [ "comprehendRoleDefaultPolicy", "comprehendRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "get_key_phrases.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "KmsId": Object { "Ref": "referencetoMiTestStackMieKey", }, "OPERATOR_NAME": "comprehendGetKeyPhrases", "botoConfig": Object { "Ref": "Boto3UserAgent", }, "comprehendRole": Object { "Fn::GetAtt": Array [ "comprehendS3Role", "Arn", ], }, }, }, "Handler": "get_key_phrases.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "comprehendRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "labelDetectionOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkLabelDetection", "Arn", ], }, "Name": "labelDetection", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startLabelDetection", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "labelDetectionOperationImage": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Image", }, "Name": "labelDetectionImage", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startLabelDetection", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "mediaConvertLambdaRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "mediaconvert:GetJob", "mediaconvert:ListJobs", "mediaconvert:DescribeEndpoints", "mediaconvert:CreateJob", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": "iam:PassRole", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "mediaConvertS3Role", "Arn", ], }, }, Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "MediaConvertLambdaAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "mediaConvertLambdaRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "mediaConvertLambdaRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "mediaConvertLambdaRole", }, ], }, "Type": "AWS::IAM::Policy", }, "mediaConvertS3Role": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "Scoped down to S3 Bucket", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "mediaconvert.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "MediaconvertAllowS3", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "mediainfoLambdaRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, Object { "id": "AwsSolutions-IAM4", "reason": "Managed policies required for IAM role.", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/AmazonS3ReadOnlyAccess", ], ], }, ], "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "mediainfoLambdaAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "mediainfoLambdaRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, Object { "id": "AwsSolutions-IAM4", "reason": "Managed policies required for IAM role.", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "mediainfoLambdaRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "mediainfoLambdaRole", }, ], }, "Type": "AWS::IAM::Policy", }, "personTrackingOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": false, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkPersonTracking", "Arn", ], }, "Name": "personTracking", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startPersonTracking", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "pollyRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "comprehend.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "polly:SynthesizeSpeech", "polly:StartSpeechSynthesisTask", "polly:ListLexicons", "polly:GetSpeechSynthesisTask", "polly:ListSpeechSynthesisTasks", "comprehend:DetectDominantLanguage", "polly:GetLexicon", "polly:DescribeVoices", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "PollyAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "pollyRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "pollyRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "pollyRole", }, ], }, "Type": "AWS::IAM::Policy", }, "rekognitionLambdaRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "the policy actions used in this role require * resource", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "the policy actions used in this role require * resource", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "iam:PassRole", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": Array [ "rekognition:DetectFaces", "rekognition:DetectLabels", "rekognition:DetectText", "rekognition:DetectModerationLabels", "rekognition:GetCelebrityRecognition", "rekognition:GetContentModeration", "rekognition:GetFaceDetection", "rekognition:GetFaceSearch", "rekognition:GetLabelDetection", "rekognition:GetPersonTracking", "rekognition:RecognizeCelebrities", "rekognition:StartCelebrityRecognition", "rekognition:StartContentModeration", "rekognition:StartFaceDetection", "rekognition:StartFaceSearch", "rekognition:StartLabelDetection", "rekognition:StartPersonTracking", "rekognition:StartTextDetection", "rekognition:GetTextDetection", "rekognition:StartSegmentDetection", "rekognition:GetSegmentDetection", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "rekognition:DescribeCollection", "rekognition:SearchFaces", "rekognition:SearchFacesByImage", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":rekognition:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":collection/*", ], ], }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "rekognitionAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "rekognitionLambdaRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "the policy actions used in this role require * resource", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "rekognitionLambdaRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "rekognitionLambdaRole", }, ], }, "Type": "AWS::IAM::Policy", }, "rekognitionSNSRole": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "the policy actions used in this role require * resource", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "the policy actions used in this role require * resource", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "rekognition.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "sns:Publish", "Effect": "Allow", "Resource": Object { "Ref": "snsRekognitionTopic", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "RekognitionSNSPublishPolicy", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "shotDetectionOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkShotDetection", "Arn", ], }, "Name": "shotDetection", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startShotDetection", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "snsRekognitionTopic": Object { "Properties": Object { "DisplayName": "SNS Role for Rekognition", "KmsMasterKeyId": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::SNS::Topic", }, "startCelebrityRecognition": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_rekognition.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "celebrityRecognition", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_rekognition.start_celebrity_recognition", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startContentModeration": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_rekognition.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "contentModeration", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_rekognition.start_content_moderation", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startEntityDetection": Object { "DependsOn": Array [ "comprehendRoleDefaultPolicy", "comprehendRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_entity_detection.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "KmsId": Object { "Ref": "referencetoMiTestStackMieKey", }, "OPERATOR_NAME": "comprehendStartEntityDetection", "botoConfig": Object { "Ref": "Boto3UserAgent", }, "comprehendRole": Object { "Fn::GetAtt": Array [ "comprehendS3Role", "Arn", ], }, }, }, "Handler": "start_entity_detection.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "comprehendRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startFaceDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_rekognition.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "faceDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_rekognition.start_face_detection", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startFaceSearch": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_face_search.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "faceSearch", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_face_search.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "MemorySize": 256, "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startGenericDataLookup": Object { "DependsOn": Array [ "genericDataLookupLambdaRoleDefaultPolicy", "genericDataLookupLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "generic_data_lookup.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DataLookupRole": Object { "Fn::GetAtt": Array [ "genericDataLookupLambdaRole", "Arn", ], }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "GenericDataLookup", "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "generic_data_lookup.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "genericDataLookupLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startKeyPhrases": Object { "DependsOn": Array [ "comprehendRoleDefaultPolicy", "comprehendRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_key_phrases.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "KmsId": Object { "Ref": "referencetoMiTestStackMieKey", }, "OPERATOR_NAME": "comprehendStartKeyPhrases", "botoConfig": Object { "Ref": "Boto3UserAgent", }, "comprehendRole": Object { "Fn::GetAtt": Array [ "comprehendS3Role", "Arn", ], }, }, }, "Handler": "start_key_phrases.lambda_handler", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "comprehendRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 300, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startLabelDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_rekognition.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "labelDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_rekognition.start_label_detection", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startPersonTracking": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_rekognition.zip", ], ], }, }, "Environment": Object { "Variables": Object { "OPERATOR_NAME": "personTracking", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_rekognition.start_person_tracking", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startShotDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_rekognition.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "shotDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_rekognition.start_shot_detection", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startTechnicalCueDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_rekognition.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "technicalCueDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_rekognition.start_technical_cue_detection", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "startTextDetection": Object { "DependsOn": Array [ "rekognitionLambdaRoleDefaultPolicy", "rekognitionLambdaRole", ], "Metadata": Object { "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W89", "reason": "This Lambda function does not need to access any resource provisioned within a VPC.", }, Object { "id": "W92", "reason": "This function does not require performance optimization, so the default concurrency limits suffice.", }, ], }, }, "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Join": Array [ "-", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "RegionalS3Bucket", ], }, Object { "Ref": "AWS::Region", }, ], ], }, "S3Key": Object { "Fn::Join": Array [ "/", Array [ Object { "Fn::FindInMap": Array [ "SourceCode", "General", "CodeKeyPrefix", ], }, "start_rekognition.zip", ], ], }, }, "Environment": Object { "Variables": Object { "DATAPLANE_BUCKET": Object { "Ref": "DataPlaneBucket", }, "DataplaneEndpoint": Object { "Ref": "DataPlaneEndpoint", }, "OPERATOR_NAME": "textDetection", "REKOGNITION_ROLE_ARN": Object { "Fn::GetAtt": Array [ "rekognitionSNSRole", "Arn", ], }, "REKOGNITION_SNS_TOPIC_ARN": Object { "Ref": "snsRekognitionTopic", }, "botoConfig": Object { "Ref": "Boto3UserAgent", }, }, }, "Handler": "start_rekognition.start_text_detection", "Layers": Array [ Object { "Ref": "referencetoMiTestStackMediaInsightsEnginePython39Layer", }, ], "Role": Object { "Fn::GetAtt": Array [ "rekognitionLambdaRole", "Arn", ], }, "Runtime": "python3.9", "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], "Timeout": 120, "TracingConfig": Object { "Mode": "PassThrough", }, }, "Type": "AWS::Lambda::Function", }, "technicalCueDetectionOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkTechnicalCueDetection", "Arn", ], }, "Name": "technicalCueDetection", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startTechnicalCueDetection", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "textDetectionOperation": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Video", }, "MonitorLambdaArn": Object { "Fn::GetAtt": Array [ "checkTextDetection", "Arn", ], }, "Name": "textDetection", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startTextDetection", "Arn", ], }, "Type": "Async", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "textDetectionOperationImage": Object { "DeletionPolicy": "Delete", "Properties": Object { "Configuration": Object { "Enabled": true, "MediaType": "Image", }, "Name": "textDetectionImage", "ResourceType": "Operation", "ServiceToken": Object { "Ref": "WorkflowCustomResourceArn", }, "StartLambdaArn": Object { "Fn::GetAtt": Array [ "startTextDetection", "Arn", ], }, "Type": "Sync", }, "Type": "Custom::CustomResource", "UpdateReplacePolicy": "Delete", }, "transcribeRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "transcribe:GetVocabulary", "transcribe:GetTranscriptionJob", "transcribe:CreateVocabulary", "transcribe:StartStreamTranscription", "transcribe:StartTranscriptionJob", "transcribe:UpdateVocabulary", "transcribe:ListTranscriptionJobs", "transcribe:ListVocabularies", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "TranscribeAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "transcribeRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "transcribeRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "transcribeRole", }, ], }, "Type": "AWS::IAM::Policy", }, "translateRole": Object { "Metadata": Object { "Comment": "This role contains two policies that provide GetObject permission for DataplaneBucketName. This duplication is necessary in order to avoid a syntax error when the user-specified ExternalBucketArn parameter is empty.", "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, "cfn_nag": Object { "rules_to_suppress": Array [ Object { "id": "W11", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "iam:PassRole", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "translateS3Role", "Arn", ], }, }, Object { "Action": Array [ "translate:GetTerminology", "translate:ListTerminologies", "translate:ImportTerminology", "translate:TranslateText", "translate:DescribeTextTranslationJob", "translate:StartTextTranslationJob", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:*:*:*:*", ], ], }, }, Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "s3:ListBucket", "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, ], ], }, }, Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Ref": "DataPlaneHandlerArn", }, }, Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "TranslateAccess", }, ], "Tags": Array [ Object { "Key": "environment", "Value": "mie", }, ], }, "Type": "AWS::IAM::Role", }, "translateRoleDefaultPolicy": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "The X-Ray policy uses actions that must be applied to all resources. See https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources", }, ], }, }, "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "translateRoleDefaultPolicy", "Roles": Array [ Object { "Ref": "translateRole", }, ], }, "Type": "AWS::IAM::Policy", }, "translateS3Role": Object { "Metadata": Object { "cdk_nag": Object { "rules_to_suppress": Array [ Object { "id": "AwsSolutions-IAM5", "reason": "Scoped down to S3 Bucket", }, ], }, }, "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "translate.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": Array [ Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "s3:GetObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::If": Array [ "AllowAccessToExternalBucket", Object { "Ref": "ExternalBucketArn", }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, "/*", ], ], }, ], }, }, Object { "Action": "s3:ListBucket", "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "DataPlaneBucket", }, ], ], }, }, Object { "Action": Array [ "kms:Decrypt", "kms:GenerateDataKey", ], "Effect": "Allow", "Resource": Object { "Ref": "referencetoMiTestStackMieKeyArn", }, }, ], "Version": "2012-10-17", }, "PolicyName": "TranslateAllowS3", }, ], }, "Type": "AWS::IAM::Role", }, }, } `;