updateLocationObjectStorage method

Future<void> updateLocationObjectStorage({
  1. required String locationArn,
  2. String? accessKey,
  3. List<String>? agentArns,
  4. CmkSecretConfig? cmkSecretConfig,
  5. CustomSecretConfig? customSecretConfig,
  6. String? secretKey,
  7. Uint8List? serverCertificate,
  8. String? serverHostname,
  9. int? serverPort,
  10. ObjectStorageServerProtocol? serverProtocol,
  11. String? subdirectory,
})

Modifies the following configuration parameters of the object storage transfer location that you're using with DataSync.

For more information, see Configuring DataSync transfers with an object storage system.

May throw InternalException. May throw InvalidRequestException.

Parameter locationArn : Specifies the ARN of the object storage system location that you're updating.

Parameter accessKey : Specifies the access key (for example, a user name) if credentials are required to authenticate with the object storage server.

Parameter agentArns : (Optional) Specifies the Amazon Resource Names (ARNs) of the DataSync agents that can connect with your object storage system. If you are setting up an agentless cross-cloud transfer, you do not need to specify a value for this parameter.

Parameter cmkSecretConfig : Specifies configuration information for a DataSync-managed secret, such as an authentication token or set of credentials that DataSync uses to access a specific transfer location, and a customer-managed KMS key.

Parameter customSecretConfig : Specifies configuration information for a customer-managed secret, such as an authentication token or set of credentials that DataSync uses to access a specific transfer location, and a customer-managed Identity and Access Management (IAM) role that provides access to the secret.

Parameter secretKey : Specifies the secret key (for example, a password) if credentials are required to authenticate with the object storage server.

Parameter serverCertificate : Specifies a certificate chain for DataSync to authenticate with your object storage system if the system uses a private or self-signed certificate authority (CA). You must specify a single .pem file with a full certificate chain (for example, file:///home/user/.ssh/object_storage_certificates.pem).

The certificate chain might include:

  • The object storage system's certificate
  • All intermediate certificates (if there are any)
  • The root certificate of the signing CA
You can concatenate your certificates into a .pem file (which can be up to 32768 bytes before base64 encoding). The following example cat command creates an object_storage_certificates.pem file that includes three certificates:

cat object_server_certificate.pem intermediate_certificate.pem ca_root_certificate.pem > object_storage_certificates.pem

To use this parameter, configure ServerProtocol to HTTPS.

Updating this parameter doesn't interfere with tasks that you have in progress.

Parameter serverHostname : Specifies the domain name or IP address (IPv4 or IPv6) of the object storage server that your DataSync agent connects to.

Parameter serverPort : Specifies the port that your object storage server accepts inbound network traffic on (for example, port 443).

Parameter serverProtocol : Specifies the protocol that your object storage server uses to communicate.

Parameter subdirectory : Specifies the object prefix for your object storage server. If this is a source location, DataSync only copies objects with this prefix. If this is a destination location, DataSync writes all objects with this prefix.

Implementation

Future<void> updateLocationObjectStorage({
  required String locationArn,
  String? accessKey,
  List<String>? agentArns,
  CmkSecretConfig? cmkSecretConfig,
  CustomSecretConfig? customSecretConfig,
  String? secretKey,
  Uint8List? serverCertificate,
  String? serverHostname,
  int? serverPort,
  ObjectStorageServerProtocol? serverProtocol,
  String? subdirectory,
}) async {
  _s.validateNumRange(
    'serverPort',
    serverPort,
    1,
    65536,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'FmrsService.UpdateLocationObjectStorage'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'LocationArn': locationArn,
      if (accessKey != null) 'AccessKey': accessKey,
      if (agentArns != null) 'AgentArns': agentArns,
      if (cmkSecretConfig != null) 'CmkSecretConfig': cmkSecretConfig,
      if (customSecretConfig != null)
        'CustomSecretConfig': customSecretConfig,
      if (secretKey != null) 'SecretKey': secretKey,
      if (serverCertificate != null)
        'ServerCertificate': base64Encode(serverCertificate),
      if (serverHostname != null) 'ServerHostname': serverHostname,
      if (serverPort != null) 'ServerPort': serverPort,
      if (serverProtocol != null) 'ServerProtocol': serverProtocol.value,
      if (subdirectory != null) 'Subdirectory': subdirectory,
    },
  );
}