

# UpdateMediaStorageConfiguration
<a name="API_UpdateMediaStorageConfiguration"></a>

Associates a `SignalingChannel` to a stream to store the media. There are two signaling modes that you can specify :
+ If `StorageStatus` is enabled, the data will be stored in the `StreamARN` provided. In order for WebRTC Ingestion to work, the stream must have data retention enabled.
+ If `StorageStatus` is disabled, no data will be stored, and the `StreamARN` parameter will not be needed. 

**Important**  
If `StorageStatus` is enabled, direct peer-to-peer (master-viewer) connections no longer occur. Peers connect directly to the storage session. You must call the `JoinStorageSession` API to trigger an SDP offer send and establish a connection between a peer and the storage session. 

## Request Syntax
<a name="API_UpdateMediaStorageConfiguration_RequestSyntax"></a>

```
POST /updateMediaStorageConfiguration HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "MediaStorageConfiguration": { 
      "Status": "string",
      "StreamARN": "string"
   }
}
```

## URI Request Parameters
<a name="API_UpdateMediaStorageConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UpdateMediaStorageConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_UpdateMediaStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateMediaStorageConfiguration-request-ChannelARN"></a>
The Amazon Resource Name (ARN) of the channel.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [MediaStorageConfiguration](#API_UpdateMediaStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateMediaStorageConfiguration-request-MediaStorageConfiguration"></a>
A structure that encapsulates, or contains, the media storage configuration properties.  
Type: [MediaStorageConfiguration](API_MediaStorageConfiguration.md) object  
Required: Yes

## Response Syntax
<a name="API_UpdateMediaStorageConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UpdateMediaStorageConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UpdateMediaStorageConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
The Stream data retention in hours is equal to zero.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_UpdateMediaStorageConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 