/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include namespace Aws { namespace EFS { namespace Model { /** */ class AWS_EFS_API CreateFileSystemRequest : public EFSRequest { public: CreateFileSystemRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateFileSystem"; } Aws::String SerializePayload() const override; /** *

A string of up to 64 ASCII characters. Amazon EFS uses this to ensure * idempotent creation.

*/ inline const Aws::String& GetCreationToken() const{ return m_creationToken; } /** *

A string of up to 64 ASCII characters. Amazon EFS uses this to ensure * idempotent creation.

*/ inline bool CreationTokenHasBeenSet() const { return m_creationTokenHasBeenSet; } /** *

A string of up to 64 ASCII characters. Amazon EFS uses this to ensure * idempotent creation.

*/ inline void SetCreationToken(const Aws::String& value) { m_creationTokenHasBeenSet = true; m_creationToken = value; } /** *

A string of up to 64 ASCII characters. Amazon EFS uses this to ensure * idempotent creation.

*/ inline void SetCreationToken(Aws::String&& value) { m_creationTokenHasBeenSet = true; m_creationToken = std::move(value); } /** *

A string of up to 64 ASCII characters. Amazon EFS uses this to ensure * idempotent creation.

*/ inline void SetCreationToken(const char* value) { m_creationTokenHasBeenSet = true; m_creationToken.assign(value); } /** *

A string of up to 64 ASCII characters. Amazon EFS uses this to ensure * idempotent creation.

*/ inline CreateFileSystemRequest& WithCreationToken(const Aws::String& value) { SetCreationToken(value); return *this;} /** *

A string of up to 64 ASCII characters. Amazon EFS uses this to ensure * idempotent creation.

*/ inline CreateFileSystemRequest& WithCreationToken(Aws::String&& value) { SetCreationToken(std::move(value)); return *this;} /** *

A string of up to 64 ASCII characters. Amazon EFS uses this to ensure * idempotent creation.

*/ inline CreateFileSystemRequest& WithCreationToken(const char* value) { SetCreationToken(value); return *this;} /** *

The performance mode of the file system. We recommend * generalPurpose performance mode for most file systems. File systems * using the maxIO performance mode can scale to higher levels of * aggregate throughput and operations per second with a tradeoff of slightly * higher latencies for most file operations. The performance mode can't be changed * after the file system has been created.

*/ inline const PerformanceMode& GetPerformanceMode() const{ return m_performanceMode; } /** *

The performance mode of the file system. We recommend * generalPurpose performance mode for most file systems. File systems * using the maxIO performance mode can scale to higher levels of * aggregate throughput and operations per second with a tradeoff of slightly * higher latencies for most file operations. The performance mode can't be changed * after the file system has been created.

*/ inline bool PerformanceModeHasBeenSet() const { return m_performanceModeHasBeenSet; } /** *

The performance mode of the file system. We recommend * generalPurpose performance mode for most file systems. File systems * using the maxIO performance mode can scale to higher levels of * aggregate throughput and operations per second with a tradeoff of slightly * higher latencies for most file operations. The performance mode can't be changed * after the file system has been created.

*/ inline void SetPerformanceMode(const PerformanceMode& value) { m_performanceModeHasBeenSet = true; m_performanceMode = value; } /** *

The performance mode of the file system. We recommend * generalPurpose performance mode for most file systems. File systems * using the maxIO performance mode can scale to higher levels of * aggregate throughput and operations per second with a tradeoff of slightly * higher latencies for most file operations. The performance mode can't be changed * after the file system has been created.

*/ inline void SetPerformanceMode(PerformanceMode&& value) { m_performanceModeHasBeenSet = true; m_performanceMode = std::move(value); } /** *

The performance mode of the file system. We recommend * generalPurpose performance mode for most file systems. File systems * using the maxIO performance mode can scale to higher levels of * aggregate throughput and operations per second with a tradeoff of slightly * higher latencies for most file operations. The performance mode can't be changed * after the file system has been created.

*/ inline CreateFileSystemRequest& WithPerformanceMode(const PerformanceMode& value) { SetPerformanceMode(value); return *this;} /** *

The performance mode of the file system. We recommend * generalPurpose performance mode for most file systems. File systems * using the maxIO performance mode can scale to higher levels of * aggregate throughput and operations per second with a tradeoff of slightly * higher latencies for most file operations. The performance mode can't be changed * after the file system has been created.

*/ inline CreateFileSystemRequest& WithPerformanceMode(PerformanceMode&& value) { SetPerformanceMode(std::move(value)); return *this;} /** *

A Boolean value that, if true, creates an encrypted file system. When * creating an encrypted file system, you have the option of specifying * CreateFileSystemRequest$KmsKeyId for an existing AWS Key Management * Service (AWS KMS) customer master key (CMK). If you don't specify a CMK, then * the default CMK for Amazon EFS, /aws/elasticfilesystem, is used to * protect the encrypted file system.

*/ inline bool GetEncrypted() const{ return m_encrypted; } /** *

A Boolean value that, if true, creates an encrypted file system. When * creating an encrypted file system, you have the option of specifying * CreateFileSystemRequest$KmsKeyId for an existing AWS Key Management * Service (AWS KMS) customer master key (CMK). If you don't specify a CMK, then * the default CMK for Amazon EFS, /aws/elasticfilesystem, is used to * protect the encrypted file system.

*/ inline bool EncryptedHasBeenSet() const { return m_encryptedHasBeenSet; } /** *

A Boolean value that, if true, creates an encrypted file system. When * creating an encrypted file system, you have the option of specifying * CreateFileSystemRequest$KmsKeyId for an existing AWS Key Management * Service (AWS KMS) customer master key (CMK). If you don't specify a CMK, then * the default CMK for Amazon EFS, /aws/elasticfilesystem, is used to * protect the encrypted file system.

*/ inline void SetEncrypted(bool value) { m_encryptedHasBeenSet = true; m_encrypted = value; } /** *

A Boolean value that, if true, creates an encrypted file system. When * creating an encrypted file system, you have the option of specifying * CreateFileSystemRequest$KmsKeyId for an existing AWS Key Management * Service (AWS KMS) customer master key (CMK). If you don't specify a CMK, then * the default CMK for Amazon EFS, /aws/elasticfilesystem, is used to * protect the encrypted file system.

*/ inline CreateFileSystemRequest& WithEncrypted(bool value) { SetEncrypted(value); return *this;} /** *

The ID of the AWS KMS CMK to be used to protect the encrypted file system. * This parameter is only required if you want to use a nondefault CMK. If this * parameter is not specified, the default CMK for Amazon EFS is used. This ID can * be in one of the following formats:

  • Key ID - A unique * identifier of the key, for example * 1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN - An * Amazon Resource Name (ARN) for the key, for example * arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    *
  • Key alias - A previously created display name for a key, for * example alias/projectKey1.

  • Key alias ARN - An ARN * for a key alias, for example * arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

  • *

If KmsKeyId is specified, the * CreateFileSystemRequest$Encrypted parameter must be set to true.

*

EFS accepts only symmetric CMKs. You cannot use asymmetric CMKs * with EFS file systems.

*/ inline const Aws::String& GetKmsKeyId() const{ return m_kmsKeyId; } /** *

The ID of the AWS KMS CMK to be used to protect the encrypted file system. * This parameter is only required if you want to use a nondefault CMK. If this * parameter is not specified, the default CMK for Amazon EFS is used. This ID can * be in one of the following formats:

  • Key ID - A unique * identifier of the key, for example * 1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN - An * Amazon Resource Name (ARN) for the key, for example * arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    *
  • Key alias - A previously created display name for a key, for * example alias/projectKey1.

  • Key alias ARN - An ARN * for a key alias, for example * arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

  • *

If KmsKeyId is specified, the * CreateFileSystemRequest$Encrypted parameter must be set to true.

*

EFS accepts only symmetric CMKs. You cannot use asymmetric CMKs * with EFS file systems.

*/ inline bool KmsKeyIdHasBeenSet() const { return m_kmsKeyIdHasBeenSet; } /** *

The ID of the AWS KMS CMK to be used to protect the encrypted file system. * This parameter is only required if you want to use a nondefault CMK. If this * parameter is not specified, the default CMK for Amazon EFS is used. This ID can * be in one of the following formats:

  • Key ID - A unique * identifier of the key, for example * 1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN - An * Amazon Resource Name (ARN) for the key, for example * arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    *
  • Key alias - A previously created display name for a key, for * example alias/projectKey1.

  • Key alias ARN - An ARN * for a key alias, for example * arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

  • *

If KmsKeyId is specified, the * CreateFileSystemRequest$Encrypted parameter must be set to true.

*

EFS accepts only symmetric CMKs. You cannot use asymmetric CMKs * with EFS file systems.

*/ inline void SetKmsKeyId(const Aws::String& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = value; } /** *

The ID of the AWS KMS CMK to be used to protect the encrypted file system. * This parameter is only required if you want to use a nondefault CMK. If this * parameter is not specified, the default CMK for Amazon EFS is used. This ID can * be in one of the following formats:

  • Key ID - A unique * identifier of the key, for example * 1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN - An * Amazon Resource Name (ARN) for the key, for example * arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    *
  • Key alias - A previously created display name for a key, for * example alias/projectKey1.

  • Key alias ARN - An ARN * for a key alias, for example * arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

  • *

If KmsKeyId is specified, the * CreateFileSystemRequest$Encrypted parameter must be set to true.

*

EFS accepts only symmetric CMKs. You cannot use asymmetric CMKs * with EFS file systems.

*/ inline void SetKmsKeyId(Aws::String&& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = std::move(value); } /** *

The ID of the AWS KMS CMK to be used to protect the encrypted file system. * This parameter is only required if you want to use a nondefault CMK. If this * parameter is not specified, the default CMK for Amazon EFS is used. This ID can * be in one of the following formats:

  • Key ID - A unique * identifier of the key, for example * 1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN - An * Amazon Resource Name (ARN) for the key, for example * arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    *
  • Key alias - A previously created display name for a key, for * example alias/projectKey1.

  • Key alias ARN - An ARN * for a key alias, for example * arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

  • *

If KmsKeyId is specified, the * CreateFileSystemRequest$Encrypted parameter must be set to true.

*

EFS accepts only symmetric CMKs. You cannot use asymmetric CMKs * with EFS file systems.

*/ inline void SetKmsKeyId(const char* value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId.assign(value); } /** *

The ID of the AWS KMS CMK to be used to protect the encrypted file system. * This parameter is only required if you want to use a nondefault CMK. If this * parameter is not specified, the default CMK for Amazon EFS is used. This ID can * be in one of the following formats:

  • Key ID - A unique * identifier of the key, for example * 1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN - An * Amazon Resource Name (ARN) for the key, for example * arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    *
  • Key alias - A previously created display name for a key, for * example alias/projectKey1.

  • Key alias ARN - An ARN * for a key alias, for example * arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

  • *

If KmsKeyId is specified, the * CreateFileSystemRequest$Encrypted parameter must be set to true.

*

EFS accepts only symmetric CMKs. You cannot use asymmetric CMKs * with EFS file systems.

*/ inline CreateFileSystemRequest& WithKmsKeyId(const Aws::String& value) { SetKmsKeyId(value); return *this;} /** *

The ID of the AWS KMS CMK to be used to protect the encrypted file system. * This parameter is only required if you want to use a nondefault CMK. If this * parameter is not specified, the default CMK for Amazon EFS is used. This ID can * be in one of the following formats:

  • Key ID - A unique * identifier of the key, for example * 1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN - An * Amazon Resource Name (ARN) for the key, for example * arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    *
  • Key alias - A previously created display name for a key, for * example alias/projectKey1.

  • Key alias ARN - An ARN * for a key alias, for example * arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

  • *

If KmsKeyId is specified, the * CreateFileSystemRequest$Encrypted parameter must be set to true.

*

EFS accepts only symmetric CMKs. You cannot use asymmetric CMKs * with EFS file systems.

*/ inline CreateFileSystemRequest& WithKmsKeyId(Aws::String&& value) { SetKmsKeyId(std::move(value)); return *this;} /** *

The ID of the AWS KMS CMK to be used to protect the encrypted file system. * This parameter is only required if you want to use a nondefault CMK. If this * parameter is not specified, the default CMK for Amazon EFS is used. This ID can * be in one of the following formats:

  • Key ID - A unique * identifier of the key, for example * 1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN - An * Amazon Resource Name (ARN) for the key, for example * arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    *
  • Key alias - A previously created display name for a key, for * example alias/projectKey1.

  • Key alias ARN - An ARN * for a key alias, for example * arn:aws:kms:us-west-2:444455556666:alias/projectKey1.

  • *

If KmsKeyId is specified, the * CreateFileSystemRequest$Encrypted parameter must be set to true.

*

EFS accepts only symmetric CMKs. You cannot use asymmetric CMKs * with EFS file systems.

*/ inline CreateFileSystemRequest& WithKmsKeyId(const char* value) { SetKmsKeyId(value); return *this;} /** *

The throughput mode for the file system to be created. There are two * throughput modes to choose from for your file system: bursting and * provisioned. If you set ThroughputMode to * provisioned, you must also set a value for * ProvisionedThroughPutInMibps. You can decrease your file system's * throughput in Provisioned Throughput mode or change between the throughput modes * as long as it’s been more than 24 hours since the last decrease or throughput * mode change. For more, see Specifying * Throughput with Provisioned Mode in the Amazon EFS User Guide.

*/ inline const ThroughputMode& GetThroughputMode() const{ return m_throughputMode; } /** *

The throughput mode for the file system to be created. There are two * throughput modes to choose from for your file system: bursting and * provisioned. If you set ThroughputMode to * provisioned, you must also set a value for * ProvisionedThroughPutInMibps. You can decrease your file system's * throughput in Provisioned Throughput mode or change between the throughput modes * as long as it’s been more than 24 hours since the last decrease or throughput * mode change. For more, see Specifying * Throughput with Provisioned Mode in the Amazon EFS User Guide.

*/ inline bool ThroughputModeHasBeenSet() const { return m_throughputModeHasBeenSet; } /** *

The throughput mode for the file system to be created. There are two * throughput modes to choose from for your file system: bursting and * provisioned. If you set ThroughputMode to * provisioned, you must also set a value for * ProvisionedThroughPutInMibps. You can decrease your file system's * throughput in Provisioned Throughput mode or change between the throughput modes * as long as it’s been more than 24 hours since the last decrease or throughput * mode change. For more, see Specifying * Throughput with Provisioned Mode in the Amazon EFS User Guide.

*/ inline void SetThroughputMode(const ThroughputMode& value) { m_throughputModeHasBeenSet = true; m_throughputMode = value; } /** *

The throughput mode for the file system to be created. There are two * throughput modes to choose from for your file system: bursting and * provisioned. If you set ThroughputMode to * provisioned, you must also set a value for * ProvisionedThroughPutInMibps. You can decrease your file system's * throughput in Provisioned Throughput mode or change between the throughput modes * as long as it’s been more than 24 hours since the last decrease or throughput * mode change. For more, see Specifying * Throughput with Provisioned Mode in the Amazon EFS User Guide.

*/ inline void SetThroughputMode(ThroughputMode&& value) { m_throughputModeHasBeenSet = true; m_throughputMode = std::move(value); } /** *

The throughput mode for the file system to be created. There are two * throughput modes to choose from for your file system: bursting and * provisioned. If you set ThroughputMode to * provisioned, you must also set a value for * ProvisionedThroughPutInMibps. You can decrease your file system's * throughput in Provisioned Throughput mode or change between the throughput modes * as long as it’s been more than 24 hours since the last decrease or throughput * mode change. For more, see Specifying * Throughput with Provisioned Mode in the Amazon EFS User Guide.

*/ inline CreateFileSystemRequest& WithThroughputMode(const ThroughputMode& value) { SetThroughputMode(value); return *this;} /** *

The throughput mode for the file system to be created. There are two * throughput modes to choose from for your file system: bursting and * provisioned. If you set ThroughputMode to * provisioned, you must also set a value for * ProvisionedThroughPutInMibps. You can decrease your file system's * throughput in Provisioned Throughput mode or change between the throughput modes * as long as it’s been more than 24 hours since the last decrease or throughput * mode change. For more, see Specifying * Throughput with Provisioned Mode in the Amazon EFS User Guide.

*/ inline CreateFileSystemRequest& WithThroughputMode(ThroughputMode&& value) { SetThroughputMode(std::move(value)); return *this;} /** *

The throughput, measured in MiB/s, that you want to provision for a file * system that you're creating. Valid values are 1-1024. Required if * ThroughputMode is set to provisioned. The upper limit * for throughput is 1024 MiB/s. You can get this limit increased by contacting AWS * Support. For more information, see Amazon * EFS Limits That You Can Increase in the Amazon EFS User Guide.

*/ inline double GetProvisionedThroughputInMibps() const{ return m_provisionedThroughputInMibps; } /** *

The throughput, measured in MiB/s, that you want to provision for a file * system that you're creating. Valid values are 1-1024. Required if * ThroughputMode is set to provisioned. The upper limit * for throughput is 1024 MiB/s. You can get this limit increased by contacting AWS * Support. For more information, see Amazon * EFS Limits That You Can Increase in the Amazon EFS User Guide.

*/ inline bool ProvisionedThroughputInMibpsHasBeenSet() const { return m_provisionedThroughputInMibpsHasBeenSet; } /** *

The throughput, measured in MiB/s, that you want to provision for a file * system that you're creating. Valid values are 1-1024. Required if * ThroughputMode is set to provisioned. The upper limit * for throughput is 1024 MiB/s. You can get this limit increased by contacting AWS * Support. For more information, see Amazon * EFS Limits That You Can Increase in the Amazon EFS User Guide.

*/ inline void SetProvisionedThroughputInMibps(double value) { m_provisionedThroughputInMibpsHasBeenSet = true; m_provisionedThroughputInMibps = value; } /** *

The throughput, measured in MiB/s, that you want to provision for a file * system that you're creating. Valid values are 1-1024. Required if * ThroughputMode is set to provisioned. The upper limit * for throughput is 1024 MiB/s. You can get this limit increased by contacting AWS * Support. For more information, see Amazon * EFS Limits That You Can Increase in the Amazon EFS User Guide.

*/ inline CreateFileSystemRequest& WithProvisionedThroughputInMibps(double value) { SetProvisionedThroughputInMibps(value); return *this;} /** *

A value that specifies to create one or more tags associated with the file * system. Each tag is a user-defined key-value pair. Name your file system on * creation by including a "Key":"Name","Value":"{value}" key-value * pair.

*/ inline const Aws::Vector& GetTags() const{ return m_tags; } /** *

A value that specifies to create one or more tags associated with the file * system. Each tag is a user-defined key-value pair. Name your file system on * creation by including a "Key":"Name","Value":"{value}" key-value * pair.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

A value that specifies to create one or more tags associated with the file * system. Each tag is a user-defined key-value pair. Name your file system on * creation by including a "Key":"Name","Value":"{value}" key-value * pair.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

A value that specifies to create one or more tags associated with the file * system. Each tag is a user-defined key-value pair. Name your file system on * creation by including a "Key":"Name","Value":"{value}" key-value * pair.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

A value that specifies to create one or more tags associated with the file * system. Each tag is a user-defined key-value pair. Name your file system on * creation by including a "Key":"Name","Value":"{value}" key-value * pair.

*/ inline CreateFileSystemRequest& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

A value that specifies to create one or more tags associated with the file * system. Each tag is a user-defined key-value pair. Name your file system on * creation by including a "Key":"Name","Value":"{value}" key-value * pair.

*/ inline CreateFileSystemRequest& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

A value that specifies to create one or more tags associated with the file * system. Each tag is a user-defined key-value pair. Name your file system on * creation by including a "Key":"Name","Value":"{value}" key-value * pair.

*/ inline CreateFileSystemRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

A value that specifies to create one or more tags associated with the file * system. Each tag is a user-defined key-value pair. Name your file system on * creation by including a "Key":"Name","Value":"{value}" key-value * pair.

*/ inline CreateFileSystemRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } private: Aws::String m_creationToken; bool m_creationTokenHasBeenSet; PerformanceMode m_performanceMode; bool m_performanceModeHasBeenSet; bool m_encrypted; bool m_encryptedHasBeenSet; Aws::String m_kmsKeyId; bool m_kmsKeyIdHasBeenSet; ThroughputMode m_throughputMode; bool m_throughputModeHasBeenSet; double m_provisionedThroughputInMibps; bool m_provisionedThroughputInMibpsHasBeenSet; Aws::Vector m_tags; bool m_tagsHasBeenSet; }; } // namespace Model } // namespace EFS } // namespace Aws