diff --git a/openvidu-server/deployments/pro/aws/cfn-openvidu-server-pro-no-market.yaml.template b/openvidu-server/deployments/pro/aws/cfn-openvidu-server-pro-no-market.yaml.template index f62256b5..bb527d30 100644 --- a/openvidu-server/deployments/pro/aws/cfn-openvidu-server-pro-no-market.yaml.template +++ b/openvidu-server/deployments/pro/aws/cfn-openvidu-server-pro-no-market.yaml.template @@ -42,16 +42,20 @@ Parameters: Description: "If certificate type is 'letsencrypt', this email will be used for Let's Encrypt notifications" Type: String - RecordingStorage: - Description: "If 's3', recordings will be stored in a S3 bucket" + Recording: + Description: | + If 'disabled', recordings will not be active. + If 'local' recordings will be saved in EC2 instance locally. + If 's3', recordings will be stored in a S3 bucket" Type: String AllowedValues: + - disabled - local - s3 Default: local S3RecordingsBucketName: - Description: "If RecordingStorage is 's3', this will be the name of s3 bucket to store recordings" + Description: "S3 Bucket Name" Type: String # OpenVidu Configuration @@ -224,7 +228,10 @@ Metadata: - OpenViduLicense - OpenViduSecret - MediaNodesStartNumber - - RecordingStorage + - Label: + default: OpenVidu Recording Configuration + Parameters: + - Recording - S3RecordingsBucketName - Label: default: Elasticsearch and Kibana configuration @@ -261,8 +268,8 @@ Metadata: default: "URL to the key file (owncert)" LetsEncryptEmail: default: "Email for Let's Encrypt (letsencrypt)" - RecordingStorage: - default: "Recording storage" + Recording: + default: "OpenVidu Recording" S3RecordingsBucketName: default: "S3 Bucket where recordings will be stored" # OpenVidu configuration @@ -294,20 +301,22 @@ Metadata: default: "Deploy OpenVidu Call application" Conditions: - WhichCertPresent: !Not [ !Equals [!Ref WhichCert, ""] ] - PublicElasticIPPresent: !Not [ !Equals [!Ref PublicElasticIP, ""] ] - RecordingStorageIsS3: !Equals [!Ref RecordingStorage, "s3" ] - S3RecordingsBucketNamePresent: !Not [ !Equals [!Ref S3RecordingsBucketName, ""] ] - CreateS3Bucket: !And [ !Equals [!Ref RecordingStorage, "s3" ], !Equals [!Ref S3RecordingsBucketName, ""] ] + WhichCertPresent: !Not [ !Equals [!Ref WhichCert, ''] ] + PublicElasticIPPresent: !Not [ !Equals [!Ref PublicElasticIP, ''] ] + RecordingStorageIsS3: !Equals [ !Ref Recording, 's3' ] + CreateS3Bucket: !And + - !Equals [!Ref Recording, 's3' ] + - !Equals [!Ref S3RecordingsBucketName, ''] Rules: - ValidateParametersS3Local: + + RecordingValidation: RuleCondition: - Fn::Equals: [!Ref RecordingStorage, "local" ] + Fn::Equals: [!Ref Recording, 'disabled' ] Assertions: - - AssertDescription: If Recording Storage is 'local', you don't need to define an S3 bucket + - AssertDescription: If recording Storage is 'disabled', you don't need to specify a S3 bucket. Assert: - Fn::Equals: [!Ref S3RecordingsBucketName, ""] + Fn::Equals: [ !Ref S3RecordingsBucketName, "" ] Resources: @@ -353,9 +362,9 @@ Resources: Resource: - Fn::If: # Get bucket name depending if the user defines a bucket name or not - - S3RecordingsBucketNamePresent - - !Join [ "", [ 'arn:aws:s3:::', !Ref S3RecordingsBucketName, '/*'] ] + - CreateS3Bucket - !Join [ "", [ 'arn:aws:s3:::', !Ref AWS::StackName, '-recordings', '/*'] ] + - !Join [ "", [ 'arn:aws:s3:::', !Ref S3RecordingsBucketName, '/*'] ] - Ref: AWS::NoValue - Fn::If: # Only apply this policy if S3 is configured @@ -366,9 +375,9 @@ Resources: Resource: - Fn::If: # Get bucket name depending if the user defines a bucket name or not - - S3RecordingsBucketNamePresent - - !Join [ "", [ 'arn:aws:s3:::', !Ref S3RecordingsBucketName ] ] + - CreateS3Bucket - !Join [ "", [ 'arn:aws:s3:::', !Ref AWS::StackName, '-recordings' ] ] + - !Join [ "", [ 'arn:aws:s3:::', !Ref S3RecordingsBucketName ] ] - Ref: AWS::NoValue - Fn::If: # Only apply this policy if S3 is configured @@ -393,7 +402,7 @@ Resources: S3bucket: Type: 'AWS::S3::Bucket' Properties: - BucketName: !Join [ "", [ !Ref 'AWS::StackName', '-recordings' ] ] + BucketName: !Join ["" , [ !Ref AWS::StackName, '-recordings' ] ] AccessControl: Private PublicAccessBlockConfiguration: BlockPublicAcls: true @@ -486,8 +495,9 @@ Resources: fi # S3 Configuration - if [ "${RecordingStorage}" == "s3" ]; then - sed -i "s/#OPENVIDU_PRO_RECORDING_STORAGE=/OPENVIDU_PRO_RECORDING_STORAGE=s3/" $WORKINGDIR/.env + if [ "${Recording}" != "disabled" ]; then + sed -i "s/OPENVIDU_RECORDING=false/OPENVIDU_RECORDING=true/" $WORKINGDIR/.env + sed -i "s/#OPENVIDU_PRO_RECORDING_STORAGE=/OPENVIDU_PRO_RECORDING_STORAGE=${Recording}/" $WORKINGDIR/.env if [ ! -z "${S3RecordingsBucketName}" ]; then sed -i "s/#OPENVIDU_PRO_AWS_S3_BUCKET=/OPENVIDU_PRO_AWS_S3_BUCKET=${S3RecordingsBucketName}/" $WORKINGDIR/.env else @@ -495,7 +505,7 @@ Resources: fi fi - kmsAmi: !FindInMap [KMSAMIMAP, !Ref 'AWS::Region', AMI] - s3BucketName: !Join [ "", [ !Ref 'AWS::StackName', '-recordings' ] ] + s3BucketName: !Join ["", [ !Ref AWS::StackName, '-recordings' ] ] mode: "000755" owner: "root" group: "root" diff --git a/openvidu-server/deployments/pro/docker-compose/openvidu-server-pro/.env b/openvidu-server/deployments/pro/docker-compose/openvidu-server-pro/.env index 3cb782ae..912e59d2 100644 --- a/openvidu-server/deployments/pro/docker-compose/openvidu-server-pro/.env +++ b/openvidu-server/deployments/pro/docker-compose/openvidu-server-pro/.env @@ -132,12 +132,6 @@ OPENVIDU_PRO_CLUSTER_LOAD_STRATEGY=streams # For example 192.168.1.101 # OPENVIDU_PRO_PRIVATE_IP= -# Whether to enable recording module or not -OPENVIDU_RECORDING=false - -# Use recording module with debug mode. -OPENVIDU_RECORDING_DEBUG=false - # Where to store recording files. Can be “local” (local storage) or “s3” (AWS bucket). # You will need to define a OPENVIDU_PRO_AWS_S3_BUCKET if you use it. #OPENVIDU_PRO_RECORDING_STORAGE= @@ -166,6 +160,12 @@ OPENVIDU_RECORDING_DEBUG=false # This property is only taken into account if OPENVIDU_PRO_RECORDING_STORAGE=s3 # OPENVIDU_PRO_AWS_REGION= +# Whether to enable recording module or not +OPENVIDU_RECORDING=false + +# Use recording module with debug mode. +OPENVIDU_RECORDING_DEBUG=false + # Openvidu Folder Record used for save the openvidu recording videos. Change it # with the folder you want to use from your host. OPENVIDU_RECORDING_PATH=/opt/openvidu/recordings