diff --git a/docs/data-sources/object_storage_access_key.md b/docs/data-sources/object_storage_access_key.md
new file mode 100644
index 0000000..7a796d1
--- /dev/null
+++ b/docs/data-sources/object_storage_access_key.md
@@ -0,0 +1,34 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_access_key Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_access_key (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String)
+
+### Read-Only
+
+- `credentials` (List of Object) (see [below for nested schema](#nestedatt--credentials))
+- `id` (String) The ID of this resource.
+
+
+### Nested Schema for `credentials`
+
+Read-Only:
+
+- `access_key` (String)
+- `active` (Boolean)
diff --git a/docs/data-sources/object_storage_bucket.md b/docs/data-sources/object_storage_bucket.md
new file mode 100644
index 0000000..9d5067e
--- /dev/null
+++ b/docs/data-sources/object_storage_bucket.md
@@ -0,0 +1,43 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `page` (Number) Page number
+- `page_size` (Number) Number of items per page
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `list_bucket_result` (List of Object) (see [below for nested schema](#nestedatt--list_bucket_result))
+
+
+### Nested Schema for `list_bucket_result`
+
+Read-Only:
+
+- `bucket_name` (String)
+- `creation_date` (String)
+- `endpoint` (String)
+- `is_empty` (Boolean)
+- `is_enabled_logging` (Boolean)
+- `s3_service_id` (String)
diff --git a/docs/data-sources/object_storage_bucket_acl.md b/docs/data-sources/object_storage_bucket_acl.md
new file mode 100644
index 0000000..c223955
--- /dev/null
+++ b/docs/data-sources/object_storage_bucket_acl.md
@@ -0,0 +1,64 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_acl Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_acl (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket to config the ACL
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Read-Only
+
+- `bucket_acl` (List of Object) (see [below for nested schema](#nestedatt--bucket_acl))
+- `canned_acl` (String) The Access Control List (ACL) status of the bucket which can be one of the following values: private, public-read, default is private
+- `id` (String) The ID of this resource.
+- `status` (Boolean) The status after configuring the bucket ACL
+
+
+### Nested Schema for `bucket_acl`
+
+Read-Only:
+
+- `grants` (List of Object) (see [below for nested schema](#nestedobjatt--bucket_acl--grants))
+- `owner` (List of Object) (see [below for nested schema](#nestedobjatt--bucket_acl--owner))
+
+
+### Nested Schema for `bucket_acl.grants`
+
+Read-Only:
+
+- `grantee` (List of Object) (see [below for nested schema](#nestedobjatt--bucket_acl--grants--grantee))
+- `permission` (String)
+
+
+### Nested Schema for `bucket_acl.grants.grantee`
+
+Read-Only:
+
+- `display_name` (String)
+- `id` (String)
+- `type` (String)
+
+
+
+
+### Nested Schema for `bucket_acl.owner`
+
+Read-Only:
+
+- `display_name` (String)
+- `id` (String)
diff --git a/docs/data-sources/object_storage_bucket_cors.md b/docs/data-sources/object_storage_bucket_cors.md
new file mode 100644
index 0000000..ed9c22d
--- /dev/null
+++ b/docs/data-sources/object_storage_bucket_cors.md
@@ -0,0 +1,44 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_cors Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_cors (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `page` (Number) The page number
+- `page_size` (Number) The number of items to return in each page
+
+### Read-Only
+
+- `cors_rule` (List of Object) The bucket cors rule (see [below for nested schema](#nestedatt--cors_rule))
+- `id` (String) The ID of this resource.
+
+
+### Nested Schema for `cors_rule`
+
+Read-Only:
+
+- `allowed_headers` (List of String)
+- `allowed_methods` (List of String)
+- `allowed_origins` (List of String)
+- `expose_headers` (List of String)
+- `id` (String)
+- `max_age_seconds` (Number)
diff --git a/docs/data-sources/object_storage_bucket_lifecycle.md b/docs/data-sources/object_storage_bucket_lifecycle.md
new file mode 100644
index 0000000..75ea227
--- /dev/null
+++ b/docs/data-sources/object_storage_bucket_lifecycle.md
@@ -0,0 +1,77 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_lifecycle Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_lifecycle (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket to fetch policy for
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `page` (Number) The page number
+- `page_size` (Number) The number of items to return in each page
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `life_cycle_rules` (List of Object) (see [below for nested schema](#nestedatt--life_cycle_rules))
+
+
+### Nested Schema for `life_cycle_rules`
+
+Read-Only:
+
+- `abort_incomplete_multipart_upload` (List of Object) (see [below for nested schema](#nestedobjatt--life_cycle_rules--abort_incomplete_multipart_upload))
+- `expiration` (List of Object) (see [below for nested schema](#nestedobjatt--life_cycle_rules--expiration))
+- `filter` (List of Object) (see [below for nested schema](#nestedobjatt--life_cycle_rules--filter))
+- `id` (String)
+- `noncurrent_version_expiration` (List of Object) (see [below for nested schema](#nestedobjatt--life_cycle_rules--noncurrent_version_expiration))
+- `prefix` (String)
+- `status` (String)
+
+
+### Nested Schema for `life_cycle_rules.abort_incomplete_multipart_upload`
+
+Read-Only:
+
+- `days_after_initiation` (Number)
+
+
+
+### Nested Schema for `life_cycle_rules.expiration`
+
+Read-Only:
+
+- `days` (Number)
+- `expired_object_delete_marker` (Boolean)
+
+
+
+### Nested Schema for `life_cycle_rules.filter`
+
+Read-Only:
+
+- `prefix` (String)
+
+
+
+### Nested Schema for `life_cycle_rules.noncurrent_version_expiration`
+
+Read-Only:
+
+- `noncurrent_days` (Number)
diff --git a/docs/data-sources/object_storage_bucket_policy.md b/docs/data-sources/object_storage_bucket_policy.md
new file mode 100644
index 0000000..8b8d7e3
--- /dev/null
+++ b/docs/data-sources/object_storage_bucket_policy.md
@@ -0,0 +1,27 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_policy Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_policy (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket to fetch policy for
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `policy` (String) The bucket policy in JSON format
diff --git a/docs/data-sources/object_storage_bucket_static_website.md b/docs/data-sources/object_storage_bucket_static_website.md
new file mode 100644
index 0000000..f6c58a8
--- /dev/null
+++ b/docs/data-sources/object_storage_bucket_static_website.md
@@ -0,0 +1,31 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_static_website Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_static_website (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket to fetch policy for
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `error_document_key` (String)
+- `index_document_suffix` (String)
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
diff --git a/docs/data-sources/object_storage_bucket_versioning.md b/docs/data-sources/object_storage_bucket_versioning.md
new file mode 100644
index 0000000..8c2e521
--- /dev/null
+++ b/docs/data-sources/object_storage_bucket_versioning.md
@@ -0,0 +1,30 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_versioning Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_versioning (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `versioning_status` (String) Status of the versioning, must be Enabled or Suspended
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
diff --git a/docs/data-sources/object_storage_sub_user.md b/docs/data-sources/object_storage_sub_user.md
new file mode 100644
index 0000000..6c90c02
--- /dev/null
+++ b/docs/data-sources/object_storage_sub_user.md
@@ -0,0 +1,41 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_sub_user Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_sub_user (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `page` (Number) Page number
+- `page_size` (Number) Number of items per page
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `list_sub_user` (List of Object) List of sub-users (see [below for nested schema](#nestedatt--list_sub_user))
+
+
+### Nested Schema for `list_sub_user`
+
+Read-Only:
+
+- `active` (Boolean)
+- `arn` (String)
+- `role` (String)
+- `user_id` (String)
diff --git a/docs/data-sources/object_storage_sub_user_detail.md b/docs/data-sources/object_storage_sub_user_detail.md
new file mode 100644
index 0000000..4905e8c
--- /dev/null
+++ b/docs/data-sources/object_storage_sub_user_detail.md
@@ -0,0 +1,30 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_sub_user_detail Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_sub_user_detail (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `vpc_id` (String) The VPC ID
+
+### Read-Only
+
+- `access_keys` (List of String) The sub-user's access keys
+- `active` (Boolean) Whether the sub-user is active
+- `arn` (String) The sub-user ARN
+- `created_at` (String) The sub-user's creation date
+- `id` (String) The ID of this resource.
+- `role` (String) The sub-user's role
+- `user_id` (String) The sub-user ID
diff --git a/docs/data-sources/s3_service_enable.md b/docs/data-sources/s3_service_enable.md
new file mode 100644
index 0000000..6c6c132
--- /dev/null
+++ b/docs/data-sources/s3_service_enable.md
@@ -0,0 +1,34 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_s3_service_enable Data Source - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_s3_service_enable (Data Source)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `vpc_id` (String) The ID of the VPC
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `s3_enable_services` (List of Object) (see [below for nested schema](#nestedatt--s3_enable_services))
+
+
+### Nested Schema for `s3_enable_services`
+
+Read-Only:
+
+- `s3_platform` (String)
+- `s3_service_id` (String)
+- `s3_service_name` (String)
diff --git a/docs/resources/object_storage_access_key.md b/docs/resources/object_storage_access_key.md
new file mode 100644
index 0000000..432a658
--- /dev/null
+++ b/docs/resources/object_storage_access_key.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_access_key Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_access_key (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `access_key_id` (String) The access key ID
+- `message` (String) The message after creating the access key
+- `status` (Boolean) The status after creating the access key
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `secret_access_key` (String) The secret access key
diff --git a/docs/resources/object_storage_bucket.md b/docs/resources/object_storage_bucket.md
new file mode 100644
index 0000000..a103f5f
--- /dev/null
+++ b/docs/resources/object_storage_bucket.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `name` (String) The name of the bucket. Bucket names must be unique within an account.
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String)
+
+### Optional
+
+- `acl` (String)
+- `versioning` (String) The versioning state of the bucket. Accepted values are Enabled or Suspended, default was not set.
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `status` (Boolean) The status after create or delete the bucket
diff --git a/docs/resources/object_storage_bucket_acl.md b/docs/resources/object_storage_bucket_acl.md
new file mode 100644
index 0000000..09fa8a8
--- /dev/null
+++ b/docs/resources/object_storage_bucket_acl.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_acl Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_acl (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket to config the ACL
+- `canned_acl` (String) The Access Control List (ACL) status of the bucket which can be one of the following values: private, public-read, default is private
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `apply_objects` (Boolean) Apply the ACL to all objects in the bucket
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `status` (Boolean) The status after configuring the bucket ACL
diff --git a/docs/resources/object_storage_bucket_cors.md b/docs/resources/object_storage_bucket_cors.md
new file mode 100644
index 0000000..1a548e7
--- /dev/null
+++ b/docs/resources/object_storage_bucket_cors.md
@@ -0,0 +1,40 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_cors Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_cors (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `cors_config` (String) The bucket lifecycle rule in JSON format, support only one rule
+- `cors_config_file` (String) Path to the JSON file containing the bucket lifecycle rule, support only one rule
+
+### Read-Only
+
+- `bucket_cors_rules` (List of Object) (see [below for nested schema](#nestedatt--bucket_cors_rules))
+- `id` (String) The ID of this resource.
+- `status` (Boolean) Status after bucket cors rule is created
+
+
+### Nested Schema for `bucket_cors_rules`
+
+Read-Only:
+
+- `id` (String)
diff --git a/docs/resources/object_storage_bucket_lifecycle.md b/docs/resources/object_storage_bucket_lifecycle.md
new file mode 100644
index 0000000..0e23fad
--- /dev/null
+++ b/docs/resources/object_storage_bucket_lifecycle.md
@@ -0,0 +1,40 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_lifecycle Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_lifecycle (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `life_cycle_rule` (String) The bucket lifecycle rule in JSON format, support only one rule
+- `life_cycle_rule_file` (String) Path to the JSON file containing the bucket lifecycle rule, support only one rule
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `rules` (List of Object) (see [below for nested schema](#nestedatt--rules))
+- `state` (Boolean) State after bucket lifecycle rule is created
+
+
+### Nested Schema for `rules`
+
+Read-Only:
+
+- `id` (String)
diff --git a/docs/resources/object_storage_bucket_policy.md b/docs/resources/object_storage_bucket_policy.md
new file mode 100644
index 0000000..887794e
--- /dev/null
+++ b/docs/resources/object_storage_bucket_policy.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_policy Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_policy (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `policy` (String) The bucket policy in JSON format
+- `policy_file` (String) Path to the JSON file containing the bucket policy
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `status` (Boolean) Status after bucket policy is created
diff --git a/docs/resources/object_storage_bucket_static_website.md b/docs/resources/object_storage_bucket_static_website.md
new file mode 100644
index 0000000..249e255
--- /dev/null
+++ b/docs/resources/object_storage_bucket_static_website.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_static_website Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_static_website (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `vpc_id` (String) The VPC ID
+
+### Optional
+
+- `error_document_key` (String) The object key name to use when a 4XX class error occurs
+- `index_document_suffix` (String) Suffix that is appended to a request that is for a directory
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+- `status` (Boolean) The status after configuring the bucket website
diff --git a/docs/resources/object_storage_bucket_versioning.md b/docs/resources/object_storage_bucket_versioning.md
new file mode 100644
index 0000000..de6ad7e
--- /dev/null
+++ b/docs/resources/object_storage_bucket_versioning.md
@@ -0,0 +1,27 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_bucket_versioning Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_bucket_versioning (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `bucket_name` (String) Name of the bucket
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `versioning_status` (String) Status of the versioning, must be Enabled or Suspended
+- `vpc_id` (String) The VPC ID
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
diff --git a/docs/resources/object_storage_sub_user.md b/docs/resources/object_storage_sub_user.md
new file mode 100644
index 0000000..7195b41
--- /dev/null
+++ b/docs/resources/object_storage_sub_user.md
@@ -0,0 +1,27 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_sub_user Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_sub_user (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `role` (String)
+- `user_id` (String)
+- `vpc_id` (String)
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
diff --git a/docs/resources/object_storage_sub_user_key.md b/docs/resources/object_storage_sub_user_key.md
new file mode 100644
index 0000000..4829bc5
--- /dev/null
+++ b/docs/resources/object_storage_sub_user_key.md
@@ -0,0 +1,28 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "fptcloud_object_storage_sub_user_key Resource - terraform-provider-fptcloud"
+subcategory: ""
+description: |-
+
+---
+
+# fptcloud_object_storage_sub_user_key (Resource)
+
+
+
+
+
+
+## Schema
+
+### Required
+
+- `region_name` (String) The region name that's are the same with the region name in the S3 service. Currently, we have: HCM-01, HCM-02, HN-01, HN-02
+- `user_id` (String) The sub user id, can retrieve from data source `fptcloud_object_storage_sub_user`
+- `vpc_id` (String) The VPC id that the S3 service belongs to
+
+### Read-Only
+
+- `access_key` (String) The access key of the sub user
+- `id` (String) The ID of this resource.
+- `secret_key` (String) The secret key of the sub user