mirror of
https://github.com/minio/docs.git
synced 2025-04-18 10:04:02 +03:00
Initial Commit (not yet MVP 1.0)
This commit is contained in:
commit
aa832e1d2f
13
.gitignore
vendored
Normal file
13
.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
# Ignore build directory
|
||||
build
|
||||
|
||||
# Ignore venv
|
||||
venv
|
||||
|
||||
# Ignore vscode
|
||||
|
||||
.vscode
|
||||
|
||||
# ignore pycache
|
||||
|
||||
__pycache__
|
202
LICENSE
Normal file
202
LICENSE
Normal file
@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
20
Makefile
Normal file
20
Makefile
Normal file
@ -0,0 +1,20 @@
|
||||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line, and also
|
||||
# from the environment for the first two.
|
||||
SPHINXOPTS ?=
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
SOURCEDIR = source
|
||||
BUILDDIR = build
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
52
README.md
Normal file
52
README.md
Normal file
@ -0,0 +1,52 @@
|
||||
#Requirements
|
||||
|
||||
Python3 (any version should be fine, latest is ideal)
|
||||
|
||||
Suggest creating a virtual environment to keep things clean and simple:
|
||||
|
||||
Start by cloning the repository. `cd` into the cloned repo and `git checkout dev`. You might need to `git fetch` to refresh the repo.
|
||||
|
||||
Once in the repository root, run the following.
|
||||
|
||||
```shell
|
||||
|
||||
python3 -m venv venv
|
||||
|
||||
source venv/bin/activate
|
||||
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
To make the build, do:
|
||||
|
||||
```shell
|
||||
make html
|
||||
```
|
||||
|
||||
Artifacts output to the `build/` directory as HTML. Just open `index.html` to get started poking around.
|
||||
|
||||
If you modify things, I suggest doing clean builds to make sure all artifacts are fresh:
|
||||
|
||||
```shell
|
||||
rm -rf build/ && make html
|
||||
```
|
||||
|
||||
Still need to work out deployment steps, but this should work for testing locally.
|
||||
|
||||
The `source` directory contains all of the source files, including css and js.
|
||||
|
||||
The `sphinxext` directory contains some python stuff related to the custom directive/roles, and its a rats nest right now.
|
||||
|
||||
#TODO
|
||||
|
||||
- Finish the remainder of the `mc`, `mc admin`, and `minio` reference material
|
||||
- Refine structure of reference pages
|
||||
- Transition all MinIO Features from legacy documentation and format for RST
|
||||
- Flesh out Kubernetes section (pending operator/plugin work completion)
|
||||
- Flesh out introduction / concepts section
|
||||
- Re-write security docs
|
||||
- Create references for KES, Sidekick, MCS, Gateway
|
||||
- Transition cookbook material as needed
|
||||
- Flesh out Baremetal deployment section
|
||||
- Scan for any remaining legacy material that needs migration
|
||||
|
35
make.bat
Normal file
35
make.bat
Normal file
@ -0,0 +1,35 @@
|
||||
@ECHO OFF
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set SOURCEDIR=source
|
||||
set BUILDDIR=build
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
%SPHINXBUILD% >NUL 2>NUL
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.http://sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
goto end
|
||||
|
||||
:help
|
||||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
|
||||
:end
|
||||
popd
|
5
requirements.txt
Normal file
5
requirements.txt
Normal file
@ -0,0 +1,5 @@
|
||||
sphinx == 3.1.2
|
||||
sphinx-copybutton == 0.2.12
|
||||
git+https://github.com/ravindk89/sphinx-tabs
|
||||
recommonmark == 0.6.0
|
||||
sphinx-markdown-tables == 0.0.15
|
231
source/_static/css-style.css
Normal file
231
source/_static/css-style.css
Normal file
@ -0,0 +1,231 @@
|
||||
@font-face {
|
||||
font-family: "Mark";
|
||||
src: url("fonts/Mark-Regular.woff2") format("woff2"),
|
||||
url("fonts/Mark-Regular.woff") format("woff");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
:root {
|
||||
--table-border-color: #e6e6e6;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Mark, Helvetica, sans-serif;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
div.body {
|
||||
min-width: 500px;
|
||||
max-width: 600px;
|
||||
margin: 0 0 0 300px;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
div.body p {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.admonition {
|
||||
font-family: Mark, Helvetica, sans-serif;
|
||||
border-left: 5px solid #c72e49;
|
||||
}
|
||||
|
||||
div.admonition p.admonition-title {
|
||||
font-family: Mark, Helvetica, sans-serif;
|
||||
text-transform: uppercase;
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.body h1,
|
||||
div.body h2,
|
||||
div.body h3,
|
||||
div.body h4,
|
||||
div.body h5,
|
||||
div.body h6 {
|
||||
font-family: Mark, sans-serif;
|
||||
font-weight: normal;
|
||||
margin: 30px 0px 10px 0px;
|
||||
padding: 0;
|
||||
color: #c72e49;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
width: 300px;
|
||||
font-size: 80%;
|
||||
line-height: 1.5;
|
||||
box-shadow: 5px 5px 5px #e6e6e6;
|
||||
height: 100%;
|
||||
z-index: 1
|
||||
}
|
||||
|
||||
div.sphinxsidebar h3,
|
||||
div.sphinxsidebar h4 {
|
||||
font-family: Mark, sans-serif;
|
||||
font-size: 24px;
|
||||
font-weight: normal;
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
div.document {
|
||||
margin: 0 0 0 0;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
top: 75px;
|
||||
}
|
||||
|
||||
div.topic {
|
||||
background-color: #edf7f71A;
|
||||
}
|
||||
|
||||
div.localtoc {
|
||||
position: fixed;
|
||||
top: 75px;
|
||||
right: 0px;
|
||||
margin-right: 18px;
|
||||
min-width: 200px;
|
||||
max-width: 250px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.localtoc ul {
|
||||
list-style: none;
|
||||
margin: 0px 10px;
|
||||
}
|
||||
|
||||
div.localtoc ul li {
|
||||
padding: 2px 0px;
|
||||
transition: all 50ms ease-in-out;
|
||||
}
|
||||
|
||||
div.localtoc ul li.active {
|
||||
color: #c72e49;
|
||||
position: relative;
|
||||
border-left: 5px solid #c72e49;
|
||||
padding-left: 5px;
|
||||
margin-left: -10px;
|
||||
}
|
||||
|
||||
|
||||
div.body a {
|
||||
color: #c72e49;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.body :target {
|
||||
scroll-margin-top: 75px;
|
||||
}
|
||||
|
||||
div.body a.reference.internal code {
|
||||
color: #c72e49;
|
||||
}
|
||||
|
||||
div.sphinxsidebar a.current.reference.internal {
|
||||
color: #c72e49;
|
||||
font-weight: bold;
|
||||
position: relative;
|
||||
border-left: 5px solid #c72e49;
|
||||
padding-left: 5px;
|
||||
margin-left: -10px;
|
||||
|
||||
}
|
||||
|
||||
div.contents.local.topic a{
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar a.reference.internal {
|
||||
margin: 10px 0px 10px 0px;
|
||||
display: block;
|
||||
border-bottom: 0px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
img.logo {
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.body table.docutils {
|
||||
border-color: var(--table-border-color);
|
||||
}
|
||||
|
||||
div.body div.alert-info {
|
||||
|
||||
background-color:#c72e491a;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
border: 2px #c72e49 solid;
|
||||
border-radius: 10px;
|
||||
|
||||
}
|
||||
|
||||
div.body div.alert-info p {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.body table.docutils th {
|
||||
border-top: 1px solid var(--table-border-color);
|
||||
border-bottom: 1px solid var(--table-border-color);
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
div.body table.docutils td {
|
||||
border-top: 1px solid var(--table-border-color);
|
||||
border-bottom: 1px solid var(--table-border-color);
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
div.header {
|
||||
background-color: #01262e;
|
||||
height: 75px;
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
z-index: 2;
|
||||
top: 0px;
|
||||
}
|
||||
|
||||
div.header img.logo {
|
||||
height: 100%;
|
||||
padding-top: 28.5px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
div.header div.navbar {
|
||||
float: right;
|
||||
text-align: center;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
div.header img.logo {
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
div.footer {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
dl.minio {
|
||||
border-bottom: 1px solid #01262e2a;
|
||||
border-top: 1px solid #01262e2a;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
227
source/_static/docs-logo.svg
Normal file
227
source/_static/docs-logo.svg
Normal file
@ -0,0 +1,227 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="docs-logo.svg"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
id="svg8"
|
||||
version="1.1"
|
||||
viewBox="0 0 600 80"
|
||||
height="80"
|
||||
width="600">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
id="Glacier"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#edf7f7;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop924" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="Meridian"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#132742;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop918" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="Nautical"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#00303f;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop912" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="French_Raspberry"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#c72c48;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop847" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="Midnight"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#081c3a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop841" />
|
||||
</linearGradient>
|
||||
<rect
|
||||
x="200"
|
||||
y="650"
|
||||
width="150"
|
||||
height="50"
|
||||
id="rect837" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#Midnight"
|
||||
id="linearGradient851"
|
||||
x1="100"
|
||||
y1="675"
|
||||
x2="150"
|
||||
y2="675"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-50)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#Nautical"
|
||||
id="linearGradient916"
|
||||
x1="100"
|
||||
y1="675"
|
||||
x2="150"
|
||||
y2="675"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#Meridian"
|
||||
id="linearGradient922"
|
||||
x1="150"
|
||||
y1="675"
|
||||
x2="200"
|
||||
y2="675"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#Glacier"
|
||||
id="linearGradient928"
|
||||
x1="200"
|
||||
y1="675"
|
||||
x2="250"
|
||||
y2="675"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<style
|
||||
id="style1106">.cls-1{fill:#c72c48;}</style>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-x="5760"
|
||||
inkscape:window-height="2119"
|
||||
inkscape:window-width="1920"
|
||||
units="px"
|
||||
showgrid="true"
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:current-layer="g1133"
|
||||
inkscape:document-units="px"
|
||||
inkscape:cy="-116.65714"
|
||||
inkscape:cx="263.68744"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base">
|
||||
<inkscape:grid
|
||||
spacingy="10"
|
||||
spacingx="10"
|
||||
id="grid10"
|
||||
type="xygrid" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1">
|
||||
<rect
|
||||
style="fill:url(#French_Raspberry);fill-opacity:1"
|
||||
id="rect831"
|
||||
width="50"
|
||||
height="50"
|
||||
x="0"
|
||||
y="650" />
|
||||
<rect
|
||||
style="fill:url(#linearGradient851);fill-opacity:1"
|
||||
id="rect833"
|
||||
width="50"
|
||||
height="50"
|
||||
x="50"
|
||||
y="650" />
|
||||
<rect
|
||||
y="650"
|
||||
x="100"
|
||||
height="50"
|
||||
width="50"
|
||||
id="rect833-1"
|
||||
style="fill:url(#linearGradient916);fill-opacity:1" />
|
||||
<rect
|
||||
y="650"
|
||||
x="150"
|
||||
height="50"
|
||||
width="50"
|
||||
id="rect833-9"
|
||||
style="fill:url(#linearGradient922);fill-opacity:1" />
|
||||
<rect
|
||||
style="fill:url(#linearGradient928);fill-opacity:1"
|
||||
id="rect833-9-9"
|
||||
width="50"
|
||||
height="50"
|
||||
x="200"
|
||||
y="650" />
|
||||
<g
|
||||
transform="translate(-0.6,4.9)"
|
||||
id="g920">
|
||||
<path
|
||||
style="stroke-width:0.423287"
|
||||
class="st1"
|
||||
d="M 40.257704,15.543585 C 38.268257,12.24195 36.27881,8.9403151 34.247035,5.6810088 33.188819,3.9878627 32.130602,2.2947166 31.072386,0.60157047 30.9454,0.3899272 30.776085,0.22061259 30.649099,0.00896932 28.74431,-2.9117077 24.97706,-4.8588258 21.252138,-2.9963651 c -3.259306,1.5661602 -4.656152,5.502725 -3.089991,8.8043599 0,0.042329 0.04233,0.042329 0.04233,0.084657 0.63493,1.227531 1.693146,2.2857473 2.666705,3.3439636 3.005335,3.2169776 6.137655,6.3069696 9.100661,9.5239476 3.555607,3.809578 3.343963,9.777919 -0.465615,13.291197 -0.804245,0.761916 -1.777804,1.396845 -2.83602,1.820132 -0.08466,0 -0.126986,0 -0.211643,0 V 18.972206 C 21.167481,21.723568 16.384343,25.406161 12.40545,29.85067 6.1831378,36.792569 2.500545,45.469943 1.4,51.776912 l 10.116548,-5.164096 c 3.386292,-1.693146 6.730256,-3.386292 10.243534,-5.164095 v 28.91047 L 26.416234,75.1 V 38.909002 c 0,0 0.08466,-0.04233 0.465615,-0.253972 1.396846,-0.677259 2.793691,-1.439175 4.10588,-2.285748 6.26464,-4.40218 7.788472,-12.994896 3.386292,-19.259537 -0.423287,-0.592601 -0.846573,-1.142873 -1.354517,-1.650817 -3.47095,-3.640264 -6.984228,-7.2382 -10.412849,-10.8784641 -1.015887,-1.0582164 -0.973559,-2.4127333 0,-3.3439636 0.973559,-0.93123041 2.328076,-0.8465731 3.343964,0.2116432 l 1.439174,1.4815029 c 1.142874,1.2275309 2.285747,2.4550619 3.47095,3.6825928 2.920677,3.0899917 5.883682,6.1376548 8.804359,9.1853178 0.126986,0.169315 0.33863,0.296301 0.507944,0.423286 l 0.169315,-0.126985 c 0.08466,-0.169315 0,-0.380958 -0.08466,-0.550273 z M 21.887068,35.988324 c -0.04233,0.253972 -0.211643,0.465616 -0.423286,0.550273 -1.862461,0.973559 -3.724922,1.947118 -5.587383,2.920677 L 9.0614862,42.972552 C 12.024492,36.75024 16.426672,31.332173 21.844739,27.141636 c 0.04233,0.08466 0.08466,0.126986 0.08466,0.169315 0,2.878348 0,5.799025 -0.04233,8.677373 z"
|
||||
id="path908" />
|
||||
<g
|
||||
transform="matrix(3.2860646,0,0,3.2860646,66.04,-5.31)"
|
||||
id="g1133">
|
||||
<rect
|
||||
class="cls-1"
|
||||
x="52.75"
|
||||
y="0.41"
|
||||
width="9.1099997"
|
||||
height="23.629999"
|
||||
id="rect1112" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="m 41.71,0.74 -18.49,9.92 a 0.91,0.91 0 0 1 -0.85,0 L 3.88,0.74 A 2.78,2.78 0 0 0 2.56,0.41 v 0 A 2.41,2.41 0 0 0 0,2.64 V 24 H 9.1 V 13.84 a 0.93,0.93 0 0 1 1,-0.81 1,1 0 0 1 0.37,0.13 l 10.36,5.57 a 3.63,3.63 0 0 0 3.33,0 L 35.1,13.09 a 0.92,0.92 0 0 1 1.25,0.34 1,1 0 0 1 0.12,0.35 V 24 h 9.1 V 2.64 A 2.41,2.41 0 0 0 43.06,0.41 v 0 a 2.78,2.78 0 0 0 -1.35,0.33 z"
|
||||
id="path1114" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="M 107.28,0.41 H 98 V 11.17 A 0.93,0.93 0 0 1 97,12 1.26,1.26 0 0 1 96.67,11.9 L 72.76,0.68 A 2.73,2.73 0 0 0 71.57,0.41 v 0 A 2.41,2.41 0 0 0 69,2.64 V 24 h 9.16 V 13.27 a 0.91,0.91 0 0 1 1,-0.8 0.75,0.75 0 0 1 0.33,0.1 l 24,11.2 a 2.86,2.86 0 0 0 1.19,0.26 v 0 a 2.41,2.41 0 0 0 2.54,-2.23 z"
|
||||
id="path1116" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="M 114.44,24 V 0.41 h 4.19 V 24 Z"
|
||||
id="path1118" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="M 143.29,24.47 C 132,24.47 124,19.76 124,12.23 124,4.7 132.07,0 143.29,0 c 11.22,0 19.32,4.7 19.32,12.23 0,7.53 -7.9,12.24 -19.32,12.24 z m 0,-21.34 c -8.38,0 -14.84,3.22 -14.84,9.1 0,5.88 6.46,9.1 14.84,9.1 8.38,0 14.89,-3.17 14.89,-9.1 0,-5.93 -6.5,-9.1 -14.89,-9.1 z"
|
||||
id="path1120" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<style
|
||||
type="text/css"
|
||||
id="style902">
|
||||
.st0{fill:none;stroke:#CCCCCC;stroke-miterlimit:10;}
|
||||
.st1{fill:#C72C48;}
|
||||
</style>
|
||||
</svg>
|
After Width: | Height: | Size: 8.2 KiB |
BIN
source/_static/favicon.png
Normal file
BIN
source/_static/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
BIN
source/_static/fonts/Mark-Bold.dvi
Normal file
BIN
source/_static/fonts/Mark-Bold.dvi
Normal file
Binary file not shown.
BIN
source/_static/fonts/Mark-Bold.woff
Normal file
BIN
source/_static/fonts/Mark-Bold.woff
Normal file
Binary file not shown.
BIN
source/_static/fonts/Mark-Bold.woff2
Normal file
BIN
source/_static/fonts/Mark-Bold.woff2
Normal file
Binary file not shown.
BIN
source/_static/fonts/Mark-Medium.woff
Executable file
BIN
source/_static/fonts/Mark-Medium.woff
Executable file
Binary file not shown.
BIN
source/_static/fonts/Mark-Medium.woff2
Executable file
BIN
source/_static/fonts/Mark-Medium.woff2
Executable file
Binary file not shown.
BIN
source/_static/fonts/Mark-Regular.woff
Normal file
BIN
source/_static/fonts/Mark-Regular.woff
Normal file
Binary file not shown.
BIN
source/_static/fonts/Mark-Regular.woff2
Normal file
BIN
source/_static/fonts/Mark-Regular.woff2
Normal file
Binary file not shown.
54
source/_static/js/main.js
Normal file
54
source/_static/js/main.js
Normal file
@ -0,0 +1,54 @@
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
console.log('DOM fully loaded and parsed');
|
||||
|
||||
var topic = document.getElementById('on-this-page');
|
||||
|
||||
if (topic != null) {
|
||||
document.getElementById('localtoc').appendChild(
|
||||
document.getElementById('on-this-page')
|
||||
);
|
||||
|
||||
console.log("moving local toc");
|
||||
}
|
||||
|
||||
let options = {
|
||||
root: document.querySelector('#scrollArea'),
|
||||
rootMargin: '-100px 0px 0px 0px'
|
||||
}
|
||||
|
||||
const observer = new IntersectionObserver(entries => {
|
||||
entries.forEach(entry => {
|
||||
const id = entry.target.getAttribute('id');
|
||||
console.log("entry is " + id + " Ratio is " + entry.intersectionRatio)
|
||||
console.log(entry.rootBounds)
|
||||
|
||||
if (id == document.querySelector('.section[id]').getAttribute('id'))
|
||||
return 0
|
||||
if (entry.intersectionRatio > 0) {
|
||||
|
||||
liElement = document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement.parentElement;
|
||||
|
||||
liElement.classList.add('active');
|
||||
|
||||
liElementParent = liElement.parentElement.parentElement
|
||||
|
||||
if (liElementParent.tagName == "LI") {
|
||||
liElementParent.classList.remove("active")
|
||||
}
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement.parentElement.classList.remove('active');
|
||||
}
|
||||
});
|
||||
},options);
|
||||
|
||||
// Track all sections that have an `id` applied
|
||||
document.querySelectorAll('.section[id]').forEach((section) => {
|
||||
observer.observe(section);
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
19
source/_static/logo.svg
Normal file
19
source/_static/logo.svg
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 297 348.5" style="enable-background:new 0 0 297 348.5;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;stroke:#CCCCCC;stroke-miterlimit:10;}
|
||||
.st1{fill:#C72C48;}
|
||||
</style>
|
||||
<title>Bird</title>
|
||||
<polygon class="st0" points="0.6,0.5 296.5,0.5 296.5,348 0.5,348 "/>
|
||||
<path class="st1" d="M194,126.8c-4.7-7.8-9.4-15.6-14.2-23.3c-2.5-4-5-8-7.5-12c-0.3-0.5-0.7-0.9-1-1.4c-4.5-6.9-13.4-11.5-22.2-7.1
|
||||
c-7.7,3.7-11,13-7.3,20.8c0,0.1,0.1,0.1,0.1,0.2c1.5,2.9,4,5.4,6.3,7.9c7.1,7.6,14.5,14.9,21.5,22.5c8.4,9,7.9,23.1-1.1,31.4
|
||||
c-1.9,1.8-4.2,3.3-6.7,4.3c-0.2,0-0.3,0-0.5,0v-35.2c-12.5,6.5-23.8,15.2-33.2,25.7c-14.7,16.4-23.4,36.9-26,51.8l23.9-12.2
|
||||
c8-4,15.9-8,24.2-12.2v68.3l11,11.2V182c0,0,0.2-0.1,1.1-0.6c3.3-1.6,6.6-3.4,9.7-5.4c14.8-10.4,18.4-30.7,8-45.5
|
||||
c-1-1.4-2-2.7-3.2-3.9c-8.2-8.6-16.5-17.1-24.6-25.7c-2.4-2.5-2.3-5.7,0-7.9s5.5-2,7.9,0.5l3.4,3.5c2.7,2.9,5.4,5.8,8.2,8.7
|
||||
c6.9,7.3,13.9,14.5,20.8,21.7c0.3,0.4,0.8,0.7,1.2,1l0.4-0.3C194.4,127.7,194.2,127.2,194,126.8z M150.6,175.1
|
||||
c-0.1,0.6-0.5,1.1-1,1.3c-4.4,2.3-8.8,4.6-13.2,6.9l-16.1,8.3c7-14.7,17.4-27.5,30.2-37.4c0.1,0.2,0.2,0.3,0.2,0.4
|
||||
C150.7,161.4,150.7,168.3,150.6,175.1L150.6,175.1z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
44
source/_templates/layout.html
Normal file
44
source/_templates/layout.html
Normal file
@ -0,0 +1,44 @@
|
||||
{# Import the theme's layout. #}
|
||||
{% extends "!layout.html" %}
|
||||
|
||||
{# Custom CSS overrides #}
|
||||
|
||||
{# Override content block #}
|
||||
|
||||
{%- block header %}
|
||||
<div class="header">
|
||||
<a href="https://min.io">
|
||||
<img class="logo" src="{{ pathto('_static/docs-logo.svg',1) }}" alt="Logo"/>
|
||||
</a>
|
||||
<div class="navbar">
|
||||
<p style="color: white">This will someday contain a header</p>
|
||||
</div>
|
||||
</div>
|
||||
{%- endblock %}
|
||||
|
||||
{%- block content %}
|
||||
<div class="document">
|
||||
{{ sidebar() }}
|
||||
<div class=body>
|
||||
{% block alertbar -%}
|
||||
<div class="alert alert-info">
|
||||
<span class="alert-message">
|
||||
<p>We're building a new version of the MinIO Documentation!
|
||||
If you can't find what you're looking for, check our
|
||||
<a href="https://docs.min.io"> legacy documentation</a>.
|
||||
Thank you for your patience.
|
||||
</p>
|
||||
</span>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block body %} {% endblock %}
|
||||
<div class="footer">
|
||||
©{{ copyright }}
|
||||
</div>
|
||||
</div>
|
||||
<div id=localtoc class=localtoc>
|
||||
</div>
|
||||
</div>
|
||||
{%- endblock %}
|
||||
|
||||
{%- block footer %}{%- endblock %}
|
104
source/conf.py
Normal file
104
source/conf.py
Normal file
@ -0,0 +1,104 @@
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file only contains a selection of the most common options. For a full
|
||||
# list see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
|
||||
# -- Path setup --------------------------------------------------------------
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#
|
||||
import os
|
||||
import sys
|
||||
|
||||
# The current working dir seems to be /source, so we have to pop up a level
|
||||
sys.path.append(os.path.abspath('../sphinxext'))
|
||||
|
||||
|
||||
# sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = 'DOCS@MinIO'
|
||||
copyright = '2020, MinIO'
|
||||
author = 'Ravind Kumar'
|
||||
|
||||
# The full version, including alpha/beta/rc tags
|
||||
release = '0.1'
|
||||
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'sphinx.ext.extlinks',
|
||||
'minio',
|
||||
'sphinx_copybutton',
|
||||
'sphinx_tabs.tabs',
|
||||
'recommonmark',
|
||||
'sphinx_markdown_tables',
|
||||
]
|
||||
|
||||
# -- External Links
|
||||
|
||||
# Add roots for short external link references in the documentation.
|
||||
# Helpful for sites we tend to make lots of references to.
|
||||
|
||||
extlinks = {
|
||||
'kube-docs' : ('https://kubernetes.io/docs/%s', ''),
|
||||
'minio-git' : ('https://github.com/minio/%s',''),
|
||||
'github' : ('https://github.com/%s',''),
|
||||
'kube-api' : ('https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/%s',''),
|
||||
'aws-docs' : ('https://docs.aws.amazon.com/%s',''),
|
||||
's3-docs' : ('https://docs.aws.amazon.com/AmazonS3/latest/dev/%s',''),
|
||||
's3-api' : ('https://docs.aws.amazon.com/AmazonS3/latest/API/%s',''),
|
||||
'iam-docs' : ('https://docs.aws.amazon.com/IAM/latest/UserGuide/%s',''),
|
||||
'release' : ('https://github.com/minio/mc/releases/tag/%s',''),
|
||||
}
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path.
|
||||
exclude_patterns = ['includes/*.rst']
|
||||
|
||||
# Copy-Button Customization
|
||||
|
||||
copybutton_selector = "div.copyable pre"
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
html_theme = 'alabaster'
|
||||
|
||||
html_favicon = '_static/favicon.png'
|
||||
|
||||
html_sidebars = {
|
||||
'**' : [
|
||||
'about.html',
|
||||
'navigation.html',
|
||||
'searchbox.html',
|
||||
]
|
||||
}
|
||||
|
||||
html_theme_options = {
|
||||
'fixed_sidebar' : 'true',
|
||||
}
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
html_css_files = ['css-style.css']
|
||||
|
||||
html_js_files = ['js/main.js']
|
BIN
source/images/Kubernetes-Minio.png
Normal file
BIN
source/images/Kubernetes-Minio.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
771
source/images/Kubernetes-Minio.svg
Normal file
771
source/images/Kubernetes-Minio.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 53 KiB |
21
source/includes/minio-kubernetes-operator.rst
Normal file
21
source/includes/minio-kubernetes-operator.rst
Normal file
@ -0,0 +1,21 @@
|
||||
.. tabs::
|
||||
|
||||
.. tab:: SSH
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mkdir -p ~/minio-kubernetes/git
|
||||
cd ~/minio-examples/git
|
||||
|
||||
git clone git@github.com:minio/minio-operator.git
|
||||
|
||||
.. tab:: HTTPS
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mkdir -p ~/minio-kubernetes/git
|
||||
cd ~/minio-examples/git
|
||||
|
||||
git clone https://github.com/minio/minio-operator.git
|
112
source/includes/minio-mc-installation.rst
Normal file
112
source/includes/minio-mc-installation.rst
Normal file
@ -0,0 +1,112 @@
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Docker
|
||||
|
||||
**Stable**
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
docker pull minio/mc
|
||||
docker run minio/mc admin info play
|
||||
|
||||
**Edge**
|
||||
|
||||
*Do not use bleeding-edge deployments of MinIO in production environments*
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
docker pull minio/mc:edge
|
||||
docker run minio/mc:edge admin info server play
|
||||
|
||||
|
||||
.. tab:: Linux
|
||||
|
||||
The following commands add a *temporary* extension to your system
|
||||
PATH for running the ``mc`` utility. Defer to your operating system
|
||||
instructions for making permanent modifications to your system PATH.
|
||||
|
||||
Alternatively, execute ``mc`` by navigating to the parent folder and
|
||||
running ``./mc --help``
|
||||
|
||||
**64-bit Intel**
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
curl https://dl.min.io/client/mc/release/linux-amd64/mc \
|
||||
--create-dirs \
|
||||
-o $HOME/minio-binaries/mc
|
||||
|
||||
chmod +x $HOME/minio-binaries/mc
|
||||
export PATH=$PATH:$HOME/minio-binaries/
|
||||
|
||||
mc --help
|
||||
|
||||
**64-bit PPC**
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
curl https://dl.min.io/client/mc/release/linux-ppc64le/mc \
|
||||
--create-dirs \
|
||||
-o ~/minio-binaries/mc
|
||||
|
||||
chmod +x $HOME/minio-binaries/mc
|
||||
export PATH=$PATH:$HOME/minio-binaries/
|
||||
|
||||
mc --help
|
||||
|
||||
.. tab:: macOS
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
brew install minio/stable/mc
|
||||
mc --help
|
||||
|
||||
|
||||
.. tab:: Windows
|
||||
|
||||
Open the following file in a browser:
|
||||
|
||||
https://dl.min.io/client/mc/release/windows-amd64/mc.exe
|
||||
|
||||
Execute the file by double clicking on it, *or* by running the
|
||||
following in the command prompt or powershell:
|
||||
|
||||
.. code-block:: powershell
|
||||
|
||||
\path\to\mc.exe --help
|
||||
|
||||
.. tab:: Source
|
||||
|
||||
Source installation is intended for developers and advanced users. The
|
||||
:mc-cmd:`mc admin update` command does not support updating source-based
|
||||
installations.
|
||||
|
||||
Source installation requires a working Golang environment.
|
||||
See `How to install Golang <https://golang.org/doc/install>`__
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
go get -d github.com/minio/mc
|
||||
cd ${GOPATH}/src/github.com/minio/mc
|
||||
make
|
||||
|
||||
:command:`mc` includes the https://play.min.io MinIO server for testing
|
||||
and development under the ``play`` alias. If the host machine has access to
|
||||
the public internet, you can use the ``play`` alias for testing and development
|
||||
purposes. For example, the following lists all buckets on
|
||||
``https://play.min.io``:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc ls play
|
||||
|
||||
The ``play`` alias is strictly for testing and development. Any S3-compatible
|
||||
tool can view and interact with data on ``play``. You should only store data on
|
||||
``play`` that is safe for public interaction.
|
32
source/includes/play-alias-available.rst
Normal file
32
source/includes/play-alias-available.rst
Normal file
@ -0,0 +1,32 @@
|
||||
play-alias-only
|
||||
|
||||
The following example assumes that the ``play`` alias exists in the
|
||||
:mc-cmd:`mc` :ref:`configuration file <mc-configuration>`. You can
|
||||
replace ``play`` with the alias for your preferred S3-compatible deployment.
|
||||
|
||||
See :mc-cmd:`mc alias` for more information on aliases.
|
||||
|
||||
end-play-alias-only
|
||||
|
||||
|
||||
play-s3-alias
|
||||
|
||||
The following example assumes that the ``play`` and ``s3`` aliases exist in the
|
||||
:mc-cmd:`mc` :ref:`configuration file <mc-configuration>`. You can replace
|
||||
``play`` and ``s3`` with the aliases for your preferred S3-compatible
|
||||
deployments.
|
||||
|
||||
See :mc-cmd:`mc alias` for more information on aliases.
|
||||
|
||||
end-play-s3-alias
|
||||
|
||||
myminio-alias
|
||||
|
||||
The following example uses the default ``myminio`` alias. The ``myminio``
|
||||
alias points to a local ``minio`` server running on port ``9000``. See
|
||||
<installation instructions> for more information on installing and running
|
||||
a local ``minio`` server instance.
|
||||
|
||||
See :mc-cmd:`mc alias` for more information on aliases.
|
||||
|
||||
end-myminio-alias
|
26
source/index.rst
Normal file
26
source/index.rst
Normal file
@ -0,0 +1,26 @@
|
||||
=====================================
|
||||
MinIO High Performance Object Storage
|
||||
=====================================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
Welcome to the MinIO Documentation! MinIO is a high performance object storage
|
||||
solution with native support for Kubernetes deployments. MinIO provides an
|
||||
Amazon Web Services S3-compatible API and supports all core S3 features.
|
||||
|
||||
First-time users of MinIO *or* object storage services should start with
|
||||
our :doc:`Introduction </introduction/minio-overview>`.
|
||||
|
||||
Users deploying onto a Kubernetes cluster should start with our
|
||||
:doc:`Kubernetes-specific documentation </kubernetes/minio-kubernetes>`.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:hidden:
|
||||
|
||||
/introduction/minio-overview
|
||||
/minio-features/overview.rst
|
||||
/kubernetes/minio-kubernetes
|
||||
/security/minio-security
|
||||
/minio-cli/minio-mc
|
||||
/minio-cli/minio-mc-admin
|
18
source/introduction/bitrot-protection.rst
Normal file
18
source/introduction/bitrot-protection.rst
Normal file
@ -0,0 +1,18 @@
|
||||
.. _minio-bitrot-protection:
|
||||
|
||||
=================
|
||||
Bitrot Protection
|
||||
=================
|
||||
|
||||
Silent data corruption or bitrot is a serious problem faced by disk drives
|
||||
resulting in data getting corrupted without the user’s knowledge. The reasons
|
||||
are manifold (ageing drives, current spikes, bugs in disk firmware, phantom
|
||||
writes, misdirected reads/writes, driver errors, accidental overwrites) but the
|
||||
result is the same - compromised data.
|
||||
|
||||
MinIO’s optimized implementation of the HighwayHash algorithm ensures that it
|
||||
will never read corrupted data - it captures and heals corrupted objects on the
|
||||
fly. Integrity is ensured from end to end by computing a hash on READ and
|
||||
verifying it on WRITE from the application, across the network and to the
|
||||
memory/drive. The implementation is designed for speed and can achieve hashing
|
||||
speeds over 10 GB/sec on a single core on Intel CPUs.
|
75
source/introduction/buckets.rst
Normal file
75
source/introduction/buckets.rst
Normal file
@ -0,0 +1,75 @@
|
||||
.. _minio-bucket:
|
||||
|
||||
=======
|
||||
Buckets
|
||||
=======
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
|
||||
A :ref:`bucket <minio-bucket>` is a folder or storage container that can hold an
|
||||
arbitrary number of :ref:`objects <minio-object>`. Minio buckets provide the
|
||||
same functionality as an Amazon Web Services (AWS) S3 Bucket. The MinIO API is
|
||||
fully compatible with the Amazon S3 API, where applications can seamlessly
|
||||
transition to using the MinIO deployment with minimal code changes.
|
||||
|
||||
Bucket Notifications
|
||||
--------------------
|
||||
|
||||
MinIO Bucket Notifications allow you to automatically publish notifications
|
||||
to one or more configured endpoints when specific events occur in a bucket.
|
||||
|
||||
See :doc:`/minio-features/bucket-notifications` for more information.
|
||||
|
||||
Push Notifications
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
MinIO supports pushing events to the following targets:
|
||||
|
||||
- AMQP
|
||||
- MQTT
|
||||
- Elasticsearch
|
||||
- NSQ
|
||||
- Redis
|
||||
- NATS
|
||||
- PostgreSQL
|
||||
- MySQL
|
||||
- Apache Kafka
|
||||
- Webhooks
|
||||
|
||||
Use the ``mc admin`` utility to configure the MinIO deployment to actively
|
||||
push notifications to each configured target. For more complete documentation,
|
||||
see <logging tbd>
|
||||
|
||||
Listener API
|
||||
~~~~~~~~~~~~
|
||||
|
||||
MinIO provides two routes to listen for events for a given bucket:
|
||||
|
||||
- The ``mc event`` command.
|
||||
- The ``BucketNotification`` API.
|
||||
|
||||
.. todo: Add more information here as its available.
|
||||
|
||||
Write Once Read Many (WORM)
|
||||
---------------------------
|
||||
|
||||
MinIO supports enabling Write-Once Read-Many (WORM) for specific objects
|
||||
in a bucket *or* for all objects in the bucket. Objects with WORM applied
|
||||
are immutable, and can only be deleted if the WORM configuration includes an
|
||||
expiry.
|
||||
|
||||
Configure WORM for Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ToDo: Enable, Disable WORM
|
||||
|
||||
Configure WORM for Specific Objects
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ToDo: Enable, Disable WORM per object
|
||||
|
63
source/introduction/deployment-topologies.rst
Normal file
63
source/introduction/deployment-topologies.rst
Normal file
@ -0,0 +1,63 @@
|
||||
=====================
|
||||
Deployment Topologies
|
||||
=====================
|
||||
|
||||
MinIO supports three deployment topologies:
|
||||
|
||||
.. list-table::
|
||||
:widths: 30 70
|
||||
:header-rows: 1
|
||||
|
||||
* - Deployment Type
|
||||
- Description
|
||||
|
||||
* - :ref:`Standalone <minio-deployment-standalone>`
|
||||
- A single MinIO server.
|
||||
|
||||
Standalone deployments are ideal for local development and evaluation.
|
||||
|
||||
* - :ref:`Distributed <minio-deployment-distributed>`
|
||||
- Multiple MinIO servers allow for horizontal scaling of storage while
|
||||
allowing applications to treat the deployment as a single MinIO
|
||||
instance.
|
||||
|
||||
Distributed deployments are ideal for production environments.
|
||||
|
||||
* - :ref:`Active-Active <minio-deployment-active-active>`
|
||||
- Multiple distributed deployments with intra-deployment
|
||||
replication to synchronize :ref:`objects <minio-object>` across
|
||||
deployments.
|
||||
|
||||
Active-Active Distributed deployments are ideal for production
|
||||
environments with globally distributed applications, where applications
|
||||
prefer routing to the geographically-nearest MinIO instance.
|
||||
|
||||
.. _minio-deployment-standalone:
|
||||
|
||||
Standalone Deployment
|
||||
---------------------
|
||||
|
||||
TBD:
|
||||
- Add a diagram of a standalone deployment
|
||||
- List the drawbacks (if any)
|
||||
- Link to deployment tutorials (kubernetes, bare-metal)
|
||||
|
||||
.. _minio-deployment-distributed:
|
||||
|
||||
Distributed Deployment
|
||||
----------------------
|
||||
|
||||
TBD:
|
||||
- Add a diagram of a distributed deployment
|
||||
- List the drawbacks (if any)
|
||||
- Link to deployment tutorials (kubernetes, bare-metal)
|
||||
|
||||
.. _minio-deployment-active-active:
|
||||
|
||||
Active-Active
|
||||
-------------
|
||||
|
||||
TBD:
|
||||
- Add a diagram of a distributed deployment
|
||||
- List the drawbacks (if any)
|
||||
- Link to deployment tutorials (kubernetes, bare-metal)
|
17
source/introduction/erasure-coding.rst
Normal file
17
source/introduction/erasure-coding.rst
Normal file
@ -0,0 +1,17 @@
|
||||
.. _minio-erasure-coding:
|
||||
|
||||
==============
|
||||
Erasure Coding
|
||||
==============
|
||||
|
||||
MinIO protects data with per-object, inline erasure coding, which is written in
|
||||
assembly code to deliver the highest performance possible. MinIO uses
|
||||
Reed-Solomon code to stripe objects into `n/2` data and ``n/2`` parity blocks -
|
||||
although these can be configured to any desired redundancy level.
|
||||
|
||||
This means that in a 12 drive setup, an object is sharded across as 6 data and 6
|
||||
parity blocks. Even if you lose as many as 5 ((n/2)–1) drives, be it parity or
|
||||
data, you can still reconstruct the data reliably from the remaining drives.
|
||||
MinIO's implementation ensures that objects can be read or new objects are
|
||||
written even if multiple devices are lost or unavailable. Finally, MinIO's
|
||||
erasure code is at the object level and can heal one object at a time.
|
59
source/introduction/minio-overview.rst
Normal file
59
source/introduction/minio-overview.rst
Normal file
@ -0,0 +1,59 @@
|
||||
============
|
||||
Introduction
|
||||
============
|
||||
|
||||
MinIO is a High Performance Object Storage released under Apache License v2.0.
|
||||
It is API compatible with Amazon S3 cloud storage service. Use MinIO to build
|
||||
high performance infrastructure for machine learning, analytics and application
|
||||
data workloads.
|
||||
|
||||
What Is Object Storage?
|
||||
-----------------------
|
||||
|
||||
Applications create, update, retrieve, and delete data as part of normal
|
||||
operations. MinIO provides a complete solution for managing the storage
|
||||
and access of that data as :ref:`objects <minio-object>`. Applications group
|
||||
objects into one or more :ref:`buckets <minio-bucket>`.
|
||||
|
||||
MinIO is fully compatible with the Amazon Web Services Simple Storage Service
|
||||
(AWS S3) API. Applications using the AWS S3 API can seamlessly transition to
|
||||
using a MinIO deployment for managing their application's object storage with
|
||||
minimal code changes.
|
||||
|
||||
Erasure Coding
|
||||
--------------
|
||||
|
||||
MinIO Erasure Coding guarantees object retrieval as long as the deployment
|
||||
has at least half of its drives operational. Specifically, the deployment
|
||||
can lose `(n/2)-1` drives and still service create, retrieval, update, and
|
||||
delete operations.
|
||||
|
||||
For example, consider a deployment with 12 data drives. MinIO splits the
|
||||
12 drive set into 6 data drives and 6 parity drives. As long as *at least* 7
|
||||
drives are online, the MinIO server can guarantee retrieval of any stored
|
||||
object.
|
||||
|
||||
For more information on MinIO Erasure Coding, see
|
||||
:ref:`minio-erasure-coding`.
|
||||
|
||||
Bitrot Protection
|
||||
-----------------
|
||||
|
||||
MinIO Bitrot Protection heals objects that have degraded due to
|
||||
disk corruption. When applications request a specific object, MinIO
|
||||
automatically checks for corruption and applies a healing algorithm to
|
||||
reconstruct the object.
|
||||
|
||||
For more information on MinIO Bitrot Protection, see
|
||||
:ref:`minio-bitrot-protection`.
|
||||
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
:titlesonly:
|
||||
|
||||
/introduction/buckets.rst
|
||||
/introduction/objects.rst
|
||||
/introduction/deployment-topologies.rst
|
||||
/introduction/erasure-coding.rst
|
||||
/introduction/bitrot-protection.rst
|
15
source/introduction/objects.rst
Normal file
15
source/introduction/objects.rst
Normal file
@ -0,0 +1,15 @@
|
||||
.. _minio-object:
|
||||
|
||||
=======
|
||||
Objects
|
||||
=======
|
||||
|
||||
An :ref:`object <minio-object>` is any kind of data with no limit to its
|
||||
size, format, or type. Examples of objects include digital images,
|
||||
text documents, or video files. Applications can store, retrieve, and
|
||||
delete objects from a MinIO deployment.
|
||||
|
||||
MinIO objects provide the same core functionality as an Amazon Web Services (AWS)
|
||||
S3 Object. The MinIO API is fully compatible with the Amazon S3 API,
|
||||
where applications can seamlessly transition to using the MinIO deployment
|
||||
with minimal code changes.
|
87
source/kubernetes/deploy-on-kubernetes.rst
Normal file
87
source/kubernetes/deploy-on-kubernetes.rst
Normal file
@ -0,0 +1,87 @@
|
||||
====================================
|
||||
Deploy MinIO on a Kubernetes Cluster
|
||||
====================================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
This tutorial uses the MinIO Kubernetes Operator to deploy MinIO to your
|
||||
Kubernetes cluster in a distributed configuration. Distributed MinIO deployments
|
||||
are suitable for development, staging, and production environments. For
|
||||
a tutorial on creating a more simple MinIO deployment for local development
|
||||
and evaluation, see :doc:`/kubernetes/quickstart`.
|
||||
|
||||
By default, this tutorial creates a distributed MinIO deployment with the
|
||||
following components:
|
||||
|
||||
- 4 MinIO server instances with TLS enabled.
|
||||
- 4 x 1TB storage volumes per MinIO server instance.
|
||||
- 1 MinIO KES key management instance.
|
||||
- 1 MinIO Minio Console Service instance.
|
||||
- 1 MinIO Operator instance.
|
||||
|
||||
This tutorial includes instructions for modifying the deployment configuration
|
||||
for your specific requirements.
|
||||
|
||||
You should have basic familiarity with Kubernetes, its associated terminology,
|
||||
and its command line tools prior to starting this tutorial. While the MinIO
|
||||
documentation makes a best-effort to address Kubernetes-specific information,
|
||||
you should review the official Kubernetes :kube-docs:`documentation <>` for more
|
||||
complete coverage.
|
||||
|
||||
.. _minio-kubernetes-deploy-minio-prerequisites:
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
This tutorial requires the following resources:
|
||||
|
||||
- The :minio-git:`minio-operator <minio-operator>` github repository.
|
||||
|
||||
- A Kubernetes cluster with *at least* **four**
|
||||
:kube-docs:`node` per MinIO server instance. Each node must have *at least*
|
||||
**four** persistent volumes.
|
||||
|
||||
- A host machine with ``kubectl`` installed. See
|
||||
:kube-docs:`Install and Set Up kubectl <tasks/tools/install-kubectl/>`
|
||||
|
||||
The host machine should be configured such that ``kubectl`` can access the
|
||||
Kubernetes cluster. See :kube-docs:`Access Applications in a Cluster
|
||||
<tasks/access-application-cluster>` for more information.
|
||||
|
||||
Considerations
|
||||
--------------
|
||||
|
||||
.. ToDo:
|
||||
|
||||
- Document recommended resource allocation (CPU, RAM, etc.)
|
||||
- Document recommended number of MinIO pods to Nodes
|
||||
- Document recommended ratio of PV to Physical Disk
|
||||
|
||||
Procedure
|
||||
---------
|
||||
|
||||
1) First Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
2) Second Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
113
source/kubernetes/enforce-security.rst
Normal file
113
source/kubernetes/enforce-security.rst
Normal file
@ -0,0 +1,113 @@
|
||||
========================================
|
||||
Enforce Security for MinIO in Kubernetes
|
||||
========================================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
This page covers multiple procedures for configuring MinIO security features
|
||||
using the MinIO Kubernetes Operator.
|
||||
|
||||
You should have basic familiarity with Kubernetes, its associated terminology,
|
||||
and its command line tools prior to starting any of the documented procedures.
|
||||
While the MinIO documentation makes a best-effort to address Kubernetes-specific
|
||||
information, you should review the official Kubernetes :kube-docs:`documentation
|
||||
<>` for more complete coverage.
|
||||
|
||||
.. _minio-kubernetes-enforce-security-prerequisites:
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
This tutorial requires the following resources:
|
||||
|
||||
- The :minio-git:`minio-operator <minio-operator>` github repository.
|
||||
|
||||
- A Kubernetes cluster with *at least* **four**
|
||||
:kube-docs:`node` per MinIO server instance. Each node must have *at least*
|
||||
**four** persistent volumes.
|
||||
|
||||
- A host machine with ``kubectl`` installed. See
|
||||
:kube-docs:`Install and Set Up kubectl <tasks/tools/install-kubectl/>`
|
||||
|
||||
The host machine should be configured such that ``kubectl`` can access the
|
||||
Kubernetes cluster. See :kube-docs:`Access Applications in a Cluster
|
||||
<tasks/access-application-cluster>` for more information.
|
||||
|
||||
Considerations
|
||||
--------------
|
||||
|
||||
.. ToDo:
|
||||
|
||||
- Document recommended resource allocation (CPU, RAM, etc.)
|
||||
- Document recommended number of MinIO pods to Nodes
|
||||
- Document recommended ratio of PV to Physical Disk
|
||||
|
||||
Enable TLS
|
||||
----------
|
||||
|
||||
1) First Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
2) Second Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
Configure Root Access to MinIO Servers
|
||||
--------------------------------------
|
||||
|
||||
1) First Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
2) Second Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
Another Deployment-Level Security Feature
|
||||
-----------------------------------------
|
||||
|
||||
1) First Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
2) Second Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
77
source/kubernetes/manage-on-kubernetes.rst
Normal file
77
source/kubernetes/manage-on-kubernetes.rst
Normal file
@ -0,0 +1,77 @@
|
||||
====================================
|
||||
Expand MinIO in a Kubernetes Cluster
|
||||
====================================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
This tutorial uses the MinIO Kubernetes Operator to expand an existing
|
||||
distributed MinIO deployment in your Kubernetes cluster. Specifically,
|
||||
this tutorial covers:
|
||||
|
||||
- Adding additional MinIO server instances to the deployment, *and*
|
||||
- Adding additional drives to a MinIO server instance.
|
||||
|
||||
This tutorial includes instructions for modifying the deployment configuration
|
||||
for your specific requirements.
|
||||
|
||||
You should have basic familiarity with Kubernetes, its associated terminology,
|
||||
and its command line tools prior to starting this tutorial. While the MinIO
|
||||
documentation makes a best-effort to address Kubernetes-specific information,
|
||||
you should review the official Kubernetes :kube-docs:`documentation <>` for more
|
||||
complete coverage.
|
||||
|
||||
.. _minio-kubernetes-expand-minio-prerequisites:
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
This tutorial requires the following resources:
|
||||
|
||||
- The :minio-git:`minio-operator <minio-operator>` github repository.
|
||||
|
||||
- An existing Kubernetes cluster with a distributed MinIO deployment.
|
||||
|
||||
- A host machine with ``kubectl`` installed. See
|
||||
:kube-docs:`Install and Set Up kubectl <tasks/tools/install-kubectl/>`
|
||||
|
||||
The host machine should be configured such that ``kubectl`` can access the
|
||||
Kubernetes cluster. See :kube-docs:`Access Applications in a Cluster
|
||||
<tasks/access-application-cluster>` for more information.
|
||||
|
||||
Considerations
|
||||
--------------
|
||||
|
||||
.. ToDo:
|
||||
|
||||
- Document recommended resource allocation (CPU, RAM, etc.)
|
||||
- Document recommended number of MinIO pods to Nodes
|
||||
- Document recommended ratio of PV to Physical Disk
|
||||
|
||||
Procedure
|
||||
---------
|
||||
|
||||
1) First Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
2) Second Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
41
source/kubernetes/minio-kubernetes.rst
Normal file
41
source/kubernetes/minio-kubernetes.rst
Normal file
@ -0,0 +1,41 @@
|
||||
=====================
|
||||
MinIO for Kuberenetes
|
||||
=====================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
MinIO is a high performance distributed object storage server, designed for
|
||||
large-scale private cloud infrastructure. MinIO is designed in a cloud-native
|
||||
manner to scale sustainably in multi-tenant environments. Orchestration
|
||||
platforms like Kubernetes provide perfect cloud-native environment to deploy and
|
||||
scale MinIO. The :minio-git:`MinIO Kubernetes Operator </minio-operator>` brings
|
||||
native MinIO support to Kubernetes.
|
||||
|
||||
.. image:: /images/Kubernetes-Minio.svg
|
||||
:align: center
|
||||
:width: 90%
|
||||
:class: no-scaled-link
|
||||
:alt: Kubernetes Orchestration with the MinIO Operator facilitates automated deployment of MinIO clusters.
|
||||
|
||||
|
||||
|
||||
.. versionchanged:: VERSION.VERSION
|
||||
|
||||
This feature was added in VERSION, upgrade to VERSION
|
||||
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:hidden:
|
||||
|
||||
/kubernetes/quickstart
|
||||
/kubernetes/deploy-on-kubernetes
|
||||
/kubernetes/manage-on-kubernetes
|
||||
/kubernetes/enforce-security
|
||||
/kubernetes/operator-kes
|
||||
/kubernetes/operator-mcs
|
||||
/kubernetes/operator-reference
|
79
source/kubernetes/operator-kes.rst
Normal file
79
source/kubernetes/operator-kes.rst
Normal file
@ -0,0 +1,79 @@
|
||||
========================================
|
||||
Deploy MinIO KES on a Kubernetes Cluster
|
||||
========================================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
MinIO KES is a stateless and distributed key-management system for
|
||||
high-performance applications. KES provides a bridge between applications
|
||||
running in containerized deployments, like Kubernetes, and centralized Key
|
||||
Mannagement Systems (KMS) like Hashicorp Vault or Amazon Web Services (AWS) KMS. This
|
||||
tutorial covers the information necessary for using the MinIO Kubernetes
|
||||
Operator (``minio-operator``) to deploy MinIO KES instances on a Kubernetes
|
||||
Cluster.
|
||||
|
||||
You should have basic familiarity with the Kubernetes ecosystem and your
|
||||
preferred KMS backend prior to starting this tutorial. Defer to the official
|
||||
documentation for :kube-docs:`Kubernetes` and your preferred KMS backend for
|
||||
more complete learning resource. While the MinIO docs make a best-effort
|
||||
to cover third-party concepts and configurations, you should not depend on
|
||||
this tutorial as the only source of information on third-party products.
|
||||
|
||||
For more complete documentation on MinIO KES, see <future page>.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
This tutorial requires the following resources:
|
||||
|
||||
Kubernetes Cluster
|
||||
You should have access to a running Kubernetes cluster.
|
||||
|
||||
The Kubernetes cluster
|
||||
|
||||
- The Kubernetes cluster must have at least one running
|
||||
:minio-git:`minio-operator <minio-operator>` instance. See
|
||||
<future minio-operator deployment proc> for installation instructions.
|
||||
|
||||
The Kubernetes cluster should have *at least* **one** node with enough
|
||||
resources to launch additional pods.
|
||||
|
||||
- The ``minio-operator`` has TLS configured and enabled. See
|
||||
<future minio-operator security config docs> for configuration instructions.
|
||||
|
||||
- An x.509 Certificate and corresponding private key for MinIO KES to use
|
||||
for mTLS authentication and authorization.
|
||||
|
||||
- A supported Key Management System backend. MinIO KES supports the following KMS providers:
|
||||
|
||||
- `Hashicorp Vault <https://www.vaultproject.io/?ref=minio>`__
|
||||
- `Amazon Web Services KMS <https://aws.amazon.com/kms/?ref=minio>`__
|
||||
- `Gemalto SafeNet KeySecure <https://www.netapp.com/us/products/storage-security-systems/key-management/keysecure-k460.aspx?ref=minio>`__
|
||||
|
||||
Procedure
|
||||
---------
|
||||
|
||||
Procedure
|
||||
---------
|
||||
|
||||
1) First Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
2) Second Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
74
source/kubernetes/operator-mcs.rst
Normal file
74
source/kubernetes/operator-mcs.rst
Normal file
@ -0,0 +1,74 @@
|
||||
===================================================
|
||||
Deploy MinIO Console Server on a Kubernetes Cluster
|
||||
===================================================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
MinIO Console Server (MCS) is a graphical user interface for administrating
|
||||
MinIO servers. This tutorial covers the information necessary for using the
|
||||
MinIO Kubernetes Operator (``minio-operator``) to deploy MinIO MCS instances on
|
||||
a Kubernetes Cluster.
|
||||
|
||||
You should have basic familiarity with the Kubernetes ecosystem prior to
|
||||
starting this tutorial. Defer to the official documentation for
|
||||
:kube-docs:`Kubernetes` for more complete learning resources. While the MinIO
|
||||
docs make a best-effort to cover third-party concepts and configurations, you
|
||||
should not depend on this tutorial as the only source of information on
|
||||
third-party products.
|
||||
|
||||
For more complete documentation on MinIO MCS, see <future page>.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
This tutorial requires the following resources:
|
||||
|
||||
Kubernetes Cluster
|
||||
You should have access to a running Kubernetes cluster.
|
||||
|
||||
The Kubernetes cluster should have *at least* **one** node with enough
|
||||
resources to launch additional pods.
|
||||
|
||||
MinIO Kubernetes Operator
|
||||
The Kubernetes cluster must have at least one running
|
||||
:minio-git:`minio-operator <minio-operator>` instance. See <future
|
||||
minio-operator deployment proc> for installation instructions.
|
||||
|
||||
The MinIO operator *must* have TLS configured and enabled. See <future
|
||||
security config docs> for configuration instructions.
|
||||
|
||||
MinIO Deployment
|
||||
For a tutorial on deploying MinIO on Kubernetes, see
|
||||
:doc:`/kubernetes/deploy-on-kubernetes`.
|
||||
|
||||
For a shorter tutorial for local development only, see
|
||||
:doc:`/kubernetes/quickstart`.
|
||||
|
||||
The MinIO deployment must have at least one MinIO user with administrative
|
||||
privileges for the MCS instance to use for authentication and authorization.
|
||||
See <future security docs> for more information on configuring MinIO users.
|
||||
|
||||
Procedure
|
||||
---------
|
||||
|
||||
1) First Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
||||
|
||||
2) Second Step Header
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a) First Substep
|
||||
````````````````
|
||||
|
||||
b) Second Substep
|
||||
`````````````````
|
133
source/kubernetes/operator-reference.rst
Normal file
133
source/kubernetes/operator-reference.rst
Normal file
@ -0,0 +1,133 @@
|
||||
========================
|
||||
MinIO Operator Reference
|
||||
========================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
This document explains the various fields supported by MinIO Operator and its
|
||||
CRD's and how to use these fields to deploy and access MinIO server clusters.
|
||||
|
||||
MinIO Operator creates native Kubernetes resources within the cluster. The
|
||||
operator uses the name of the created MinIO Instance as a prefix for
|
||||
all resources created by the operator. For example, if deploying a
|
||||
MinIO instance named ``minioinstance``, the operator creates the following
|
||||
resources with their associated names:
|
||||
|
||||
- Headless Service: ``minioinstance-hl-svc``
|
||||
- StatefulSet: ``minioinstance``
|
||||
- Secret: ``minioinstance-tls`` (If :kubeconf:`spec.requestAutoCert` is enabled)
|
||||
- CertificateSigningRequest: ``minioinstance-csr`` (If :kubeconf:`spec.requestAutoCert` is enabled)
|
||||
|
||||
The MinIO Kubernetes Operator is under active development. The contents of
|
||||
this page may change at any time.
|
||||
|
||||
Configuration File Overview
|
||||
---------------------------
|
||||
|
||||
The following example shows all possible MinIO Kubernetes Operator configuration
|
||||
options.
|
||||
|
||||
.. code-block:: yaml
|
||||
:class: copyable
|
||||
|
||||
apiVerison: operator.min.io/v1
|
||||
kind: "MinIOInstance"
|
||||
metadata: <object>
|
||||
scheduler: <string>
|
||||
spec:
|
||||
metadata: <object>
|
||||
image: <string>
|
||||
zones: <int>
|
||||
volumesPerServer: <int>
|
||||
imagePullSecret: <string>
|
||||
credsSecret: <string>
|
||||
replicas: <int>
|
||||
podManagementPolicy: <string>
|
||||
mountPath: <string>
|
||||
subPath: <string>
|
||||
volumeClaimTemplate: <object>
|
||||
env: <object>
|
||||
requestAutoCert: <bool>
|
||||
certConfig: <object>
|
||||
externalCertSecret: <object>
|
||||
resources: <object>
|
||||
liveness: <object>
|
||||
nodeSelector: <object>
|
||||
tolerations: <object>
|
||||
securityContext: <object>
|
||||
serviceAccountName: <string>
|
||||
mcs:
|
||||
image: <string>
|
||||
replicas: <int>
|
||||
mcsSecret: <string>
|
||||
metadata: <object>
|
||||
kes:
|
||||
replicas: <int>
|
||||
image: <string>
|
||||
configSecret: <string>
|
||||
metadata: <object>
|
||||
|
||||
Configuration Options
|
||||
---------------------
|
||||
|
||||
.. kubeconf:: kind
|
||||
|
||||
*Type*: String
|
||||
|
||||
Specify ``MinIOInstance``.
|
||||
|
||||
.. kubeconf:: metadata
|
||||
|
||||
*Type*: Object
|
||||
|
||||
Metadata related to the ``MinIOInstance``. For example, the
|
||||
following sets the ``label`` for the ``MinIOInstance`` object:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
metadata:
|
||||
labels: minio
|
||||
|
||||
See :kube-api:`#objectmeta-v1-meta` for more complete documentation on
|
||||
supported metadata options.
|
||||
|
||||
.. kubeconf:: spec
|
||||
|
||||
*Type*: Object
|
||||
|
||||
The specifications used by the MinIO Operator to deploy the MinIO
|
||||
server cluster.
|
||||
|
||||
Options marked as **Required** must be included in the configuration
|
||||
document.
|
||||
|
||||
.. kubeconf:: spec.metadata
|
||||
|
||||
*Type* : Object
|
||||
|
||||
Metadata related to all pods launched by the MinIO operator. For example, the
|
||||
following sets the ``label`` for all pods launched by the MinIO instance
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
metadata:
|
||||
labels: minio
|
||||
|
||||
See :kube-api:`metadata reference documentation <#objectmeta-v1-meta>` for
|
||||
more complete documentation on supported metadata options.
|
||||
|
||||
.. kubeconf:: spec.requestAutoCert
|
||||
|
||||
*Type*: Boolean
|
||||
|
||||
*Defaults*: ``false``
|
||||
|
||||
Specify ``true`` to enable automatic TLS certificate generation for each
|
||||
resource created by the MinIO Operator. The operator uses the root
|
||||
Certificate Authority (CA) configured for the Kubernetes cluster to generate
|
||||
the required Certificate Signing Requests (CSR).
|
||||
|
229
source/kubernetes/quickstart.rst
Normal file
229
source/kubernetes/quickstart.rst
Normal file
@ -0,0 +1,229 @@
|
||||
============================================
|
||||
Quickstart: Deploy a Standalone MinIO Server
|
||||
============================================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
This tutorial uses the MinIO Operator to create a standalone MinIO server on a
|
||||
local Kubernetes cluster. Standalone MinIO deployments are best suited for local
|
||||
development of applications using MinIO for object storage. For a tutorial on
|
||||
creating a production-grade MinIO deployment on a Kubernetes cluster, see
|
||||
:doc:`/kubernetes/deploy-on-kubernetes`.
|
||||
|
||||
By default, this tutorial creates a standalone MinIO deployment with the
|
||||
following components:
|
||||
|
||||
- 1 MinIO server instance with TLS enabled.
|
||||
- 4 x 100MB storage volumes
|
||||
- 1 MinIO Minio Console Service instance.
|
||||
- 1 MinIO Operator instance.
|
||||
|
||||
You should have basic familiarity with Kubernetes, its associated terminology,
|
||||
and its command line tools prior to starting this tutorial. While the MinIO
|
||||
documentation makes a best-effort to address Kubernetes-specific information,
|
||||
you should review the official Kubernetes :kube-docs:`documentation <>` for more
|
||||
complete coverage.
|
||||
|
||||
.. _minio-kubernetes-quickstart-prerequisites:
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
This tutorial requires the following resources:
|
||||
|
||||
- The :minio-git:`minio-operator <minio-operator>` github repository.
|
||||
|
||||
- The `kind <https://kind.sigs.k8s.io/>`__ Kubernetes cluster deployment tool.
|
||||
Defer to the ``kind``
|
||||
`Quick Start <https://kind.sigs.k8s.io/docs/user/quick-start/>`__ for
|
||||
installation instructions and related dependencies.
|
||||
|
||||
- A host machine where you have rights to install and run software. The
|
||||
host machine **must** have *at least* the following available resources:
|
||||
|
||||
- 10GB of free storage space.
|
||||
- 2GB of free system memory (RAM)
|
||||
- 2 or more physical CPUs.
|
||||
|
||||
Procedure
|
||||
---------
|
||||
|
||||
1) Download and Configure Prerequisites
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
a\) Clone the ``minio-operator`` github repository
|
||||
Issue the following command in a terminal or shell on the host machine
|
||||
to clone the :minio-git:`minio-operator <minio-operator>` github repository.
|
||||
|
||||
.. include:: /includes/minio-kubernetes-operator.rst
|
||||
|
||||
The github repository contains the MinIO Kubernetes Operator and the example
|
||||
configuration files used as part of this tutorial.
|
||||
|
||||
b\) Install and configure ``kind``
|
||||
Follow the instructions on the ``kind``
|
||||
`Quick Start <https://kind.sigs.k8s.io/docs/user/quick-start/>`__ guide.
|
||||
|
||||
Once installed, use the following ``kind`` cluster configuration file to
|
||||
create a Kubernetes cluster that can support a standalone MinIO server:
|
||||
|
||||
.. code-block:: yaml
|
||||
:class: copyable
|
||||
|
||||
kind: Cluster
|
||||
apiVersion: kind.x-k8s.io/v1alpha4
|
||||
nodes:
|
||||
- role: control-plane
|
||||
- role: worker
|
||||
|
||||
Issue the following command in a terminal or shell on the host machine to
|
||||
create the local Kubernetes cluster:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
kind create cluster --name minio-local --config.yaml
|
||||
|
||||
To confirm the cluster is available, run the following command:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
kubectl --cluster-info --context kind-minio-local
|
||||
|
||||
Take note of the hostnames assigned to each component in the Kubernetes
|
||||
cluster.
|
||||
|
||||
2) Start the MinIO Kubernetes Operator
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Issue the following command in a terminal or shell on the host machine to
|
||||
start the MinIO Kubernetes Operator.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
kubectl apply -f ~/minio-kubernetes/git/minio-operator/minio-operator.yaml
|
||||
|
||||
The ``minio-operator.yaml`` configuration file creates a
|
||||
``minio-operator`` deployment in the Kubernetes cluster.
|
||||
|
||||
3) Configure the Storage Layer
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The example MinIO server configuration used in this tutorial requires four
|
||||
:kube-docs:`persistent volumes <storage/persistent-volumes/>` to start
|
||||
successfully. This configuration enables features such as :ref:`erasure coding
|
||||
<minio-erasure-coding>`.
|
||||
|
||||
Create four Kubernetes persistent volumes for use by the MinIO server instance.
|
||||
MinIO recommends creating :kube-docs:`local <storage/volumes/#local>` persistent
|
||||
volumes. The following template provides all required fields for creating the
|
||||
required persistent volumes:
|
||||
|
||||
.. code-block:: yaml
|
||||
:class: copyable
|
||||
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: minioexample-pv1
|
||||
spec:
|
||||
capacity:
|
||||
storage: 10Gi # specify the maximum size of the storage device
|
||||
volumeMode: Filesystem
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
storageClassName: local-storage-class
|
||||
local:
|
||||
path: /var/export1 # specify path to local volume on host
|
||||
nodeAffinity:
|
||||
required:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: kubernetes.io/hostname
|
||||
operator: In
|
||||
values:
|
||||
- minio-local-worker #specify hostname prefix of preferred node
|
||||
|
||||
Change the following configuration options as appropriate for the host
|
||||
machine configuration:
|
||||
|
||||
- ``spec.capacity.storage`` ( :kube-docs:`reference <concepts/storage/persistent-volumes/#capacity>`)
|
||||
- ``spec.local.path`` ( :kube-api:`reference <#localvolumesource-v1-core>`)
|
||||
- ``spec.nodeAffinity.required.matchExpressions.key.values`` (:kube-api:`reference <#nodeselectorrequirement-v1-core>`)
|
||||
|
||||
Issue the following command against each persistent volume configuration file
|
||||
to create the associated resources. Replace ``<pv-filename>`` with the name
|
||||
of each persistent volume configuration file.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
kubectl apply -f ~/minio-kubernetes/<pv-filename>.yaml
|
||||
|
||||
Issue the following command to check the state of the persistent volumes:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
kubectl get pv
|
||||
|
||||
The output should include the four created persistent volumes.
|
||||
|
||||
4) Create the MinIO Server
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Issue the following command in a terminal or shell to create the MinIO
|
||||
standalone instance using the MinIO Kubernetes Operator:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
kubectl apply -f ~/minio-kubernetes/minio-operator/examples/minioinstance-standalone.yaml
|
||||
|
||||
Issue the following command to check the state of the minio instance:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
kubectl get pods
|
||||
|
||||
The output should include a pod running the MinIO server.
|
||||
|
||||
5) Connect to the MinIO Server
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The ``minioinstance-standalone.yaml`` configuration file also creates a
|
||||
Kubernetes Service to manage communications to and from pods running the MinIO
|
||||
service. Issue the following command to get the IP address of the service:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
kubectl get services
|
||||
|
||||
The default access key is ``minio-admin`` and the default secret key is
|
||||
``minio-admin``.
|
||||
|
||||
You must use the IP address of the ``minio-service`` to access the MinIO
|
||||
server. For example, if the IP address is ``192.51.100.21``, enter the URL
|
||||
``http://192.51.100.21:9000`` into your browser to access the MinIO server.
|
||||
|
||||
To connect using the ``mc`` client, issue the following command on in a
|
||||
terminal or shell:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc config host add minio http://192.51.100.21 minio-admin minio-admin
|
||||
|
||||
Next Steps
|
||||
~~~~~~~~~~
|
||||
|
||||
- Perform CRUD operations on a MinIO Server (ToDo)
|
||||
-
|
||||
|
243
source/minio-cli/minio-mc-admin.rst
Normal file
243
source/minio-cli/minio-mc-admin.rst
Normal file
@ -0,0 +1,243 @@
|
||||
==========================
|
||||
MinIO Admin (``mc admin``)
|
||||
==========================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc admin
|
||||
|
||||
The MinIO Client :mc-cmd:`mc` command line tool provides the :mc-cmd:`mc admin`
|
||||
command for performing administrative tasks on your MinIO deployments.
|
||||
|
||||
While :mc-cmd:`mc` supports any S3-compatible service,
|
||||
:mc-cmd:`mc admin` *only* supports MinIO deployments.
|
||||
|
||||
:mc-cmd:`mc admin` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc admin [FLAGS] COMMAND [ARGUMENTS]
|
||||
|
||||
Command Quick reference
|
||||
-----------------------
|
||||
|
||||
The following table lists :mc-cmd:`mc admin` commands:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 25 75
|
||||
:width: 100%
|
||||
|
||||
* - Command
|
||||
- Description
|
||||
|
||||
* - :mc:`mc service`
|
||||
- Restart or stop MinIO servers.
|
||||
|
||||
|
||||
.. _mc-admin-install:
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
.. include:: /includes/minio-mc-installation.rst
|
||||
|
||||
Quickstart
|
||||
----------
|
||||
|
||||
Ensure that the host machine has :command:`mc`
|
||||
:ref:`installed <mc-admin-install>` prior to starting this procedure.
|
||||
|
||||
.. important::
|
||||
|
||||
The following example temporarily disables the bash history to mitigate the
|
||||
risk of authentication credentials leaking in plain text. This is a basic
|
||||
security measure and does not mitigate all possible attack vectors. Defer to
|
||||
security best practices for your operating system for inputting sensitive
|
||||
information on the command line.
|
||||
|
||||
Use the :subcommand:`mc alias add` command to add the
|
||||
deployment to the :command:`mc` configuration.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
bash +o history
|
||||
mc config host add <ALIAS> <ENDPOINT> ACCESS_KEY SECRET_KEY
|
||||
bash -o history
|
||||
|
||||
Replace each argument with the required values. Specifying only the
|
||||
``mc config host add`` command starts an input prompt for entering the
|
||||
required values.
|
||||
|
||||
Use the :ref:`mc admin info <mc-admin-info>` command to test the connection to
|
||||
the newly added MinIO deployment:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin info <ALIAS>
|
||||
|
||||
Global Options
|
||||
--------------
|
||||
|
||||
:mc-cmd:`mc admin` supports the same global options as
|
||||
:mc-cmd:`mc`. See :ref:`minio-mc-global-options`.
|
||||
|
||||
|
||||
|
||||
.. _mc-admin-info:
|
||||
|
||||
``mc admin info``
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
The ``mc admin info`` command returns diagnostic information of a MinIO server.
|
||||
|
||||
The command has the following syntax:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
NAME:
|
||||
mc admin info COMMAND <ALIAS>
|
||||
|
||||
FLAGS
|
||||
--debug Returns verbose information for debugging
|
||||
|
||||
If the specified ``<ALIAS>`` corresponds to a distributed MinIO deployment, the
|
||||
command returns information for each MinIO server in the deployment. Use
|
||||
:subcommand:`mc alias add` to list the currently configured aliases and their
|
||||
corresponding endpoints.
|
||||
|
||||
*Display MinIO Server Information*
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin info myminio
|
||||
|
||||
.. _mc-admin-policy:
|
||||
|
||||
``mc admin policy``
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The ``mc admin policy`` command can add, remove, list, get info, and set
|
||||
policies for a user on the MinIO server. MinIO policies are fully compatible
|
||||
with AWS IAM S3 policies. See
|
||||
:aws-docs:`AWS Policies and Permissions in Amazon S3
|
||||
<AmazonS3/latest/dev/access-policy-language-overview.html>`.
|
||||
|
||||
The command has the following syntax:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
NAME:
|
||||
mc admin policy COMMAND <ALIAS>
|
||||
|
||||
COMMANDS:
|
||||
add add new policy
|
||||
remove remove policy
|
||||
list list all policies
|
||||
info show info on a policy
|
||||
set set IAM policy on a user or group
|
||||
|
||||
If the specified ``<ALIAS>`` corresponds to a distributed MinIO deployment, the
|
||||
command adds the policy to each MinIO server in the deployment. Use
|
||||
:subcommand:`mc alias add` to list the currently configured aliases and their
|
||||
corresponding endpoints.
|
||||
|
||||
MinIO servers include the following canned policies:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
diagnostics
|
||||
readonly
|
||||
readwrite
|
||||
writeonly
|
||||
|
||||
Example: Add a new policy to a MinIO server
|
||||
```````````````````````````````````````````
|
||||
|
||||
Applying the following example policy ``listbucketsonly.json`` to a user
|
||||
restricts that user to only listing the top layer buckets in the MinIO server.
|
||||
The user cannot list any other resources, including any objects in the top layer
|
||||
buckets.
|
||||
|
||||
The following operation creates the policy on the ``/tmp`` folder
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
cat <<EOF >> /tmp/listbucketsonly.json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"s3:ListAllMyBuckets"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:s3:::*"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
Use the ``mc admin policy add`` command to add the policy to the MinIO server.
|
||||
Replace ``<ALIAS>`` with the alias for the desired MinIO deployment.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc admin policy add <ALIAS> listbucketsonly /tmp/listbucketsonly.json
|
||||
|
||||
Example: Remove a policy from a MinIO Server
|
||||
````````````````````````````````````````````
|
||||
|
||||
Use the ``mc admin policy <ALIAS> remove`` command to remove a policy from the
|
||||
MinIO server.
|
||||
|
||||
.. todo : what happens to current users who have that policy?
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc admin policy remove <ALIAS> listbucketsonly
|
||||
|
||||
Example: Display an existing policy
|
||||
```````````````````````````````````
|
||||
|
||||
Use the ``mc admin policy <ALIAS> info`` command to retrieve policy's JSON
|
||||
structure. Replace ``<ALIAS>`` with the alias for the desired MinIO deployment.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc admin policy info <ALIAS> writeonly
|
||||
|
||||
Example: Associate a policy to a user or group
|
||||
``````````````````````````````````````````````
|
||||
|
||||
Use the ``mc admin policy <ALIAS> set`` command to set a policy to a user or
|
||||
group:
|
||||
|
||||
**Set policy for a user**
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc admin policy set <ALIAS> <POLICY> user=<USERNAME>
|
||||
|
||||
**Set policy for a group**
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc admin policy set <ALIAS> <POLICY> group=<GROUP>
|
||||
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:hidden:
|
||||
:glob:
|
||||
|
||||
/minio-cli/minio-mc-admin/*
|
51
source/minio-cli/minio-mc-admin/mc-admin-info.rst
Normal file
51
source/minio-cli/minio-mc-admin/mc-admin-info.rst
Normal file
@ -0,0 +1,51 @@
|
||||
=================
|
||||
``mc admin info``
|
||||
=================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc admin info
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-admin-info-desc
|
||||
|
||||
The :mc-cmd:`mc admin info` command displays information on a MinIO server.
|
||||
For distributed MinIO deployments, :mc:`mc admin info` displays information
|
||||
for each MinIO server in the deployment.
|
||||
|
||||
.. end-mc-admin-info-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc-cmd:`mc admin info` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin info TARGET
|
||||
|
||||
Specify the :mc-cmd:`alias <mc alias>` of a configured MinIO deployment as the
|
||||
``TARGET``. :mc-cmd:`~mc admin service restart` restarts *all* MinIO servers in
|
||||
the deployment.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin info play
|
307
source/minio-cli/minio-mc-admin/mc-admin-policy.rst
Normal file
307
source/minio-cli/minio-mc-admin/mc-admin-policy.rst
Normal file
@ -0,0 +1,307 @@
|
||||
===================
|
||||
``mc admin policy``
|
||||
===================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
.. mc:: mc admin policy
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-admin-policy-desc
|
||||
|
||||
The :mc-cmd:`mc admin policy` command manages policies for use with MinIO
|
||||
Policy-Based Access Control (PBAC). MinIO PBAC uses IAM-compatible policy JSON
|
||||
documents to define rules for accessing resources on a MinIO server.
|
||||
|
||||
.. end-mc-admin-policy-desc
|
||||
|
||||
For complete documentation on MinIO PBAC, including policy document JSON
|
||||
structure and syntax, see
|
||||
:doc:`/security/minio-security-policy-based-access-control`.
|
||||
|
||||
By default, MinIO deployments use the access key and secret key
|
||||
specified when starting the MinIO server or servers as the root credentials.
|
||||
These credentials provide complete control over the MinIO deployment and are
|
||||
not intended for use outside of administrative operations.
|
||||
|
||||
MinIO strongly recommends using :mc-cmd:`mc admin policy` to configure PBAC
|
||||
such that applications have the minimal set of privileges required for
|
||||
completing their workloads. MinIO provides :ref:`minio-security-pbac-built-in`
|
||||
policies as a baseline for configuring PBAC:
|
||||
|
||||
- :userpolicy:`readonly`
|
||||
- :userpolicy:`readwrite`
|
||||
- :userpolicy:`diagnostics`
|
||||
- :userpolicy:`writeonly`
|
||||
|
||||
To apply a built-in policy to a user or group, use the
|
||||
:mc-cmd:`mc admin policy set` command:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy set myminio myReadOnlyPolicy readOnlyUser
|
||||
|
||||
mc admin policy set myminio myReadWritePolicy readWriteGroup
|
||||
|
||||
For more information on creating users and groups, see
|
||||
:mc-cmd:`mc admin users` and :mc-cmd:`mc admin groups` respectively.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Create a Policy
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: myminio-alias
|
||||
:end-before: myminio-alias
|
||||
|
||||
For example, consider the following JSON policy document:
|
||||
|
||||
.. code-block:: javascript
|
||||
:class: copyable
|
||||
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"s3:ListAllMyBuckets"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:minio:s3:::*"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
The following :mc-cmd:`mc admin policy add` command creates a new policy
|
||||
``listbucketsonly`` on the ``myminio`` MinIO deployment using the
|
||||
example JSON policy document:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy add myminio listbucketsonly /path/to/listbucketsonly.json
|
||||
|
||||
You can associate the new ``listbucketsonly`` policy to users or groups on the
|
||||
``myminio`` deployment using the :mc-cmd:`mc admin policy set` command.
|
||||
|
||||
List Available Policies
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
The following :mc-cmd:`mc admin policy list` command lists the available
|
||||
policies on the ``play`` MinIO deployment:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
Remove a Policy
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
Apply a Policy to a User or Group
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc-cmd:`mc admin policy` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy SUBCOMMAND [ARGUMENTS]
|
||||
|
||||
:mc-cmd:`mc admin policy` supports the following subcommands:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 40 60
|
||||
:width: 100%
|
||||
|
||||
* - Subcommand
|
||||
- Description
|
||||
|
||||
* - :mc-cmd:`mc admin policy add`
|
||||
- Creates a new policy on the target MinIO deployment.
|
||||
|
||||
* - :mc-cmd:`mc admin policy list`
|
||||
- Lists the available policies on the target MinIO deployment.
|
||||
|
||||
* - :mc-cmd:`mc admin policy info`
|
||||
- Returns the policy in JSON format from the target MinIO deployment.
|
||||
|
||||
* - :mc-cmd:`mc admin policy set`
|
||||
- Associates a policy to a user or group on the target MinIO deployment.
|
||||
|
||||
* - :mc-cmd:`mc admin policy remove`
|
||||
- Removes a policy from the target MinIO deployment.
|
||||
|
||||
.. mc-cmd:: add
|
||||
:fullpath:
|
||||
|
||||
:mc-cmd:`mc admin policy add` creates a new policy on the target MinIO
|
||||
deployment. The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy add TARGET POLICYNAME POLICYPATH
|
||||
|
||||
The :mc-cmd:`mc admin policy add` command accepts the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The :mc-cmd:`alias <mc alias>` of a configured MinIO deployment on which
|
||||
to add the new policy.
|
||||
|
||||
.. mc-cmd:: POLICYNAME
|
||||
|
||||
The name of the policy to add.
|
||||
|
||||
Specifying the name of an existing policy overwrites that policy on the
|
||||
:mc-cmd:`~mc admin policy TARGET` MinIO deployment.
|
||||
|
||||
.. mc-cmd:: POLICYPATH
|
||||
|
||||
The file path to the policy to add. The file *must* be a JSON-formatted
|
||||
file with :iam-docs:`IAM-compatible syntax <reference_policies.html>`.
|
||||
|
||||
.. mc-cmd:: list
|
||||
:fullpath:
|
||||
|
||||
This command lists all policies on the target MinIO deployment. The command
|
||||
has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy list TARGET
|
||||
|
||||
For example, the following command lists all policies on the
|
||||
``play`` MinIO deployment:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy list play
|
||||
|
||||
The :mc-cmd:`mc admin policy add` command accepts the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The :mc-cmd:`alias <mc alias>` of a configured MinIO deployment from which
|
||||
the command lists the available policies.
|
||||
|
||||
.. mc-cmd:: info
|
||||
:fullpath:
|
||||
|
||||
This command returns the specified policy in JSON format if it exists
|
||||
on the target MinIO deployment. The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy info TARGET POLICYNAME
|
||||
|
||||
:mc-cmd:`mc admin policy info` accepts the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The :mc-cmd:`alias <mc alias>` of a configured MinIO deployment from
|
||||
which the command returns information on the specified policy.
|
||||
|
||||
.. mc-cmd:: POLICYNAME
|
||||
|
||||
The name of the policy whose details the command returns.
|
||||
|
||||
.. mc-cmd:: set
|
||||
:fullpath:
|
||||
|
||||
This command applies an existing policy to a user or group on the
|
||||
target MinIO deployment. The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy set TARGET POLICYNAME [ user=USERNAME | group=GROUPNAME ]
|
||||
|
||||
The command accepts the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The :mc-cmd:`alias <mc-alias>` of a configured MinIO deployment on which
|
||||
the command associates the :mc-cmd:`~mc admin policy set POLICYNAME`
|
||||
to the :mc-cmd:`~mc admin policy set user` or
|
||||
:mc-cmd:`~mc admin policy set group`.
|
||||
|
||||
.. mc-cmd:: POLICYNAME
|
||||
|
||||
The name of the policy which the command associates to the specified
|
||||
:mc-cmd:`~mc admin policy set user` or
|
||||
:mc-cmd:`~mc admin policy set group`.
|
||||
|
||||
.. mc-cmd:: user
|
||||
|
||||
The name of the user to which the command associates the
|
||||
:mc-cmd:`~mc admin policy set POLICYNAME`.
|
||||
|
||||
Mutually exclusive with :mc-cmd:`~mc admin policy set GROUP`
|
||||
|
||||
.. mc-cmd:: group
|
||||
|
||||
The name of the group to which the command associates the
|
||||
:mc-cmd:`~mc admin policy set POLICYNAME`. All users with membership in
|
||||
the group inherit the policies associated to the group.
|
||||
|
||||
Mutually exclusive with :mc-cmd:`~mc admin policy set USER`
|
||||
|
||||
.. mc-cmd:: remove
|
||||
:fullpath:
|
||||
|
||||
This command removes an existing policy from the target MinIO deployment. The
|
||||
command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin policy remove TARGET POLICYNAME
|
||||
|
||||
The command accepts the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The :mc-cmd:`alias <mc-alias>` of a configured MinIO deployment on which
|
||||
the command removes the :mc-cmd:`~mc admin policy set POLICYNAME`.
|
||||
|
||||
.. mc-cmd:: POLICYNAME
|
||||
|
||||
The name of the policy which the command removes from the
|
||||
:mc-cmd:`~mc admin policy remove TARGET` deployment.
|
115
source/minio-cli/minio-mc-admin/mc-admin-service.rst
Normal file
115
source/minio-cli/minio-mc-admin/mc-admin-service.rst
Normal file
@ -0,0 +1,115 @@
|
||||
====================
|
||||
``mc admin service``
|
||||
====================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc admin service
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-admin-service-desc
|
||||
|
||||
The :mc-cmd:`mc admin service` command can restart or stop MinIO servers.
|
||||
|
||||
.. end-mc-admin-service-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc-cmd:`mc admin service` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin service COMMAND [ARGUMENTS]
|
||||
|
||||
:mc-cmd:`mc admin service` supports the following commands:
|
||||
|
||||
.. mc-cmd:: restart
|
||||
|
||||
Restarts MinIO servers.
|
||||
|
||||
:mc-cmd:`mc admin service restart` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin service restart TARGET
|
||||
|
||||
Specify the :mc-cmd:`alias <mc alias>` of a configured MinIO deployment.
|
||||
:mc-cmd:`~mc admin service restart` restarts *all* MinIO servers in the
|
||||
deployment.
|
||||
|
||||
.. mc-cmd:: stop
|
||||
|
||||
Stops MinIO servers.
|
||||
|
||||
:mc-cmd:`mc admin service stop` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin service stop TARGET
|
||||
|
||||
Specify the :mc-cmd:`alias <mc alias>` of a configured MinIO deployment.
|
||||
:mc-cmd:`~mc admin service stop` stops *all* MinIO servers in the
|
||||
deployment.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Simultaneous Restart or Stop
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
:mc-cmd:`mc admin service restart` and :mc-cmd:`mc admin service stop`
|
||||
affect *all* MinIO servers in the target deployment at the same time.
|
||||
The commands do not perform a rolling restart or similar zero or near-zero
|
||||
downtime restart procedure. Use :mc-cmd:`mc alias list` to review the currently
|
||||
configured aliases and their corresponding endpoints.
|
||||
|
||||
.. important::
|
||||
|
||||
``mc admin service restart`` and ``mc admin service stop`` interrupts
|
||||
in-progress API operations on the MinIO deployment. Exercise caution before
|
||||
issuing either command in production environments.
|
||||
|
||||
|
||||
MinIO Deployments Only
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
:mc-cmd:`mc admin service` is intended for use with MinIO servers only. MinIO
|
||||
provides no guarantees or support for using :mc-cmd:`mc admin service`
|
||||
with other S3-compatible services.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Restart MinIO Servers in Target Deployment
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: myminio-alias
|
||||
:end-before: end-myminio-alias
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin service restart myminio
|
||||
|
||||
Stop MinIO Servers in Target Deployment
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: myminio-alias
|
||||
:end-before: end-myminio-alias
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin service stop myminio
|
73
source/minio-cli/minio-mc-admin/mc-admin-update.rst
Normal file
73
source/minio-cli/minio-mc-admin/mc-admin-update.rst
Normal file
@ -0,0 +1,73 @@
|
||||
===================
|
||||
``mc admin update``
|
||||
===================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc admin update
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-admin-update-desc
|
||||
|
||||
The :mc-cmd:`mc admin update` command updates all MinIO servers in the
|
||||
deployment. The command also supports using a private mirror server for
|
||||
environments where the deployment does not have public internet access.
|
||||
|
||||
.. end-mc-admin-update-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc-cmd:`mc admin update` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin update ALIAS [MIRROR_URL]
|
||||
|
||||
:mc-cmd:`mc admin update` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: ALIAS
|
||||
|
||||
The :mc-cmd:`alias <mc alias>` of the MinIO deployment to update.
|
||||
|
||||
If the specified ``ALIAS`` corresponds to a distributed MinIO
|
||||
deployment, :mc-cmd:`mc admin update` updates *all* MinIO servers
|
||||
in the deployment at the same time. The command does not perform a
|
||||
rolling upgrade or similar zero or near-zero downtime upgrade procedure.
|
||||
|
||||
Use :mc-cmd:`mc alias list` to review the configured aliases and their
|
||||
corresponding MinIO deployment endpoints.
|
||||
|
||||
.. mc-cmd:: MIRROR_URL
|
||||
|
||||
The mirror URL of the ``minio`` server binary to use for updating MinIO
|
||||
servers in the :mc-cmd:`~mc admin update ALIAS` deployment.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Update Requires Downtime
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
:mc-cmd:`mc admin update` interrupts in-progress API operations on the MinIO
|
||||
deployment. Exercise caution before issuing an update command on production
|
||||
environments.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: myminio-alias
|
||||
:end-before: end-myminio-alias
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc admin update myminio
|
326
source/minio-cli/minio-mc.rst
Normal file
326
source/minio-cli/minio-mc.rst
Normal file
@ -0,0 +1,326 @@
|
||||
=================
|
||||
MinIO Client (mc)
|
||||
=================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc
|
||||
|
||||
The MinIO Client :mc-cmd:`mc` command line tool provides a modern alternative
|
||||
to UNIX commands like ``ls``, ``cat``, ``cp``, ``mirror``, and ``diff`` with
|
||||
support for both filesystems and Amazon S3-compatible cloud storage services
|
||||
(AWS Signature v2 and v4).
|
||||
|
||||
:mc-cmd:`mc` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...] ALIAS
|
||||
|
||||
Command Quick Reference
|
||||
-----------------------
|
||||
|
||||
The following table lists :mc-cmd:`mc` commands:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 25 75
|
||||
:width: 100%
|
||||
|
||||
* - Command
|
||||
- Description
|
||||
|
||||
* - :mc:`mc alias`
|
||||
- .. include:: /minio-cli/minio-mc/mc-alias.rst
|
||||
:start-after: start-mc-alias-desc
|
||||
:end-before: end-mc-alias-desc
|
||||
|
||||
* - :mc:`mc cat`
|
||||
- .. include:: /minio-cli/minio-mc/mc-cat.rst
|
||||
:start-after: start-mc-cat-desc
|
||||
:end-before: end-mc-cat-desc
|
||||
|
||||
* - :mc:`mc cp`
|
||||
- .. include:: /minio-cli/minio-mc/mc-cp.rst
|
||||
:start-after: start-mc-cp-desc
|
||||
:end-before: end-mc-cp-desc
|
||||
|
||||
* - :mc:`mc diff`
|
||||
- .. include:: /minio-cli/minio-mc/mc-diff.rst
|
||||
:start-after: start-mc-diff-desc
|
||||
:end-before: end-mc-diff-desc
|
||||
|
||||
* - :mc:`mc encrypt`
|
||||
- .. include:: /minio-cli/minio-mc/mc-encrypt.rst
|
||||
:start-after: start-mc-encrypt-desc
|
||||
:end-before: end-mc-encrypt-desc
|
||||
|
||||
* - :mc:`mc event`
|
||||
- .. include:: /minio-cli/minio-mc/mc-event.rst
|
||||
:start-after: start-mc-event-desc
|
||||
:end-before: end-mc-event-desc
|
||||
|
||||
* - :mc:`mc find`
|
||||
- .. include:: /minio-cli/minio-mc/mc-find.rst
|
||||
:start-after: start-mc-find-desc
|
||||
:end-before: end-mc-find-desc
|
||||
|
||||
* - :mc:`mc head`
|
||||
- .. include:: /minio-cli/minio-mc/mc-head.rst
|
||||
:start-after: start-mc-head-desc
|
||||
:end-before: end-mc-head-desc
|
||||
|
||||
* - :mc:`mc ilm`
|
||||
- .. include:: /minio-cli/minio-mc/mc-ilm.rst
|
||||
:start-after: start-mc-ilm-desc
|
||||
:end-before: end-mc-ilm-desc
|
||||
|
||||
* - :mc:`mc legalhold`
|
||||
- .. include:: /minio-cli/minio-mc/mc-legalhold.rst
|
||||
:start-after: start-mc-legalhold-desc
|
||||
:end-before: end-mc-legalhold-desc
|
||||
|
||||
* - :mc:`mc lock`
|
||||
- .. include:: /minio-cli/minio-mc/mc-lock.rst
|
||||
:start-after: start-mc-lock-desc
|
||||
:end-before: end-mc-lock-desc
|
||||
|
||||
* - :mc:`mc mb`
|
||||
- .. include:: /minio-cli/minio-mc/mc-mb.rst
|
||||
:start-after: start-mc-mb-desc
|
||||
:end-before: end-mc-mb-desc
|
||||
|
||||
* - :mc:`mc mirror`
|
||||
- .. include:: /minio-cli/minio-mc/mc-mirror.rst
|
||||
:start-after: start-mc-mirror-desc
|
||||
:end-before: end-mc-mirror-desc
|
||||
|
||||
* - :mc:`mc mv`
|
||||
- .. include:: /minio-cli/minio-mc/mc-mv.rst
|
||||
:start-after: start-mc-mv-desc
|
||||
:end-before: end-mc-mv-desc
|
||||
|
||||
* - :mc:`mc policy`
|
||||
- .. include:: /minio-cli/minio-mc/mc-policy.rst
|
||||
:start-after: start-mc-policy-desc
|
||||
:end-before: end-mc-policy-desc
|
||||
|
||||
* - :mc:`mc rb`
|
||||
- .. include:: /minio-cli/minio-mc/mc-rb.rst
|
||||
:start-after: start-mc-rb-desc
|
||||
:end-before: end-mc-rb-desc
|
||||
|
||||
* - :mc:`mc retention`
|
||||
- .. include:: /minio-cli/minio-mc/mc-retention.rst
|
||||
:start-after: start-mc-retention-desc
|
||||
:end-before: end-mc-retention-desc
|
||||
|
||||
* - :mc:`mc rm`
|
||||
- .. include:: /minio-cli/minio-mc/mc-rm.rst
|
||||
:start-after: start-mc-rm-desc
|
||||
:end-before: end-mc-rm-desc
|
||||
|
||||
* - :mc:`mc share`
|
||||
- .. include:: /minio-cli/minio-mc/mc-share.rst
|
||||
:start-after: start-mc-share-desc
|
||||
:end-before: end-mc-share-desc
|
||||
|
||||
* - :mc:`mc sql`
|
||||
- .. include:: /minio-cli/minio-mc/mc-sql.rst
|
||||
:start-after: start-mc-sql-desc
|
||||
:end-before: end-mc-sql-desc
|
||||
|
||||
* - :mc:`mc stat`
|
||||
- .. include:: /minio-cli/minio-mc/mc-stat.rst
|
||||
:start-after: start-mc-stat-desc
|
||||
:end-before: end-mc-stat-desc
|
||||
|
||||
* - :mc:`mc tree`
|
||||
- .. include:: /minio-cli/minio-mc/mc-tree.rst
|
||||
:start-after: start-mc-tree-desc
|
||||
:end-before: end-mc-tree-desc
|
||||
|
||||
* - :mc:`mc update`
|
||||
- .. include:: /minio-cli/minio-mc/mc-update.rst
|
||||
:start-after: start-mc-update-desc
|
||||
:end-before: end-mc-update-desc
|
||||
|
||||
* - :mc:`mc version`
|
||||
- .. include:: /minio-cli/minio-mc/mc-version.rst
|
||||
:start-after: start-mc-version-desc
|
||||
:end-before: end-mc-version-desc
|
||||
|
||||
* - :mc:`mc watch`
|
||||
- .. include:: /minio-cli/minio-mc/mc-watch.rst
|
||||
:start-after: start-mc-watch-desc
|
||||
:end-before: end-mc-watch-desc
|
||||
|
||||
|
||||
:mc-cmd:`mc` also includes an administration extension for managing MinIO
|
||||
deployments. See :program:`mc admin` for more complete documentation.
|
||||
|
||||
.. _mc-configuration:
|
||||
|
||||
Configuration File
|
||||
------------------
|
||||
|
||||
:mc-cmd:`mc` stores data in a configuration file. Use the
|
||||
``--config-dir`` flag to specify a path to a ``JSON`` formatted configuration file.
|
||||
|
||||
For Linux and OSX, the default configuration file location is
|
||||
``~/.mc/config.json``.
|
||||
|
||||
For Windows, :mc-cmd:`mc` attempts to construct a default file path by trying
|
||||
specific environment variables. If a variable is unset, :mc-cmd:`mc` moves
|
||||
to the next variable. If all attempts fail, :mc-cmd:`mc` returns an error.
|
||||
The following list describes each possible file path location in the order
|
||||
:mc-cmd:`mc` checks them:
|
||||
|
||||
#. ``HOME\.mc\config.json``
|
||||
#. ``USERPROFILE\.mc\config.json``
|
||||
#. ``HOMEDRIVE+HOMEPATH\.mc\config.json``
|
||||
|
||||
.. _mc-install:
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
.. include:: /includes/minio-mc-installation.rst
|
||||
|
||||
Quickstart
|
||||
----------
|
||||
|
||||
Ensure that the host machine has :mc-cmd:`mc`
|
||||
:ref:`installed <mc-install>` prior to starting this procedure.
|
||||
|
||||
.. important::
|
||||
|
||||
The following example temporarily disables the bash history to mitigate the
|
||||
risk of authentication credentials leaking in plain text. This is a basic
|
||||
security measure and does not mitigate all possible attack vectors. Defer to
|
||||
security best practices for your operating system for inputting sensitive
|
||||
information on the command line.
|
||||
|
||||
Use the :subcommand:`mc alias add` command to add an Amazon S3-compatible host
|
||||
to the :mc-cmd:`mc` :ref:`configuration <mc-configuration>`.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
bash +o history
|
||||
mc alias add ALIAS ENDPOINT ACCESS_KEY SECRET_KEY --api [S3v2|S3v4]
|
||||
bash -o history
|
||||
|
||||
- Replace ``ALIAS`` with a name to associate to the S3 service.
|
||||
:mc-cmd:`mc` commands typically require ``ALIAS`` as an argument for
|
||||
identifying which S3 service to execute against.
|
||||
|
||||
- Replace ``ENDPOINT`` with the URL endpoint of the S3 service.
|
||||
|
||||
- Replace ``ACCESS_KEY`` and ``SECRET_KEY`` with the access and secret
|
||||
keys for the S3 service.
|
||||
|
||||
- The ``--api`` flag is optional and defaults to ``S3v4`` if ommitted.
|
||||
|
||||
Replace each argument with the required values. Specifying only the
|
||||
``mc config host add`` command starts an input prompt for entering the
|
||||
required values.
|
||||
|
||||
Each of the following tabs contains a provider-specific example:
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: MinIO Server
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias add myminio https://minioserver.example.net ACCESS_KEY SECRET KEY
|
||||
|
||||
.. tab:: AWS S3 Storage
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias add myS3 https://s3.amazon.com/endpoint ACCESS_KEY SECRET KEY
|
||||
|
||||
.. tab:: Google Cloud Storage
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias add myGCS https://storage.googleapis.com/endpoint ACCESS_KEY SECRET KEY
|
||||
|
||||
Use the :command:`mc info` command to test the connection to
|
||||
the newly added MinIO deployment:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc info ALIAS
|
||||
|
||||
.. _minio-mc-global-options:
|
||||
|
||||
Global Options
|
||||
--------------
|
||||
|
||||
.. program:: mc
|
||||
|
||||
.. option:: --debug
|
||||
|
||||
Enables verbose output to the console.
|
||||
|
||||
For example, the following operation adds verbose output to the
|
||||
:command:`mc ls` command:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc --debug ls play
|
||||
|
||||
.. option:: --JSON
|
||||
|
||||
Enables `JSON lines <http://jsonlines.org/>`_ formatted output to the
|
||||
console.
|
||||
|
||||
For example, the following operation adds JSON Lines output to the
|
||||
:command:`mc ls` command:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc --JSON ls play
|
||||
|
||||
.. option:: --no-color
|
||||
|
||||
Disables the built-in color theme for console output. Useful for dumb
|
||||
terminals.
|
||||
|
||||
.. option:: --quiet
|
||||
|
||||
Suppresses console output.
|
||||
|
||||
.. option:: --insecure
|
||||
|
||||
Disables TLS/SSL certificate verification. Allows TLS connectivity to
|
||||
servers with invalid certificates. Exercise caution when using this
|
||||
option against untrusted S3 hosts.
|
||||
|
||||
.. option:: --version
|
||||
|
||||
Displays the current version of :mc-cmd:`mc`.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:hidden:
|
||||
:glob:
|
||||
|
||||
/minio-cli/minio-mc/*
|
||||
|
||||
|
||||
|
||||
|
134
source/minio-cli/minio-mc/mc-alias.rst
Normal file
134
source/minio-cli/minio-mc/mc-alias.rst
Normal file
@ -0,0 +1,134 @@
|
||||
============
|
||||
``mc alias``
|
||||
============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc alias
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-alias-desc
|
||||
|
||||
The :mc-cmd:`mc alias` command provides a convenient interface for
|
||||
managing the list of S3-compatible hosts that :mc-cmd:`mc` can
|
||||
connect to and run operations against.
|
||||
|
||||
:mc-cmd:`mc` commands that operate on S3-compatible services *require*
|
||||
specifying an alias for that service.
|
||||
|
||||
.. end-mc-alias-desc
|
||||
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc-cmd:`~mc alias` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc alias COMMAND [COMMAND FLAGS | -h ] [ARGUMENTS]
|
||||
|
||||
:mc-cmd:`~mc alias` supports the following commands:
|
||||
|
||||
.. mc-cmd:: add, a
|
||||
|
||||
Adds a new S3-compatible host to the configuration file. The command
|
||||
has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias add ALIAS HOSTNAME ACCESS_KEY SECRET_KEY --api [S3v2|S3v4]
|
||||
|
||||
:mc-cmd:`mc alias add` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: ALIAS
|
||||
|
||||
The name to associate to the S3-compatible service.
|
||||
|
||||
The specified string cannot match any existing host aliases. Use
|
||||
:mc-cmd:`~mc alias list` to view the current host aliases before
|
||||
adding a new host.
|
||||
|
||||
.. mc-cmd:: HOSTNAME
|
||||
|
||||
The URL for the S3-compatible service endpoint.
|
||||
|
||||
.. mc-cmd:: ACCESS_KEY
|
||||
|
||||
The access key for authenticating to the S3 service. The
|
||||
``ACCESS_KEY`` must correspond to a user or role on the S3 service.
|
||||
|
||||
:mc-cmd:`mc` can only perform an operation on the S3 service if
|
||||
the ``ACCESS_KEY`` user or role grants the required permissions.
|
||||
|
||||
.. mc-cmd:: SECRET_KEY
|
||||
|
||||
The corresponding secret for the specified ``ACCESS_KEY``.
|
||||
|
||||
.. mc-cmd:: api
|
||||
:option:
|
||||
|
||||
The Amazon S3 Signature version to use when connecting to the
|
||||
S3 service. Supports the following values:
|
||||
|
||||
- ``S3v2``
|
||||
- ``S3v4`` (Default)
|
||||
|
||||
|
||||
.. mc-cmd:: remove, rm
|
||||
|
||||
Removes a host entry from the configuration file. The command has the
|
||||
following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias remove ALIAS
|
||||
|
||||
.. mc-cmd:: list, ls
|
||||
|
||||
Lists all hosts in the configuration file. The command has the following
|
||||
syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias list
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Add a New S3 Service Alias
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias add myminio https://myminio.example.net myminioaccesskey myminiosecretkey
|
||||
|
||||
Remove an Existing S3 Service Alias
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias remove myminio
|
||||
|
||||
|
||||
List All Configured S3 Service Aliases
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc alias list
|
133
source/minio-cli/minio-mc/mc-cat.rst
Normal file
133
source/minio-cli/minio-mc/mc-cat.rst
Normal file
@ -0,0 +1,133 @@
|
||||
==========
|
||||
``mc cat``
|
||||
==========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc cat
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-cat-desc
|
||||
|
||||
The :mc:`mc cat` command concatenates the contents of a file or
|
||||
object to another file or object. You can also use the command to
|
||||
display the contents of the specified file or object to ``STDOUT``.
|
||||
:mc:`~mc cat` has similar functionality to ``cat``.
|
||||
|
||||
.. end-mc-cat-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc cat` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc cat [FLAGS] SOURCE [SOURCE ...]
|
||||
|
||||
:mc:`~mc cat` supports requires following arguments:
|
||||
|
||||
.. mc-cmd:: SOURCE
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The full path to the file or object to concatenate.
|
||||
|
||||
.. mc-cmd:: rewind
|
||||
:option:
|
||||
|
||||
Returns the contents of the object at a specified date or after the
|
||||
specified duration. Enclose the specified date or duration in double
|
||||
quotes ``"``.
|
||||
|
||||
:mc-cmd:`mc cat rewind` requires the specified :mc-cmd:`~mc cat SOURCE`
|
||||
bucket to have Bucket Versioning enabled. See
|
||||
:mc-cmd:`mc versioning`.
|
||||
|
||||
- For a date in time, specify an ISO8601-formatted timestamp. For example:
|
||||
``--rewind "2020.03.24T10:00"``.
|
||||
|
||||
- For duration, specify a string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--rewind "1d2hh3mm4ss"``.
|
||||
|
||||
.. mc-cmd:: encrypt-key
|
||||
:option:
|
||||
|
||||
Encrypt or decrypt objects using server-side encryption with
|
||||
client-specified keys. Specify key-value pairs as ``KEY=VALUE``.
|
||||
|
||||
- Each ``KEY`` represents a bucket or object.
|
||||
- Each ``VALUE`` represents the data key to use for encrypting
|
||||
object(s).
|
||||
|
||||
Enclose the entire list of key-value pairs passed to
|
||||
:mc-cmd:`~mc cat --encrypt-key` in double quotes ``"``.
|
||||
|
||||
:mc-cmd:`~mc cat --encrypt-key` can use the ``MC_ENCRYPT_KEY``
|
||||
environment variable for retrieving a list of encryption key-value pairs
|
||||
as an alternative to specifying them on the command line.
|
||||
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Display the Contents of an Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cat play/mybucket/object.txt
|
||||
|
||||
Display the Contents of a Server Encrypted Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cat --encrypt-key="play/mybucket=32ByteLongSecretKeyMustBeGiven1" play/mybucket/object.txt
|
||||
|
||||
If the secret key contains non-printable characters, specify a ``base64``
|
||||
encoded string instead:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cat --encrypt-key="play/mybucket=MzJieXRlc2xvbmdzZWNyZWFiY2RlZmcJZ2l2ZW5uMjE=" play/mybucket/object.txt
|
||||
|
||||
Display the Past Contents of an Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
To retrieve the contents of an object a specific number of days in the past,
|
||||
specify :mc-cmd:`mc cat --rewind` with a duration of ``##d``:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cat --rewind "10d" play/mybucket/object.txt
|
||||
|
||||
To retrieve the contents of an object at a specific date or time in the past,
|
||||
specify :mc-cmd:`mc cat --rewind` with an ISO8601-formatted timestamp:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cat --rewind "2020.03.04T12:34" play/mybucket/object.txt
|
273
source/minio-cli/minio-mc/mc-cp.rst
Normal file
273
source/minio-cli/minio-mc/mc-cp.rst
Normal file
@ -0,0 +1,273 @@
|
||||
=========
|
||||
``mc cp``
|
||||
=========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc cp
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-cp-desc
|
||||
|
||||
The :mc:`mc cp` command copies data from one or more sources to a target
|
||||
S3-compatible service.
|
||||
|
||||
.. end-mc-cp-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc cp` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc cp [FLAGS] SOURCE [SOURCE...] TARGET
|
||||
|
||||
:mc:`~mc cp` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: SOURCE
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The object or objects to copy. You can specify both local paths
|
||||
and S3 paths using a configured S3 service :mc:`alias <mc alias>`.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
mc cp play/mybucket/object.txt ~/localfiles/mybucket/object.txt TARGET
|
||||
|
||||
If you specify a directory or bucket to :mc-cmd:`~mc cp SOURCE`, you must
|
||||
also specify :mc-cmd-option:`~mc cp recursive` to recursively copy the
|
||||
contents of that directory or bucket. If you omit the ``--recursive``
|
||||
argument, :mc:`~mc cp` only copies objects in the top level of the specified
|
||||
directory or bucket.
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The full path to the bucket to copy the specified
|
||||
:mc-cmd:`~mc cp SOURCES` to. Specify the :mc:`alias <mc alias>`
|
||||
of a configured S3 service as the prefix to the
|
||||
:mc-cmd:`~mc cp TARGET` path.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc cp ~/localfiles/object.txt play/mybucket/
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively copy the contents of each bucket or directory
|
||||
:mc-cmd:`~mc cp SOURCE` to the :mc-cmd:`~mc cp TARGET`
|
||||
bucket.
|
||||
|
||||
.. mc-cmd:: older-than
|
||||
:option:
|
||||
|
||||
Remove object(s) older than the specified time limit. Specify a string
|
||||
in ``#d#hh#mm#ss`` format. For example: ``--older-than 1d2hh3mm4ss``
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: newer-than
|
||||
:option:
|
||||
|
||||
Remove object(s) newer than the specified number of days. Specify a
|
||||
string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--older-than 1d2hh3mm4ss``
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: storage-class, sc
|
||||
:option:
|
||||
|
||||
Set the storage class for the new object(s) on the
|
||||
:mc-cmd:`~mc cp TARGET`.
|
||||
|
||||
See :aws-docs:`AmazonS3/latest/dev/storage-class-intro.html` for
|
||||
more information on S3 storage classses.
|
||||
|
||||
.. mc-cmd:: preserve, a
|
||||
:option:
|
||||
|
||||
Preserve file system attributes and bucket policy rules of the
|
||||
:mc-cmd:`~mc cp SOURCE` directories, buckets, and objects on the
|
||||
:mc-cmd:`~mc cp TARGET` bucket(s).
|
||||
|
||||
.. mc-cmd:: attr
|
||||
:option:
|
||||
|
||||
Add custom metadata for the object. Specify key-value pairs as
|
||||
``KEY=VALUE\;``. For example,
|
||||
``--attr key1=value1\;key2=value2\;key3=value3``.
|
||||
|
||||
.. mc-cmd:: continue, c
|
||||
:option:
|
||||
|
||||
Create or resume a copy session.
|
||||
|
||||
.. mc-cmd:: encrypt
|
||||
:option:
|
||||
|
||||
Encrypt or decrypt objects using server-side encryption with
|
||||
server-managed keys. Specify key-value pairs as ``KEY=VALUE``.
|
||||
|
||||
- Each ``KEY`` represents a bucket or object.
|
||||
- Each ``VALUE`` represents the data key to use for encrypting
|
||||
object(s).
|
||||
|
||||
Enclose the entire list of key-value pairs passed to
|
||||
:mc-cmd-option:`~mc cp encrypt` in double-quotes ``"``.
|
||||
|
||||
:mc-cmd-option:`~mc cp encrypt` can use the ``MC_ENCRYPT`` environment
|
||||
variable for retrieving a list of encryption key-value pairs as an
|
||||
alternative to specifying them on the command line.
|
||||
|
||||
.. mc-cmd:: encrypt-key
|
||||
:option:
|
||||
|
||||
Encrypt or decrypt objects using server-side encryption with
|
||||
client-specified keys. Specify key-value pairs as ``KEY=VALUE``.
|
||||
|
||||
- Each ``KEY`` represents a bucket or object.
|
||||
- Each ``VALUE`` represents the data key to use for encrypting
|
||||
object(s).
|
||||
|
||||
Enclose the entire list of key-value pairs passed to
|
||||
:mc-cmd-option:`~mc cp encrypt-key` in double quotes ``"``.
|
||||
|
||||
:mc-cmd-option:`~mc cp encrypt-key` can use the ``MC_ENCRYPT_KEY``
|
||||
environment variable for retrieving a list of encryption key-value pairs
|
||||
as an alternative to specifying them on the command line.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
:mc:`mc cp` verifies all copy operations to object storage using MD5SUM
|
||||
checksums.
|
||||
|
||||
Interrupted or failed copy operations can resume from the point of failure
|
||||
by issuing the :mc:`mc cp` operation again with the
|
||||
:mc-cmd-option:`~mc cp continue` argument.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Copy a text file to an object storage.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cp myobject.txt play/mybucket
|
||||
|
||||
Copy a text file to an object storage with specified metadata.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cp --attr key1=value1;key2=value2 myobject.txt play/mybucket
|
||||
|
||||
Copy a folder recursively from MinIO cloud storage to Amazon S3 cloud storage with specified metadata.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cp --attr Cache-Control=max-age=90000,min-fresh=9000\;key1=value1\;key2=value2 \
|
||||
--recursive play/mybucket/bucketname/ s3/mybucket/
|
||||
|
||||
|
||||
Copy a text file to an object storage and assign ``storage-class`` REDUCED_REDUNDANCY to the uploaded object.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cp --storage-class REDUCED_REDUNDANCY myobject.txt play/mybucket
|
||||
|
||||
Copy a server-side encrypted file to an object storage.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following example assumes that the ``s3`` and ``myminio`` aliases
|
||||
exists in the :mc:`mc` :ref:`configuration file <mc-configuration>`. See
|
||||
:mc:`mc alias` for more information on aliases.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cp --recursive \
|
||||
--encrypt-key "s3/documents/=32byteslongsecretkeymustbegiven1 , myminio/documents/=32byteslongsecretkeymustbegiven2" \
|
||||
s3/documents/myobject.txt myminio/documents/
|
||||
|
||||
Perform key-rotation on a server-side encrypted object.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
:mc:`mc cp` key rotation requires creating an additional alias with the same
|
||||
endpoing as the target S3 service alias. :mc:`mc cp` effectively decrypts
|
||||
the object using the old secret key, encrypts the object using the new
|
||||
secret key, and replaces the old object with the newly encrypted object.
|
||||
|
||||
The following example assumes that the ``myminio1`` and ``myminio2`` aliases
|
||||
exists in the :mc:`mc` :ref:`configuration file <mc-configuration>`. See
|
||||
:mc:`mc alias` for more information on aliases.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cp --encrypt-key 'myminio1/mybucket=32byteslongsecretkeymustgenerate , myminio2/mybucket/=32byteslongsecretkeymustgenerat1' \
|
||||
myminio1/mybucket/encryptedobject myminio2/mybucket/encryptedobject
|
||||
|
||||
Copy a javascript file to object storage and assign ``Cache-Control`` header to the uploaded object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cp --attr Cache-Control=no-cache myscript.js play/mybucket
|
||||
|
||||
Copy a text file to an object storage and preserve the filesyatem attributes.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc cp -a myobject.txt play/mybucket
|
||||
|
||||
|
65
source/minio-cli/minio-mc/mc-diff.rst
Normal file
65
source/minio-cli/minio-mc/mc-diff.rst
Normal file
@ -0,0 +1,65 @@
|
||||
===========
|
||||
``mc diff``
|
||||
===========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc diff
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-diff-desc
|
||||
|
||||
The :mc:`mc diff` mc computes the differences between two filesystem directories
|
||||
or S3-compatible buckets. :mc:`mc diff` lists only those objects which are
|
||||
missing or which differ in size. :mc:`mc diff` does **not** compare the contents
|
||||
of objects.
|
||||
|
||||
.. end-mc-diff-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc diff` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc diff FIRST SECOND
|
||||
|
||||
:mc:`~mc diff` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: FIRST
|
||||
|
||||
The path to a filesystem directory or S3-compatible bucket.
|
||||
|
||||
.. mc-cmd:: SECOND
|
||||
|
||||
The path to a filesystem directory or S3-compatible bucket.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
:mc:`mc diff` uses the following legend when formatting the diff output:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
FIRST < SECOND - object exists only in FIRST
|
||||
FIRST > SECOND - object exists only in SECOND
|
||||
FIRST ! SECOND - Newer object exists in FIRST
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc diff play/bucket1 play/bucket2
|
134
source/minio-cli/minio-mc/mc-encrypt.rst
Normal file
134
source/minio-cli/minio-mc/mc-encrypt.rst
Normal file
@ -0,0 +1,134 @@
|
||||
==============
|
||||
``mc encrypt``
|
||||
==============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc encrypt
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-encrypt-desc
|
||||
|
||||
The :mc:`mc encrypt` mc sets, updates, or disables the default
|
||||
bucket Server-Side Encryption (SSE) mode. MinIO automatically encrypts
|
||||
objects using the specified SSE mode.
|
||||
|
||||
For more information on configuring SSE, see
|
||||
:doc:`/security/minio-security-server-side-encryption`.
|
||||
|
||||
.. end-mc-encrypt-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc encrypt` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc encrypt COMMAND [COMMAND FLAGS] [ARGUMENTS...]
|
||||
|
||||
:mc:`~mc encrypt` supports the following commands:
|
||||
|
||||
.. mc-cmd:: set
|
||||
|
||||
Sets the default encryption settings for the bucket. The command has the
|
||||
following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc encrypt set ENCRYPTION [KMSKEY] TARGET
|
||||
|
||||
The mc requires the following arguments:
|
||||
|
||||
.. mc-cmd:: ENCRYPTION
|
||||
|
||||
Specify the server-side encryption type to use as the default SSE mode.
|
||||
Supports the following values:
|
||||
|
||||
- ``sse-kms`` - SSE using a Key Management System (KMS)
|
||||
- ``sse-s3`` - SSE using client-provided keys (SSE-C).
|
||||
|
||||
.. mc-cmd:: KMSKEY
|
||||
|
||||
Specify the KMS Master Key to use for performing SSE object encryption.
|
||||
Only required if :mc-cmd:`~mc encrypt ENCRYPTION` is ``sse-kms``.
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The full path to the bucket on which to set the default SSE mode. Specify
|
||||
the :mc-cmd:`~mc alias` of a configured S3 service as the prefix to the
|
||||
TARGET path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc encrypt set ENCRYPTION [KMSKEY] play/mybucket
|
||||
|
||||
.. mc-cmd:: clear
|
||||
|
||||
Removes the default encryption settings for the bucket. The command has
|
||||
the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc encrypt clear TARGET
|
||||
|
||||
The command requires the following argument:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The full path to the bucket on which to clear the default SSE mode.
|
||||
Specify the :mc-cmd:`~mc alias` of a configured S3 service as the prefix
|
||||
to the TARGET path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc encrypt remove play/mybucket
|
||||
|
||||
.. mc-cmd:: info
|
||||
|
||||
Returns the current default bucket encryption settings. The command
|
||||
has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc encrypt info TARGET
|
||||
|
||||
The command requires the following argument:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The full path to the bucket on which to return the default SSE mode.
|
||||
Specify the :mc-cmd:`~mc alias` of a configured S3 service as the prefix
|
||||
to the TARGET path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc encrypt remove play/mybucket
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
:mc:`mc encrypt` makes no assumptions about the MinIO server's current
|
||||
encryption state. Specifying default encryption settings which the
|
||||
server cannot support may result in undesired behavior.
|
||||
|
||||
Setting or modifying the default server-side encryption settings does *not*
|
||||
automatically encrypt or decrypt the existing bucket contents. If the bucket
|
||||
contents *must* have consistent encryption settings, use the
|
||||
:mc:`mc mv` mc with the :mc-cmd:`~mc mv --encrypt` or
|
||||
:mc-cmd:`~mc mv --encrypt-key` arguments to manually modify the
|
||||
encryption settings or encrypted state of the bucket contents *before*
|
||||
changing the bucket default.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
ToDo
|
||||
|
270
source/minio-cli/minio-mc/mc-event.rst
Normal file
270
source/minio-cli/minio-mc/mc-event.rst
Normal file
@ -0,0 +1,270 @@
|
||||
============
|
||||
``mc event``
|
||||
============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc event
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-event-desc
|
||||
|
||||
The :mc:`mc event` command supports adding, removing, and listing
|
||||
the bucket event notifications.
|
||||
|
||||
MinIO automatically sends triggered events to the configured notification
|
||||
targets. MinIO supports notification targets like AMQP, Redis, ElasticSearch,
|
||||
NATS and PostgreSQL. See
|
||||
:doc:`MinIO Bucket Notifications </minio-features/bucket-notifications>`
|
||||
for more information.
|
||||
|
||||
.. end-mc-event-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc event` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc event COMMAND [COMMAND FLAGS | -h] [ARGUMENTS ...]
|
||||
|
||||
:mc:`~mc event` supports the following commands:
|
||||
|
||||
.. mc-cmd:: add
|
||||
|
||||
Adds a new bucket event notification. For supported event types, see
|
||||
:ref:`mc-event-supported-events`. The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc event add TARGET ARN [FLAGS]
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The S3 service :mc:`alias <mc alias>` and bucket to
|
||||
which the command adds the new event notification. Specify the
|
||||
:mc-cmd:`alias <mc alias>` of a configured S3 service as the prefix to
|
||||
the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc event add play/mybucket
|
||||
|
||||
.. mc-cmd:: ARN
|
||||
|
||||
*Required* The :aws-docs:`Amazon Resource Name (ARN)
|
||||
<general/latest/gr/aws-arns-and-namespaces>` of the notification target.
|
||||
|
||||
The MinIO server outputs an ARN for each configured
|
||||
notification target at server startup. See
|
||||
:doc:`/minio-features/bucket-notifications` for more
|
||||
information.
|
||||
|
||||
.. mc-cmd:: event
|
||||
:option:
|
||||
|
||||
The event(s) for which MinIO generates bucket notifications.
|
||||
Specify multiple events using a comma ``,`` delimiter.
|
||||
See :ref:`mc-event-supported-events` for supported events.
|
||||
|
||||
Defaults to ``put,delete, get``.
|
||||
|
||||
.. mc-cmd:: prefix
|
||||
:option:
|
||||
|
||||
The bucket prefix in which the specified :mc-cmd-option:`~mc event event`
|
||||
can trigger a bucket notification.
|
||||
|
||||
For example, given a :mc-cmd:`~mc event TARGET` of ``play/mybucket`` and a
|
||||
:mc-cmd-option:`~mc event prefix` of ``photos``, only events in
|
||||
``play/mybucket/photos`` trigger bucket notifications.
|
||||
|
||||
.. mc-cmd:: suffix
|
||||
:option:
|
||||
|
||||
The bucket suffix in which the specified :mc-cmd-option:`~mc event event`
|
||||
can trigger a bucket notification.
|
||||
|
||||
For example, given a :mc-cmd:`~mc event TARGET` of ``play/mybucket`` and a
|
||||
:mc-cmd-option:`~mc event suffix` of ``.jpg``, only events in
|
||||
``play/mybucket/*.jpg`` trigger bucket notifications.
|
||||
|
||||
.. mc-cmd:: remove
|
||||
|
||||
Removes an existing bucket event notification. The command has the
|
||||
following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc event remove TARGET ARN [FLAGS]
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The S3 service :mc:`alias <mc alias>` and bucket from
|
||||
which the command removes the event notification. Specify the
|
||||
:mc-cmd:`alias <mc alias>` of a configured S3 service as the prefix to
|
||||
the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc event add play/mybucket
|
||||
|
||||
.. mc-cmd:: ARN
|
||||
|
||||
*Required* The :aws-docs:`Amazon Resource Name (ARN)
|
||||
<general/latest/gr/aws-arns-and-namespaces>` of the notification target.
|
||||
|
||||
The MinIO server outputs an ARN for each configured
|
||||
notification target at server startup. See
|
||||
:doc:`/minio-features/bucket-notifications` for more information.
|
||||
|
||||
.. mc-cmd:: force
|
||||
:option:
|
||||
|
||||
Removes all events on the :mc-cmd:`~mc event TARGET` bucket with the
|
||||
:mc-cmd-option:`~mc event ARN` notification target.
|
||||
|
||||
.. mc-cmd:: event
|
||||
:option:
|
||||
|
||||
The event(s) to remove. Specify multiple events using a comma ``,``
|
||||
delimiter. See :ref:`mc-event-supported-events` for supported events.
|
||||
|
||||
Defaults to removing all events on the :mc-cmd:`~mc event TARGET` bucket
|
||||
with the :mc-cmd-option:`~mc event ARN` notification target.
|
||||
|
||||
.. mc-cmd:: prefix
|
||||
:option:
|
||||
|
||||
The bucket prefix in which the command removes bucket notifications.
|
||||
|
||||
For example, given a :mc-cmd:`~mc event TARGET` of ``play/mybucket`` and a
|
||||
:mc-cmd-option:`~mc event prefix` of ``photos``, the command only removes
|
||||
bucket notifications in ``play/mybucket/photos``.
|
||||
|
||||
.. mc-cmd:: suffix
|
||||
:option:
|
||||
|
||||
The bucket suffix in which the command removes bucket notifications.
|
||||
|
||||
For example, given a :mc-cmd:`~mc event TARGET` of ``play/mybucket`` and a
|
||||
:mc-cmd-option:`~mc event suffix` of ``.jpg``, the command only removes
|
||||
bucket notifications in ``play/mybucket/*.jpg``.
|
||||
|
||||
.. mc-cmd:: list
|
||||
|
||||
Lists bucket event notifications.
|
||||
|
||||
The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc event add TARGET ARN [FLAGS]
|
||||
|
||||
:mc-cmd:`~mc alias list` supports the following arguments
|
||||
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The S3 service :mc:`alias <mc alias>` and bucket to
|
||||
which the command lists event notification. Specify the
|
||||
:mc-cmd:`alias <mc alias>` of a configured S3 service as the prefix to
|
||||
the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc event add play/mybucket
|
||||
|
||||
.. mc-cmd:: ARN
|
||||
|
||||
*Required* The :aws-docs:`Amazon Resource Name (ARN)
|
||||
<general/latest/gr/aws-arns-and-namespaces>` of the bucket resource.
|
||||
|
||||
The MinIO server outputs an ARN for each configured
|
||||
notification target at server startup. See
|
||||
:doc:`/minio-features/bucket-notifications` for more information.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
.. _mc-event-supported-events:
|
||||
|
||||
Supported Bucket Events
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
MinIO supports the following S3 events.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 20 80
|
||||
:width: 100%
|
||||
|
||||
* - MinIO Alias
|
||||
- Corresponding S3 Event
|
||||
|
||||
* - ``put``
|
||||
- ``s3:ObjectCreated:Put``
|
||||
|
||||
* - ``completeMultipartUpload``
|
||||
- ``s3:ObjectCreated:CompleteMultipartUpload``
|
||||
|
||||
* - ``head``
|
||||
- ``s3:ObjectAccessed:Head``
|
||||
|
||||
* - ``post``
|
||||
- ``s3:ObjectCreated:Post``
|
||||
|
||||
* - ``delete``
|
||||
- ``s3:ObjectRemoved:Delete``
|
||||
|
||||
* - ``copy``
|
||||
- ``s3:ObjectCreated:Copy``
|
||||
|
||||
* - ``get``
|
||||
- ``s3:ObjectAccessed:Get``
|
||||
|
||||
For more complete documentation on the listed S3 events, see
|
||||
:s3-docs:`S3 Supported Event Types
|
||||
<NotificationHowTo.html#notification-how-to-event-types-and-destinations>`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Create a New Notification Event in Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc event play/mybucket arn:minio:sqs::notification-target-name:notification-target \
|
||||
--event put,delete
|
||||
|
||||
|
||||
Remove an Existing Notification Event in Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc event play/mybucket arn:minio:sqs::notification-target-name:notification-target \
|
||||
--event put,delete
|
||||
|
||||
|
223
source/minio-cli/minio-mc/mc-find.rst
Normal file
223
source/minio-cli/minio-mc/mc-find.rst
Normal file
@ -0,0 +1,223 @@
|
||||
===========
|
||||
``mc find``
|
||||
===========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc find
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-find-desc
|
||||
|
||||
The :mc:`mc find` command searches the specified paths using
|
||||
the given criteria and returns only those objects that match the criteria.
|
||||
|
||||
.. end-mc-find-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc find` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc find PATH [FLAGS]
|
||||
|
||||
:mc:`~mc find` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: PATH
|
||||
|
||||
The full path to search. Specify the :mc:`~mc alias` of
|
||||
a configured S3 service as the prefix to the
|
||||
:mc-cmd:`~mc mirror PATH`. For example:
|
||||
|
||||
.. code-block::
|
||||
|
||||
mc find play/mybucket [FLAGS]
|
||||
|
||||
.. mc-cmd:: exec
|
||||
:option:
|
||||
|
||||
Spawns an external process for each object returned by
|
||||
:mc:`mc find`. Supports
|
||||
:ref:`substitution formatting <mc-find-substitution-format>` of the
|
||||
output.
|
||||
|
||||
.. mc-cmd:: ignore
|
||||
:option:
|
||||
|
||||
Exclude objects whose names match the specified wildcard pattern.
|
||||
|
||||
.. mc-cmd:: name
|
||||
:option:
|
||||
|
||||
Return objects whose names match the specified wildcard pattern.
|
||||
|
||||
.. mc-cmd:: older
|
||||
:option:
|
||||
|
||||
Mirror object(s) older than the specified time limit. Specify a string
|
||||
in ``#d#hh#mm#ss`` format. For example: ``--older-than 1d2hh3mm4ss``
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: newer
|
||||
:option:
|
||||
|
||||
Mirror object(s) newer than the specified number of days. Specify a
|
||||
string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--older-than 1d2hh3mm4ss``
|
||||
|
||||
.. mc-cmd:: path
|
||||
:option:
|
||||
|
||||
Return the contents of directories whose names match the specified
|
||||
wildcard pattern.
|
||||
|
||||
.. mc-cmd:: print
|
||||
:option:
|
||||
|
||||
Prints results to ``STDOUT``. Supports
|
||||
:ref:`substitution formatting <mc-find-substitution-format>` of the
|
||||
output.
|
||||
|
||||
.. mc-cmd:: regex
|
||||
:option:
|
||||
|
||||
Returns objects or the contents of directories whose names match the
|
||||
specified PCRE regex pattern.
|
||||
|
||||
.. mc-cmd:: larger
|
||||
:option:
|
||||
|
||||
Match all objects larger than the specified size in
|
||||
:ref:`units <mc-find-units>`.
|
||||
|
||||
.. mc-cmd:: smaller
|
||||
:option:
|
||||
|
||||
Match all objects smaller than the specifized size in
|
||||
:ref:`units <mc-find-units>`.
|
||||
|
||||
.. mc-cmd:: maxdepth
|
||||
:option:
|
||||
|
||||
Limits directory navigation to the specified depth.
|
||||
|
||||
.. mc-cmd:: watch
|
||||
:option:
|
||||
|
||||
Continuously monitor the :mc-cmd:`~mc find PATH` and return
|
||||
any new objects which match the specified criteria.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
.. _mc-find-units:
|
||||
|
||||
Units of Measurement
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The :mc-cmd-option:`mc find smaller` and :mc-cmd-option:`mc find larger` flags
|
||||
accept the following case-insensitive suffixes to represent the unit of the
|
||||
specified size value:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 20 80
|
||||
:width: 100%
|
||||
|
||||
* - Suffix
|
||||
- Unit Size
|
||||
|
||||
* - ``k``
|
||||
- KB (Kilobyte, 1000 Bytes)
|
||||
|
||||
* - ``m``
|
||||
- MB (Megabyte, 1000 Kilobytes)
|
||||
|
||||
* - ``g``
|
||||
- GB (Gigabyte, 1000 Megabytes)
|
||||
|
||||
* - ``t``
|
||||
- TB (Terrabyte, 1000 Gigabytes)
|
||||
|
||||
* - ``ki``
|
||||
- KiB (Kibibyte, 1024 Bites)
|
||||
|
||||
* - ``mi``
|
||||
- MiB (Mebibyte, 1024 Kibibytes)
|
||||
|
||||
* - ``gi``
|
||||
- GiB (Gibibyte, 1024 Mebibytes)
|
||||
|
||||
* - ``ti``
|
||||
- TiB (Tebibyte, 1024 Gibibytes)
|
||||
|
||||
Omitting the suffix defaults to ``bytes``.
|
||||
|
||||
|
||||
.. _mc-find-substitution-format:
|
||||
|
||||
Substitution Format
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The :mc-cmd-option:`mc find exec` and :mc-cmd-option:`mc find print` commands
|
||||
support string substitutions with special interpretations for following
|
||||
keywords.
|
||||
|
||||
The following keywords are supported for both filesystem and S3 service targets:
|
||||
|
||||
- ``{}`` - Substitutes to full path.
|
||||
- ``{base}`` - Substitutes to basename of path.
|
||||
- ``{dir}`` - Substitutes to dirname of the path.
|
||||
- ``{size}`` - Substitutes to object size of the path.
|
||||
- ``{time}`` - Substitutes to object modified time of the path.
|
||||
|
||||
The following keyword is supported only for S3 service targets:
|
||||
|
||||
- ``{url}`` - Substitutes to a shareable URL of the path.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Find All Objects with Specific File Extension
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc find play/bucket --name "*.jpg"
|
||||
|
||||
Find All Matching Objects and Copy To S3 Service
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc find ~/data/images/ --name "*.jpg" --exec "mc cp {} play/images/"
|
||||
|
||||
To continuously watch the specified directory and copy new objects,
|
||||
include the :mc-cmd-option:`~mc find watch` argument:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc find ~/data/images/ --name "*.jpg" --watch --exec "mc cp {} play/images/"
|
||||
|
||||
|
104
source/minio-cli/minio-mc/mc-head.rst
Normal file
104
source/minio-cli/minio-mc/mc-head.rst
Normal file
@ -0,0 +1,104 @@
|
||||
===========
|
||||
``mc head``
|
||||
===========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc head
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-head-desc
|
||||
|
||||
The :mc:`mc head` command displays the first ``n`` lines of an object,
|
||||
where ``n`` is an argument specified to the command.
|
||||
|
||||
.. end-mc-head-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc head` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc head [FLAGS] SOURCE [SOURCE...]
|
||||
|
||||
:mc:`~mc head` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: --lines, -n
|
||||
|
||||
The number of lines to print.
|
||||
|
||||
Defaults to ``10``.
|
||||
|
||||
.. mc-cmd:: SOURCE
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The object or objects to print. You can specify both local paths
|
||||
and S3 paths using a configured S3 service :mc:`alias <mc alias>`.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
mc head play/mybucket/object.txt ~/localfiles/mybucket/object.txt
|
||||
|
||||
.. mc-cmd:: encrypt-key
|
||||
:option:
|
||||
|
||||
Encrypt or decrypt objects using server-side encryption with
|
||||
client-specified keys. Specify key-value pairs as ``KEY=VALUE``.
|
||||
|
||||
- Each ``KEY`` represents a bucket or object.
|
||||
- Each ``VALUE`` represents the data key to use for encrypting
|
||||
object(s).
|
||||
|
||||
Enclose the entire list of key-value pairs passed to
|
||||
:mc-cmd-option:`~mc head encrypt-key` in double quotes ``"``.
|
||||
|
||||
:mc-cmd-option:`~mc head encrypt-key` can use the ``MC_ENCRYPT_KEY``
|
||||
environment variable for retrieving a list of encryption key-value pairs
|
||||
as an alternative to specifying them on the command line.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
:mc:`mc head` makes no assumptions about the format of the object data.
|
||||
If the object data is not human readable, the output of :mc:`mc head`
|
||||
will also not be human readable.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Display ``n`` Lines of an Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc head --lines 20 play/mybucket/myobject.txt
|
||||
|
||||
Display ``n`` Lines of an Encrypted Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc head lines --20 \
|
||||
--encrypt-key "play/mybucket=32byteslongsecretkeymustbegiven1" \
|
||||
play/mybucket/myobject.txt
|
280
source/minio-cli/minio-mc/mc-ilm.rst
Normal file
280
source/minio-cli/minio-mc/mc-ilm.rst
Normal file
@ -0,0 +1,280 @@
|
||||
==========
|
||||
``mc ilm``
|
||||
==========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc ilm
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-ilm-desc
|
||||
|
||||
The :mc:`mc ilm` command manages object lifecycle management
|
||||
rules on a bucket. See the AWS documentation on
|
||||
:s3-docs:`Object Lifecycle Management <object-lifecycle-mgmt.html>` for more
|
||||
information.
|
||||
|
||||
.. end-mc-ilm-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`mc ilm` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc ilm COMMAND [COMMAND FLAGS] [ARGUMENTS...]
|
||||
|
||||
:mc:`mc ilm` supports the following subcommands:
|
||||
|
||||
.. mc-cmd:: list
|
||||
|
||||
Lists the current lifecycle management rules of the specified bucket. The
|
||||
subcommand has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc ilm list [FLAGS] TARGET
|
||||
|
||||
The subcommand supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the bucket from which to list existing
|
||||
lifecycle management rules. Specify the :mc-cmd:`alias <mc alias>`
|
||||
of a configured S3 service as the prefix to the ``TARGET`` path.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc ilm list play/mybucket
|
||||
|
||||
.. mc-cmd:: expiry
|
||||
:option:
|
||||
|
||||
:mc-cmd:`mc ilm` returns only fields related to lifecycle rule expiration.
|
||||
|
||||
.. mc-cmd:: transition
|
||||
:option:
|
||||
|
||||
:mc-cmd:`mc ilm` returns only fields related to lifecycle rule transition.
|
||||
|
||||
.. mc-cmd:: minimum
|
||||
:option:
|
||||
|
||||
:mc-cmd:`mc ilm` returns only the following fields:
|
||||
|
||||
- ``id``
|
||||
- ``prefix``
|
||||
- ``status``
|
||||
- ``transition set``
|
||||
- ``expiry set``
|
||||
|
||||
.. mc-cmd:: add
|
||||
|
||||
Adds or modifies bucket lifecycle management rules. The command has
|
||||
the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc ilm add [FLAGS] TARGET
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the bucket from which to add or modify the
|
||||
lifecycle management rule. Specify the :mc-cmd:`alias <mc alias>`
|
||||
of a configured S3 service as the prefix to the ``TARGET`` path.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc ilm list play/mybucket
|
||||
|
||||
.. mc-cmd:: id
|
||||
:option:
|
||||
|
||||
*Required* The unique name of the rule. Specify the
|
||||
:mc-cmd-option:`mc ilm add id` of an existing rule to modify the
|
||||
lifecycle configuration of that rule.
|
||||
|
||||
.. mc-cmd:: prefix
|
||||
:option:
|
||||
|
||||
The path to the specific subset of the :mc-cmd:`~mc ilm add TARGET` bucket
|
||||
on which to apply the lifecycle configuration rule. MinIO appends the
|
||||
:mc-cmd-option:`~mc cmd add prefix` field to the ``TARGET`` path to
|
||||
construct the full path.
|
||||
|
||||
Omit to apply the rule to the entire ``TARGET`` bucket.
|
||||
|
||||
.. mc-cmd:: tags
|
||||
:option:
|
||||
|
||||
One or more ampersand ``&``-delimited key-value pairs describing
|
||||
the object tags to which to apply the lifecycle configuration rule.
|
||||
|
||||
.. mc-cmd:: expiry-date
|
||||
:option:
|
||||
|
||||
The ISO-8601-formatted date after which MinIO removes objects
|
||||
covered by the rule. Specifying a date that is *prior* to the
|
||||
current date marks all objects covered by the rule for removal.
|
||||
|
||||
.. mc-cmd:: expiry-days
|
||||
:option:
|
||||
|
||||
The number of days from object creation after which MinIO removes
|
||||
objects covered by the rule.
|
||||
|
||||
.. mc-cmd:: transition-date
|
||||
:option:
|
||||
|
||||
The ISO-8601-formatted date after which MinIO transitions objects
|
||||
covered by the rule to the specified ``--storage-class``.
|
||||
Specifying a date that is *prior* to the current date marks all
|
||||
objects covered by the rule for transition.
|
||||
|
||||
.. mc-cmd:: transition-days
|
||||
:option:
|
||||
|
||||
The number of days from object creation after which MinIO
|
||||
transitions objects covered by the rule to the specified
|
||||
``--storage-class``.
|
||||
|
||||
.. mc-cmd:: storage-class
|
||||
:option:
|
||||
|
||||
The Amazon S3 storage class to transition objects covered by the
|
||||
rule. See :s3-docs:`Transition objects using Amazon S3 Lifecycle
|
||||
<lifecycle-transition-general-considerations.html>` for more
|
||||
information on S3 storage classes.
|
||||
|
||||
.. mc-cmd:: disable
|
||||
:option:
|
||||
|
||||
Disables the rule with matching :mc-cmd-option:`~mc ilm add id`.
|
||||
|
||||
.. mc-cmd:: remove
|
||||
|
||||
Removes an existing lifecycle management rule from the bucket. The
|
||||
command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc ilm remove [FLAGS] TARGET
|
||||
|
||||
The command supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the bucket from which to remove the
|
||||
specified lifecycle management rule. Specify the :mc-cmd:`alias
|
||||
<mc alias>` of a configured S3 service as the prefix to the
|
||||
``TARGET`` path.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc ilm remove [FLAGS] play/mybucket
|
||||
|
||||
.. mc-cmd:: id
|
||||
|
||||
*Required* The unique name of the rule.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`mc ilm remove all`
|
||||
|
||||
.. mc-cmd:: all
|
||||
|
||||
*Required* Removes all rules in the bucket. Mutually exclusive with
|
||||
:mc-cmd-option:`mc ilm remove id`.
|
||||
|
||||
Requires including :mc-cmd-option:`~mc ilm remove force`.
|
||||
|
||||
.. mc-cmd:: force
|
||||
|
||||
Required if specifying :mc-cmd-option:`~mc ilm remove all`.
|
||||
|
||||
.. mc-cmd:: export
|
||||
|
||||
Export the JSON-formatted lifecycle configuration to ``STDOUT``. The command
|
||||
has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc ilm export TARGET
|
||||
|
||||
The command supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the bucket from which to export the
|
||||
configured lifecycle management rules. Specify the
|
||||
:mc-cmd:`alias <mc alias>` of a configured S3 service as the prefix
|
||||
to the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc ilm export play/mybucket > play_mybucket_lifecycle_rules.json
|
||||
|
||||
.. mc-cmd:: import
|
||||
|
||||
Import a JSON-formatted lifecycle configuration from ``STDIN``. The command
|
||||
has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc ilm import TARGET
|
||||
|
||||
The command supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the bucket from which to apply the imported
|
||||
lifecycle management rules. Specify the :mc-cmd:`alias <mc alias>` of a
|
||||
configured S3 service as the prefix to the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc ilm import play/mybucket < play_mybucket_lifecycle_rules.json
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Add a Bucket Lifecycle Management Rule
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc ilm add --id "Devices" --expiry-date "2021-01-23" play/mybucket
|
||||
|
||||
|
||||
Remove a Bucket Lifecycle Management Rule
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc ilm remove --id "Devices" play/mybucket
|
120
source/minio-cli/minio-mc/mc-legalhold.rst
Normal file
120
source/minio-cli/minio-mc/mc-legalhold.rst
Normal file
@ -0,0 +1,120 @@
|
||||
================
|
||||
``mc legalhold``
|
||||
================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc legalhold
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-legalhold-desc
|
||||
|
||||
The :mc:`mc legalhold` command enables or disables object legal hold.
|
||||
Enabling legal hold on an object prevents any modification or deletion
|
||||
of the object and is equivalent to setting Write-Once Read-Only (WORM)
|
||||
mode on the object.
|
||||
|
||||
.. end-mc-legalhold-desc
|
||||
|
||||
.. important::
|
||||
|
||||
:mc:`mc legalhold` *requires* that the specified bucket has object locking
|
||||
enabled. You can **only** enable object locking at bucket creation.
|
||||
|
||||
See :mc-cmd-option:`mc mb with-lock` for documentation on creating
|
||||
buckets with object locking enabled.
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc legalhold` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc legalhold [FLAGS] TARGET [ ON | OFF ]
|
||||
|
||||
:mc:`~mc legalhold` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the object or bucket on which to enable or
|
||||
disable the legal hold. Specify the :mc-cmd:`alias <mc alias>`
|
||||
of a configured S3 service as the prefix to the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc legalhold play/mybucket
|
||||
|
||||
You can specify a bucket prefix to apply the legal hold to only objects
|
||||
in the specified prefix. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc legalhold play/mybucket/mydata
|
||||
|
||||
If you specify a path to a bucket or bucket prefix, you must also specify
|
||||
:mc-cmd-option:`mc legalhold recursive`.
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
|
||||
Applies the legal hold recursively to all objects in the
|
||||
:mc-cmd:`~mc legalhold TARGET` bucket.
|
||||
|
||||
.. mc-cmd:: ACTION
|
||||
|
||||
*Required*
|
||||
|
||||
Specify ``ON`` to enable legal hold on the :mc-cmd:`~mc legalhold TARGET`
|
||||
path.
|
||||
|
||||
Specify ``OFF`` to disable legal hold on the :mc-cmd:`~mc legalhold TARGET`
|
||||
path.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
:mc:`mc legalhold` *requires* that the specified bucket has object locking
|
||||
enabled. You can **only** enable object locking at bucket creation. See
|
||||
:mc-cmd-option:`mc mb with-lock` for documentation on creating buckets with
|
||||
object locking enabled.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Enable Legal Hold on Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc legalhold --recursive play/mybucket ON
|
||||
|
||||
Enable Legal Hold on an Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc legalhold --recursive play/mybucket/myobject.csv ON
|
||||
|
171
source/minio-cli/minio-mc/mc-lock.rst
Normal file
171
source/minio-cli/minio-mc/mc-lock.rst
Normal file
@ -0,0 +1,171 @@
|
||||
===========
|
||||
``mc lock``
|
||||
===========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc lock
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-lock-desc
|
||||
|
||||
The :mc:`mc lock` command sets or gets the bucket default object lock
|
||||
configuration. Object locking enables Write-Once Read-Many (WORM)
|
||||
object retention for a configurable period of time.
|
||||
|
||||
.. end-mc-lock-desc
|
||||
|
||||
Use :mc:`mc retention` to set object lock settings on specific objects
|
||||
in a bucket. :mc:`mc retention` overrides any bucket default lock
|
||||
settings set using :mc:`mc lock`.
|
||||
|
||||
.. important::
|
||||
|
||||
:mc:`mc lock` *requires* that the specified bucket has object locking
|
||||
enabled. You can **only** enable object locking at bucket creation.
|
||||
|
||||
See :mc-cmd-option:`mc mb with-lock` for documentation on creating
|
||||
buckets with object locking enabled.
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc lock` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc lock TARGET COMMAND | MODE VALIDITY
|
||||
|
||||
:mc:`~mc lock` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the bucket for which to set or get the bucket
|
||||
default object lock configuration. Specify the :mc-cmd:`alias <mc alias>` of
|
||||
a configured S3-compatible service as the prefix to the ``TARGET`` bucket
|
||||
path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc lock play/mybucket COMMAND | MODE VALIDITY
|
||||
|
||||
.. mc-cmd:: info
|
||||
|
||||
Retrieves the current object lock configuation for the
|
||||
:mc-cmd:`~mc lock TARGET` bucket.
|
||||
|
||||
Mutually exclusive with :mc-cmd:`mc lock MODE`.
|
||||
|
||||
.. mc-cmd:: clear
|
||||
|
||||
Unsets the current object lock configuration for the
|
||||
:mc-cmd:`~mc lock TARGET` bucket.
|
||||
|
||||
Mutually exclusive with :mc-cmd:`mc lock MODE`.
|
||||
|
||||
.. mc-cmd:: MODE
|
||||
|
||||
Sets the locking mode for the :mc-cmd:`~mc lock TARGET` bucket. Specify
|
||||
one of the following supported values:
|
||||
|
||||
- ``governance``
|
||||
- ``compliance``
|
||||
|
||||
See the AWS S3 documentation on :s3-docs:`Object Lock Overview
|
||||
<object-lock-overview.html>` for more information on the supported
|
||||
modes.
|
||||
|
||||
Requires specifying :mc-cmd:`~mc lock VALIDITY`.
|
||||
|
||||
Mutually exclusive with :mc-cmd:`mc lock info` and
|
||||
:mc-cmd:`mc lock clear`.
|
||||
|
||||
.. mc-cmd:: VALIDITY
|
||||
|
||||
The duration which objects remain in the specified
|
||||
:mc-cmd:`~mc lock MODE` after creation.
|
||||
|
||||
- For days, specify a string formatted as ``Nd``. For example,
|
||||
``30d`` for 30 days after object creation.
|
||||
|
||||
- For years, specify a string formatted as ``Ny``. For example,
|
||||
``1y`` for 1 year after object creation.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
:mc:`mc lock` *requires* that the specified bucket has object locking
|
||||
enabled. You can **only** enable object locking at bucket creation. See
|
||||
:mc-cmd-option:`mc mb with-lock` for documentation on creating buckets with
|
||||
object locking enabled.
|
||||
|
||||
Interaction with Legal Holds
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
MinIO supports enabling a legal hold lock on objects. Enabling legal hold on an
|
||||
object prevents any modification or deletion of the object.
|
||||
|
||||
An object with an active legal hold remains locked regardless of the :mc:`mc
|
||||
lock` bucket configuration. Setting, modifying, or clearing the bucket default
|
||||
object lock settings has no effect on objects under legal hold. Object lock
|
||||
settings only apply after the legal hold is explicitly disabled.
|
||||
|
||||
For more information on object legal holds, see :mc-cmd:`mc legalhold`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Get Bucket Object Lock Configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc legalhold play/mybucket info
|
||||
|
||||
Clear Bucket Object Lock Configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc legalhold play/mybucket clear
|
||||
|
||||
Set Bucket Object Lock Configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc legalhold play/mybucket governance 30d
|
95
source/minio-cli/minio-mc/mc-mb.rst
Normal file
95
source/minio-cli/minio-mc/mc-mb.rst
Normal file
@ -0,0 +1,95 @@
|
||||
=========
|
||||
``mc mb``
|
||||
=========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc mb
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-mb-desc
|
||||
|
||||
The :mc:`mc mb` command creates a new bucket or directory at the
|
||||
specified path. For targets on an S3-compatible service, :mc:`mc mb`
|
||||
creates a new bucket. For targets on a filesystem, :mc:`mc mb` has
|
||||
equivalent functionality to ``mkdir -p``.
|
||||
|
||||
.. end-mc-mb-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc mb` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mb [FLAGS] TARGET [TARGET...]
|
||||
|
||||
:mc:`~mc mb` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the bucket or directory to create. If
|
||||
creating a directory on a filesystem, :mc:`mc mb` creates all required
|
||||
folders in the specified path similar to ``mkdir -p``.
|
||||
|
||||
To create a bucket, specify the :mc-cmd:`alias <mc alias>` of a configured
|
||||
S3 service as the prefix to the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc mb [FLAGS] play/mybucket
|
||||
|
||||
.. mc-cmd:: region
|
||||
:option:
|
||||
|
||||
The region in which to create the specified bucket. Has no effect if the
|
||||
specified :mc-cmd:`~mc mb TARGET` is a filesystem directory.
|
||||
|
||||
.. mc-cmd:: ignore-existing, p
|
||||
:option:
|
||||
|
||||
Directs :mc-cmd:`mc mb` to do nothing if the bucket or directory already
|
||||
exists.
|
||||
|
||||
.. mc-cmd:: with-lock, l
|
||||
:option:
|
||||
|
||||
Enables object locking on the specified bucket. Has no effect if the
|
||||
specified :mc-cmd:`~mc mb TARGET` is a filesystem directory.
|
||||
|
||||
.. important::
|
||||
|
||||
You can *only* enable object locking when creating the bucket.
|
||||
You cannot use features like Bucket Lifecycle Management,
|
||||
Bucket Object Retention, or Bucket Legal Hold if object locking is
|
||||
disabled for a bucket.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Certain S3 services may restrict the number of buckets a given user or account
|
||||
can create. For example, Amazon S3 limits each account to
|
||||
:s3-docs:`100 buckets <BucketRestrictions.html>`. :mc:`mc mb` may return an
|
||||
error if the user has reached bucket limits on the target S3 service.
|
||||
|
||||
MinIO Object Storage deployments do not place any limits on the number of
|
||||
buckets each user can create.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc mb --with-lock play/mybucket
|
173
source/minio-cli/minio-mc/mc-mirror.rst
Normal file
173
source/minio-cli/minio-mc/mc-mirror.rst
Normal file
@ -0,0 +1,173 @@
|
||||
=============
|
||||
``mc mirror``
|
||||
=============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc mirror
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-mirror-desc
|
||||
|
||||
The :mc:`mc mirror` command synchronizes content between a source
|
||||
filesystem and a target S3-compatible service. :mc:`~mc mirror` has
|
||||
similar functionality to ``rsync``.
|
||||
|
||||
.. end-mc-mirror-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc mirror` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc mirror [FLAGS] SOURCE TARGET
|
||||
|
||||
:mc:`~mc mirror` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: SOURCE
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The full path to the object or directory to synchronize. If specifying
|
||||
a directory, :mc:`mc mirror` synchronizes all objects in the
|
||||
directory.
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The full path to bucket in which :mc:`mc mirror` copies
|
||||
synchronized SOURCE objects. Specify the :mc:`alias <mc alias>` of a
|
||||
configured S3 service as the prefix to the :mc-cmd:`~mc mirror TARGET`
|
||||
path.
|
||||
|
||||
.. mc-cmd:: overwrite
|
||||
:option:
|
||||
|
||||
Overwrites object(s) on the :mc-cmd:`~mc mirror TARGET`.
|
||||
|
||||
.. mc-cmd:: remove
|
||||
:option:
|
||||
|
||||
Removes extraneous object(s) on the target.
|
||||
|
||||
.. mc-cmd:: watch, w
|
||||
:option:
|
||||
|
||||
Continuously monitor the :mc-cmd:`~mc mirror SOURCE` path and
|
||||
synchronize changes.
|
||||
|
||||
.. mc-cmd:: region
|
||||
:option:
|
||||
|
||||
Specify the ``string`` region when creating new bucket(s) on the
|
||||
target.
|
||||
|
||||
Defaults to ``"us-east-1"``.
|
||||
|
||||
.. mc-cmd:: preserve, a
|
||||
:option:
|
||||
|
||||
Preserve file system attributes and bucket policy rules of the
|
||||
:mc-cmd:`~mc mirror SOURCE` on the
|
||||
:mc-cmd:`~mc mirror TARGET`.
|
||||
|
||||
.. mc-cmd:: exclude
|
||||
:option:
|
||||
|
||||
Exclude object(s) in the :mc-cmd:`~mc mirror SOURCE` path that
|
||||
match the specified object name pattern.
|
||||
|
||||
.. mc-cmd:: older-than
|
||||
:option:
|
||||
|
||||
Mirror object(s) older than the specified time limit. Specify a string
|
||||
in ``#d#hh#mm#ss`` format. For example: ``--older-than 1d2hh3mm4ss``
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: newer-than
|
||||
:option:
|
||||
|
||||
Mirror object(s) newer than the specified number of days. Specify a
|
||||
string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--older-than 1d2hh3mm4ss``
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: fake
|
||||
:option:
|
||||
|
||||
Perform a fake mirror operation. Use this operation to perform
|
||||
validate that the :mc:`mc mirror` operation will only
|
||||
mirror the desired objects or buckets.
|
||||
|
||||
.. mc-cmd:: storage-class, sc
|
||||
:option:
|
||||
|
||||
Set the storage class for the new object(s) on the
|
||||
:mc-cmd:`~mc mirror TARGET`.
|
||||
|
||||
See the Amazon documentation on
|
||||
:aws-docs:`Storage Classes <AmazonS3/latest/dev/storage-class-intro.html>`
|
||||
for more information on S3 storage classses.
|
||||
|
||||
.. mc-cmd:: encrypt-key
|
||||
:option:
|
||||
|
||||
Encrypt or decrypt objects using server-side encryption with
|
||||
client-specified keys. Specify key-value pairs as ``KEY=VALUE``.
|
||||
|
||||
- Each ``KEY`` represents a bucket or object.
|
||||
- Each ``VALUE`` represents the data key to use for encrypting
|
||||
object(s).
|
||||
|
||||
Enclose the entire list of key-value pairs passed to
|
||||
:mc-cmd-option:`~mc mirror encrypt-key` in double quotes ``"``.
|
||||
|
||||
:mc-cmd-option:`~mc mirror encrypt-key` can use the ``MC_ENCRYPT_KEY``
|
||||
environment variable for retrieving a list of encryption key-value pairs
|
||||
as an alternative to specifying them on the command line.
|
||||
|
||||
You can only delete encrypted objects if you specify the correct
|
||||
:mc-cmd-option:`~mc mirror encrypt-key` secret key.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Mirror a Local Directory to an S3 Service
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
|
||||
.. code-block::
|
||||
:class: copyable
|
||||
|
||||
mc mirror ~/data/ play/mybucket
|
||||
|
||||
Continuously Mirror a Local Directory to an S3 Service
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
|
||||
.. code-block::
|
||||
:class: copyable
|
||||
|
||||
mc mirror --watch ~/data/ play/mybucket
|
274
source/minio-cli/minio-mc/mc-mv.rst
Normal file
274
source/minio-cli/minio-mc/mc-mv.rst
Normal file
@ -0,0 +1,274 @@
|
||||
=========
|
||||
``mc mv``
|
||||
=========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc mv
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-mv-desc
|
||||
|
||||
The :mc:`mc mv` command moves data from one or more sources to a target
|
||||
S3-compatible service.
|
||||
|
||||
.. end-mc-mv-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc mv` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc mv [FLAGS] SOURCE [SOURCE...] TARGET
|
||||
|
||||
:mc:`~mc mv` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: SOURCE
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The object or objects to move. You can specify both local paths
|
||||
and S3 paths using a configured S3 service :mc:`alias <mc alias>`.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
mc mv play/mybucket/object.txt ~/localfiles/mybucket/object.txt TARGET
|
||||
|
||||
If you specify a directory or bucket to :mc-cmd:`~mc mv SOURCE`, you must
|
||||
also specify :mc-cmd-option:`~mc mv recursive` to recursively move the
|
||||
contents of that directory. If you omit the :mc-cmd-option:`~mc mv recursive`
|
||||
argument, :mc:`~mc mv` only moves objects in the top level of the specified
|
||||
directory or bucket.
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The full path to the bucket to move the specified
|
||||
:mc-cmd:`~mc mv SOURCES` to. Specify the :mc:`alias <mc alias>`
|
||||
of a configured S3 service as the prefix to the
|
||||
:mc-cmd:`~mc mv TARGET` path.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc mv ~/localfiles/object.txt play/mybucket/
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively move the contents of each bucket or directory
|
||||
:mc-cmd:`~mc mv SOURCE` to the :mc-cmd:`~mc mv TARGET`
|
||||
bucket.
|
||||
|
||||
.. mc-cmd:: older-than
|
||||
:option:
|
||||
|
||||
Remove object(s) older than the specified time limit. Specify a string
|
||||
in ``#d#hh#mm#ss`` format. For example: ``--older-than 1d2hh3mm4ss``.
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: newer-than
|
||||
:option:
|
||||
|
||||
Remove object(s) newer than the specified number of days. Specify a
|
||||
string in ``##d#hh#mm#ss`` format. For example:
|
||||
``--newer-than 1d2hh3mm4ss``.
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: storage-class, sc
|
||||
:option:
|
||||
|
||||
Set the storage class for the new object(s) on the
|
||||
:mc-cmd:`~mc mv TARGET`.
|
||||
|
||||
See the Amazon documentation on
|
||||
:aws-docs:`Storage Classes <AmazonS3/latest/dev/storage-class-intro.html>`
|
||||
for more information on S3 storage classses.
|
||||
|
||||
.. mc-cmd:: preserve, a
|
||||
:option:
|
||||
|
||||
Preserve file system attributes and bucket policy rules of the
|
||||
:mc-cmd:`~mc mv SOURCE` directories, buckets, and objects on the
|
||||
:mc-cmd:`~mc mv TARGET` bucket(s).
|
||||
|
||||
.. mc-cmd:: attr
|
||||
:option:
|
||||
|
||||
Add custom metadata for the object. Specify key-value pairs as
|
||||
``KEY=VALUE\;``. For example,
|
||||
``--attr key1=value1\;key2=value2\;key3=value3``.
|
||||
|
||||
.. mc-cmd:: continue, c
|
||||
:option:
|
||||
|
||||
Create or resume a move session.
|
||||
|
||||
.. mc-cmd:: encrypt
|
||||
:option:
|
||||
|
||||
Encrypt or decrypt objects using server-side encryption with
|
||||
server-managed keys. Specify key-value pairs as ``KEY=VALUE``.
|
||||
|
||||
- Each ``KEY`` represents a bucket or object.
|
||||
- Each ``VALUE`` represents the data key to use for encrypting
|
||||
object(s).
|
||||
|
||||
Enclose the entire list of key-value pairs passed to
|
||||
:mc-cmd-option:`~mc mv encrypt` in double-quotes ``"``.
|
||||
|
||||
:mc-cmd-option:`~mc mv encrypt` can use the ``MC_ENCRYPT`` environment
|
||||
variable for retrieving a list of encryption key-value pairs as an
|
||||
alternative to specifying them on the command line.
|
||||
|
||||
.. mc-cmd:: encrypt-key
|
||||
:option:
|
||||
|
||||
Encrypt or decrypt objects using server-side encryption with
|
||||
client-specified keys. Specify key-value pairs as ``KEY=VALUE``.
|
||||
|
||||
- Each ``KEY`` represents a bucket or object.
|
||||
- Each ``VALUE`` represents the data key to use for encrypting
|
||||
object(s).
|
||||
|
||||
Enclose the entire list of key-value pairs passed to
|
||||
:mc-cmd-option:`~mc mv encrypt-key` in double quotes ``"``.
|
||||
|
||||
:mc-cmd-option:`~mc mv encrypt-key` can use the ``MC_ENCRYPT_KEY``
|
||||
environment variable for retrieving a list of encryption key-value pairs
|
||||
as an alternative to specifying them on the command line.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
:mc:`mc mv` verifies all move operations to
|
||||
object storage using MD5SUM checksums.
|
||||
|
||||
Interrupted or failed move operations can resume from the point of failure
|
||||
by issuing the :mc:`mc mv` operation again with the
|
||||
:mc-cmd-option:`~mc mv continue` argument.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Move a text file to an object storage.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mv myobject.txt play/mybucket
|
||||
|
||||
Move a text file to an object storage with specified metadata.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mv --attr key1=value1;key2=value2 myobject.txt play/mybucket
|
||||
|
||||
Move a folder recursively from MinIO cloud storage to Amazon S3 cloud storage with specified metadata.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-s3-alias
|
||||
:end-before: end-play-s3-alias
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mv --attr Cache-Control=max-age=90000,min-fresh=9000\;key1=value1\;key2=value2 \
|
||||
--recursive play/mybucket/bucketname/ s3/mybucket/
|
||||
|
||||
|
||||
Move a text file to an object storage and assign ``storage-class`` REDUCED_REDUNDANCY to the uploaded object.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mv --storage-class REDUCED_REDUNDANCY myobject.txt play/mybucket
|
||||
|
||||
Move a server-side encrypted file to an object storage.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-s3-alias
|
||||
:end-before: end-play-s3-alias
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mv --recursive \
|
||||
--encrypt-key "s3/documents/=32byteslongsecretkeymustbegiven1 , myminio/documents/=32byteslongsecretkeymustbegiven2" \
|
||||
s3/documents/myobject.txt myminio/documents/
|
||||
|
||||
Perform key-rotation on a server-side encrypted object.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
:mc:`mc mv` key rotation requires creating an additional alias with the same
|
||||
endpoing as the target S3 service alias. :mc:`mc mv` decrypts
|
||||
the object using the old secret key, encrypts the object using the new
|
||||
secret key, and replaces the old object with the newly encrypted object.
|
||||
|
||||
The following example assumes that the ``myminio1`` and ``myminio2`` aliases
|
||||
exists in the :mc:`mc` :ref:`configuration file <mc-configuration>`. See
|
||||
:mc:`mc alias` for more information on aliases.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mv --encrypt-key 'myminio1/mybucket=32byteslongsecretkeymustgenerate , myminio2/mybucket/=32byteslongsecretkeymustgenerat1' \
|
||||
myminio1/mybucket/encryptedobject myminio2/mybucket/encryptedobject
|
||||
|
||||
Move a javascript file to object storage and assign ``Cache-Control`` header to the uploaded object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mv --attr Cache-Control=no-cache myscript.js play/mybucket
|
||||
|
||||
Move a text file to an object storage and preserve the filesyatem attributes.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc mv -a myobject.txt play/mybucket
|
||||
|
||||
|
221
source/minio-cli/minio-mc/mc-policy.rst
Normal file
221
source/minio-cli/minio-mc/mc-policy.rst
Normal file
@ -0,0 +1,221 @@
|
||||
=============
|
||||
``mc policy``
|
||||
=============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc policy
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-policy-desc
|
||||
|
||||
The :mc:`mc policy` command supports setting or removing anonymous
|
||||
policies to a bucket and its contents using AWS S3
|
||||
:s3-docs:`JSON policies <using-iam-policies>`. Buckets with anonymous
|
||||
policies allow public access where clients can perform any action
|
||||
granted by the policy without.
|
||||
|
||||
.. end-mc-policy-desc
|
||||
|
||||
You can set or remove policies on individual folders or objects inside of a
|
||||
bucket for more granular control over anonymous access to a bucket's
|
||||
contents.
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc policy` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc policy COMMAND [ARGUMENTS]
|
||||
|
||||
:mc:`~mc policy` supports the following commands:
|
||||
|
||||
.. mc-cmd:: set
|
||||
|
||||
Adds one of the following built-in policies to the specified
|
||||
bucket. The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy set PERMISSION TARGET
|
||||
|
||||
The command requires the following arguments:
|
||||
|
||||
.. mc-cmd:: PERMISSION
|
||||
|
||||
Name of the policy to assign to the specified ``TARGET``
|
||||
|
||||
:mc-cmd:`mc policy set PERMISSION` supports the following built-in
|
||||
policies:
|
||||
|
||||
- ``none`` - Disable anonymous access to the ``TARGET``.
|
||||
- ``download`` - Enable download-only access to the ``TARGET``.
|
||||
- ``upload`` - Enable upload-only access to the ``TARGET``.
|
||||
- ``public`` - Enable download and upload access to the ``TARGET``.
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The full path to the bucket, folder, or object to which the command
|
||||
applies the specified :mc-cmd:`~mc policy set PERMISSION`. Specify the
|
||||
:mc:`alias <mc alias>` of a configured S3 service as the
|
||||
prefix to the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc set public play/mybucket
|
||||
|
||||
.. mc-cmd:: set-json
|
||||
|
||||
Adds an AWS S3 :s3-docs:`JSON policy <using-iam-policies>` to the
|
||||
specified bucket. The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy set-json FILE TARGET
|
||||
|
||||
The command requires the following arguments:
|
||||
|
||||
.. mc-cmd:: FILE
|
||||
|
||||
The full path to the S3 policy ``.json`` file which the
|
||||
command applies to the specified :mc-cmd:`~mc policy set-json TARGET`
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The full path to the bucket, folder, orobject to which the command applies
|
||||
the specified :mc-cmd:`~mc policy set-json FILE` S3 policy document.
|
||||
Specify the :mc:`alias <mc alias>` of a configured S3 service as the
|
||||
prefix to the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc set public play/mybucket
|
||||
|
||||
.. mc-cmd:: get
|
||||
|
||||
Prints the current anonymous policy for the specified bucket, folder,
|
||||
or object on the console.
|
||||
|
||||
The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy get TARGET
|
||||
|
||||
Specify the :mc:`alias <mc alias>` of a configured S3 service
|
||||
as the prefix to the ``TARGET`` bucket path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc get play/mybucket
|
||||
|
||||
.. mc-cmd:: get-json
|
||||
|
||||
Returns the current anonymous policy for the specified bucket, folder,
|
||||
or object in ``JSON`` format.
|
||||
|
||||
The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy get-json TARGET
|
||||
|
||||
Specify the :mc:`alias <mc alias>` of a configured S3 service
|
||||
as the prefix to the ``TARGET`` bucket path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy get-json play/mybucket
|
||||
|
||||
.. mc-cmd:: list
|
||||
|
||||
Prints the anonymous policy for the specified bucket and any folders
|
||||
or objects with a different anonymous policy from the bucket.
|
||||
|
||||
The command has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy list TARGET
|
||||
|
||||
Specify the :mc:`alias <mc alias>` of a configured S3 service
|
||||
as the prefix to the ``TARGET`` bucket path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy list play/mybucket
|
||||
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Get Current Anonymous Policy for Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy get play/mybucket
|
||||
|
||||
To retrieve the :s3-docs`IAM JSON policy document <using-iam-policies>`, use the
|
||||
:mc-cmd:`mc policy get-json` mc:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy get-json play/mybucket
|
||||
|
||||
Set Anonymous Policy for Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy set upload play/mybucket
|
||||
|
||||
See :mc-cmd:`mc policy set` for the list of supported built-in policies.
|
||||
|
||||
To set the anonymous policy for the specified bucket using
|
||||
an :s3-docs:`IAM JSON file <using-iam-policies>`, use the
|
||||
:mc-cmd:`mc policy set-json` mc:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy set-json ~/policies/s3-upload.json play/mybucket
|
||||
|
||||
Remove Anonymous Policy for Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc policy set none play/mybucket
|
59
source/minio-cli/minio-mc/mc-rb.rst
Normal file
59
source/minio-cli/minio-mc/mc-rb.rst
Normal file
@ -0,0 +1,59 @@
|
||||
=========
|
||||
``mc rb``
|
||||
=========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc rb
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-rb-desc
|
||||
|
||||
The :mc:`mc rb` command removes a bucket and all its contents on the target
|
||||
S3-compatible service.
|
||||
|
||||
Removing a bucket with :mc:`mc rb` also removes any configurations associated to
|
||||
that bucket. To remove only the contents of a bucket, use :mc:`mc rb` instead.
|
||||
|
||||
.. end-mc-rb-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc rb` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc rb [FLAGS] SOURCE TARGET
|
||||
|
||||
.. mc-cmd:: force
|
||||
:option:
|
||||
|
||||
Allows running :mc:`mc rb` on a bucket with versioning enabled.
|
||||
|
||||
.. mc-cmd:: dangerous
|
||||
:option:
|
||||
|
||||
Allows running :mc:`mc rb` when the :mc-cmd:`~mc rb TARGET` specifies the
|
||||
root (all buckets) on the S3-compatible service.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc rb play/mybucket
|
586
source/minio-cli/minio-mc/mc-retention.rst
Normal file
586
source/minio-cli/minio-mc/mc-retention.rst
Normal file
@ -0,0 +1,586 @@
|
||||
================
|
||||
``mc retention``
|
||||
================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
.. mc:: mc retention
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-retention-desc
|
||||
|
||||
The :mc:`mc retention` command configures the Write-Once Read-Many (WORM) object
|
||||
lock settings for an object or object(s) in a bucket. You can also set the
|
||||
default object lock settings for a bucket, where all objects without explicit
|
||||
object lock settings inherit the bucket default. For more information on MinIO
|
||||
object locking and data retention, see <link>.
|
||||
|
||||
.. end-mc-retention-desc
|
||||
|
||||
.. important::
|
||||
|
||||
:mc:`mc retention` *requires* that the specified bucket has object locking
|
||||
enabled. You can **only** enable object locking at bucket creation. See
|
||||
:mc-cmd-option:`mc mb with-lock` for documentation on creating buckets with
|
||||
object locking enabled.
|
||||
|
||||
.. note::
|
||||
|
||||
Starting in version :release:``, :mc:`mc retention` fully replaces :mc:`mc
|
||||
lock` for setting the default object lock settings for a bucket.
|
||||
:release:`` deprecates and removes :mc:`mc lock`.
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc retention` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention COMMANDS [COMMAND ARGUMENTS]
|
||||
|
||||
:mc:`~mc retention` supports the following commands:
|
||||
|
||||
.. mc-cmd:: set
|
||||
:fullpath:
|
||||
|
||||
Sets the object lock settings for the specified
|
||||
:mc-cmd:`~mc retention set TARGET` object.
|
||||
|
||||
:mc-cmd:`mc retention set` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention set [FLAGS] TARGET MODE VALIDITY
|
||||
|
||||
- If the ``TARGET`` specifies a bucket or bucket prefix, include
|
||||
:mc-cmd-option:`~mc retention set recursive` to apply the object lock
|
||||
settings to the bucket contents.
|
||||
|
||||
- If the ``TARGET`` bucket has versioning enabled, :mc-cmd:`mc retention set`
|
||||
by default applies to only the latest object version. Use
|
||||
:mc-cmd-option:`~mc retention set verison-id` or
|
||||
:mc-cmd-option:`~mc retention set versions` to apply the object lock
|
||||
settings to a specific version or to all versions of the object.
|
||||
|
||||
:mc-cmd:`mc retention set` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: bypass
|
||||
:option:
|
||||
|
||||
Allows a user with the ``s3:BypassGovernanceRetention`` permission
|
||||
to modify the object. Requires the ``governance`` retention
|
||||
:mc-cmd:`~mc retention set MODE`
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively applies the object lock settings to all objects in the
|
||||
specified :mc-cmd:`~mc retention set TARGET` path.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention set version-id`.
|
||||
|
||||
.. mc-cmd:: default
|
||||
:option:
|
||||
|
||||
Sets the default object lock settings for the bucket specified to
|
||||
:mc-cmd:`~mc retention set TARGET` using the
|
||||
:mc-cmd:`~mc retention set MODE` and :mc-cmd:`~mc retention set VALIDITY`.
|
||||
Any objects created in the bucket inherit the default object lock settings
|
||||
unless explicitly overriden using :mc-cmd:`mc retention set`.
|
||||
|
||||
.. versionadded:: RELEASE.2020-08-XXT00-00-00Z
|
||||
|
||||
:mc-cmd-option:`mc retention set default` replaces the functionality of
|
||||
the deprecated :mc-cmd:`mc lock` command.
|
||||
|
||||
If specifying :mc-cmd-option:`~mc retention set default`,
|
||||
:mc-cmd:`mc retention set` ignores all other flags.
|
||||
|
||||
.. mc-cmd:: version-id
|
||||
:option:
|
||||
|
||||
Applies the object lock settings to the specified version of the
|
||||
:mc-cmd:`~mc retention set TARGET` object. Requires
|
||||
the bucket to have versioning enabled. Use :mc:`mc version` to
|
||||
enable bucket versioning.
|
||||
|
||||
Mutually exclusive with any of the following flags:
|
||||
|
||||
- :mc-cmd-option:`~mc retention set versions`
|
||||
- :mc-cmd-option:`~mc retention set rewind`
|
||||
- :mc-cmd-option:`~mc retention set recursive`
|
||||
|
||||
.. mc-cmd:: versions
|
||||
:option:
|
||||
|
||||
Applies the object lock settings to all versions of the
|
||||
:mc-cmd:`~mc retention set TARGET` object or object(s). Requires the
|
||||
bucket to have versioning enabled. Use :mc:`mc version` to enable bucket
|
||||
versioning.
|
||||
|
||||
Use :mc-cmd-option:`~mc retention set rewind` and
|
||||
:mc-cmd-option:`~mc retention set versions` together to apply the object
|
||||
lock settings to all versions of the object or object(s) which existed at
|
||||
the specified duration prior to the current date. *or* at the specified
|
||||
date.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention set version-id`.
|
||||
|
||||
.. mc-cmd:: rewind
|
||||
:option:
|
||||
|
||||
Applies the object lock settings to the latest version of the object or
|
||||
object(s) which existed at either the specified duration prior to the
|
||||
current date *or* at a specific date.
|
||||
|
||||
- For duration, specify a string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--rewind "1d2hh3mm4ss"``.
|
||||
|
||||
- For a date in time, specify an ISO8601-formatted timestamp. For example:
|
||||
``--rewind "2020.03.24T10:00"``.
|
||||
|
||||
For example, to apply the object lock settings to the object or object(s)
|
||||
as they existed 30 days prior to the current date: ``--rewind "30d"``
|
||||
|
||||
Use :mc-cmd-option:`~mc retention set rewind` and
|
||||
:mc-cmd-option:`~mc retention set versions` together to apply the object
|
||||
lock settings to all versions of the object or object(s) which existed at
|
||||
the specified duration prior to the current date. *or* at the specified
|
||||
date.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention set version-id`.
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the object or objects for which to set
|
||||
object lock configuration. Specify the :mc-cmd:`alias <mc alias>` of
|
||||
a configured S3-compatible service as the prefix to the ``TARGET`` bucket
|
||||
path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc retention play/mybucket/object.txt MODE VALIDITY
|
||||
|
||||
If specifying a bucket prefix, include the
|
||||
:mc-cmd-option:`~mc retention set recursive` flag to apply the object
|
||||
lock configuration to all objects in the bucket.
|
||||
|
||||
.. mc-cmd:: MODE
|
||||
|
||||
Sets the locking mode for the :mc-cmd:`~mc retention set TARGET`.
|
||||
Specify one of the following supported values:
|
||||
|
||||
- ``governance``
|
||||
- ``compliance``
|
||||
|
||||
See the AWS S3 documentation on :s3-docs:`Object Lock Overview
|
||||
<object-lock-overview.html>` for more information on the supported
|
||||
modes.
|
||||
|
||||
Requires specifying :mc-cmd:`~mc retention set VALIDITY`.
|
||||
|
||||
.. mc-cmd:: VALIDITY
|
||||
|
||||
The duration which objects remain in the specified
|
||||
:mc-cmd:`~mc retention set MODE` after creation.
|
||||
|
||||
- For days, specify a string formatted as ``Nd``. For example,
|
||||
``30d`` for 30 days after object creation.
|
||||
|
||||
- For years, specify a string formatted as ``Ny``. For example,
|
||||
``1y`` for 1 year after object creation.
|
||||
|
||||
.. mc-cmd:: info
|
||||
|
||||
Returns the current object lock setting for the specified
|
||||
:mc-cmd:`~mc retention info TARGET`.
|
||||
|
||||
:mc-cmd:`mc retention info` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention info [ARGUMENTS] TARGET
|
||||
|
||||
- If the ``TARGET`` specifies a bucket or bucket prefix, include
|
||||
:mc-cmd-option:`~mc retention info recursive` to return the object
|
||||
lock settings for all objects in the bucket or bucket prefix.
|
||||
|
||||
- If the ``TARGET`` bucket has versioning enabled,
|
||||
:mc-cmd:`mc retention info` by default applies to only the latest object
|
||||
version. Use :mc-cmd-option:`~mc retention info verison-id` or
|
||||
:mc-cmd-option:`~mc retention info versions` to return the object lock
|
||||
settings for a specific version or for all versions of the object.
|
||||
|
||||
:mc-cmd:`mc retention info` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively returns the object lock settings for all objects in the
|
||||
specified :mc-cmd:`~mc retention info TARGET` path.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention info version-id`.
|
||||
|
||||
.. mc-cmd:: default
|
||||
:option:
|
||||
|
||||
Returns the default object lock settings for the bucket specified to
|
||||
:mc-cmd:`~mc retention info TARGET`.
|
||||
|
||||
.. versionadded:: RELEASE.2020-08-XXT00-00-00Z
|
||||
|
||||
:mc-cmd-option:`mc retention info default` replaces the functionality
|
||||
of the deprecated :mc-cmd:`mc lock info` command.
|
||||
|
||||
If specifying :mc-cmd-option:`~mc retention info default`,
|
||||
:mc-cmd:`mc retention info` ignores all other flags.
|
||||
|
||||
.. mc-cmd:: version-id
|
||||
:option:
|
||||
|
||||
Returns the object lock settings of the specified version of the
|
||||
:mc-cmd:`~mc retention info TARGET` object. Requires
|
||||
the bucket to have versioning enabled. Use :mc:`mc version` to
|
||||
enable bucket versioning.
|
||||
|
||||
Mutually exclusive with any of the following flags:
|
||||
|
||||
- :mc-cmd-option:`~mc retention info versions`
|
||||
- :mc-cmd-option:`~mc retention info rewind`
|
||||
- :mc-cmd-option:`~mc retention info recursive`
|
||||
|
||||
.. mc-cmd:: versions
|
||||
:option:
|
||||
|
||||
Returns the object lock settings of all versions of the
|
||||
:mc-cmd:`~mc retention info TARGET` object or object(s). Requires the
|
||||
bucket to have versioning enabled. Use :mc:`mc version` to enable bucket
|
||||
versioning.
|
||||
|
||||
Use :mc-cmd-option:`~mc retention info rewind` and
|
||||
:mc-cmd-option:`~mc retention info versions` together to return the object
|
||||
lock settings of all versions of the object or object(s) which existed at
|
||||
the specified duration prior to the current date. *or* at the specified
|
||||
date.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention info version-id`.
|
||||
|
||||
.. mc-cmd:: rewind
|
||||
:option:
|
||||
|
||||
Returns the object lock settings of the latest version of the object or
|
||||
object(s) which existed at either the specified duration prior to the
|
||||
current date *or* at a specific date.
|
||||
|
||||
- For duration, specify a string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--rewind "1d2hh3mm4ss"``.
|
||||
|
||||
- For a date in time, specify an ISO8601-formatted timestamp. For example:
|
||||
``--rewind "2020.03.24T10:00"``.
|
||||
|
||||
For example, to return the object lock settings to the object or object(s)
|
||||
as they existed 30 days prior to the current date: ``--rewind "30d"``
|
||||
|
||||
Use :mc-cmd-option:`~mc retention info rewind` and
|
||||
:mc-cmd-option:`~mc retention info versions` together to return the object
|
||||
lock settings of all versions of the object or object(s) which existed at
|
||||
the specified duration prior to the current date. *or* at the specified
|
||||
date.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention info version-id`.
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the object for which to retreive
|
||||
the object lock configuration. Specify the :mc-cmd:`alias <mc alias>` of a
|
||||
configured S3-compatible service as the prefix to the ``TARGET`` bucket
|
||||
path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc retention play/mybucket/object.txt MODE VALIDITY
|
||||
|
||||
If specifying a bucket or bucket prefix, include the
|
||||
:mc-cmd-option:`~mc retention info recursive` flag to return the object
|
||||
lock configuration to all objects in the prefix.
|
||||
|
||||
.. mc-cmd:: clear
|
||||
|
||||
Clears the object lock setting for the specified ``TARGET``.
|
||||
|
||||
:mc-cmd:`mc retention info` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention clear [ARGUMENTS] TARGET
|
||||
|
||||
- If the ``TARGET`` specifies a bucket or bucket prefix, include
|
||||
:mc-cmd-option:`~mc retention clear recursive` to clear the object lock
|
||||
settings to the bucket contents.
|
||||
|
||||
- If the ``TARGET`` bucket has versioning enabled,
|
||||
:mc-cmd:`mc retention clear` by default applies to only the latest object
|
||||
version. Use :mc-cmd-option:`~mc retention clear verison-id` or
|
||||
:mc-cmd-option:`~mc retention clear versions` to clear the object lock
|
||||
settings for a specific version or for all versions of the object.
|
||||
|
||||
:mc-cmd:`mc retention info` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively clears the object lock settings for all objects in the
|
||||
specified :mc-cmd:`~mc retention clear TARGET` path.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention clear version-id`.
|
||||
|
||||
.. mc-cmd:: default
|
||||
:option:
|
||||
|
||||
Clears the default object lock settings for the bucket specified to
|
||||
:mc-cmd:`~mc retention clear TARGET`.
|
||||
|
||||
.. versionadded:: RELEASE.2020-08-XXT00-00-00Z
|
||||
|
||||
:mc-cmd-option:`mc retention clear default` replaces the functionality
|
||||
of the deprecated :mc-cmd:`mc lock clear` command.
|
||||
|
||||
If specifying :mc-cmd-option:`~mc retention clear default`,
|
||||
:mc-cmd:`mc retention clear` ignores all other flags.
|
||||
|
||||
.. mc-cmd:: version-id
|
||||
:option:
|
||||
|
||||
Clears the object lock settings of the specified version of the
|
||||
:mc-cmd:`~mc retention clear TARGET` object. Requires
|
||||
the bucket to have versioning enabled. Use :mc:`mc version` to
|
||||
enable bucket versioning.
|
||||
|
||||
Mutually exclusive with any of the following flags:
|
||||
|
||||
- :mc-cmd-option:`~mc retention clear versions`
|
||||
- :mc-cmd-option:`~mc retention clear rewind`
|
||||
- :mc-cmd-option:`~mc retention clear recursive`
|
||||
|
||||
.. mc-cmd:: versions
|
||||
:option:
|
||||
|
||||
Clears the object lock settings of all versions of the
|
||||
:mc-cmd:`~mc retention clear TARGET` object or object(s). Requires the
|
||||
bucket to have versioning enabled. Use :mc:`mc version` to enable bucket
|
||||
versioning.
|
||||
|
||||
Use :mc-cmd-option:`~mc retention clear rewind` and
|
||||
:mc-cmd-option:`~mc retention clear versions` together to clear the
|
||||
object lock settings of all versions of the object or object(s) which
|
||||
existed at the specified duration prior to the current date. *or* at the
|
||||
specified date.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention clear version-id`.
|
||||
|
||||
.. mc-cmd:: rewind
|
||||
:option:
|
||||
|
||||
Clears the object lock settings of the latest version of the object or
|
||||
object(s) which existed at either the specified duration prior to the
|
||||
current date *or* at a specific date.
|
||||
|
||||
- For duration, specify a string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--rewind "1d2hh3mm4ss"``.
|
||||
|
||||
- For a date in time, specify an ISO8601-formatted timestamp. For example:
|
||||
``--rewind "2020.03.24T10:00"``.
|
||||
|
||||
For example, to clear the object lock settings to the object or object(s)
|
||||
as they existed 30 days prior to the current date: ``--rewind "30d"``
|
||||
|
||||
Use :mc-cmd-option:`~mc retention clear rewind` and
|
||||
:mc-cmd-option:`~mc retention clear versions` together to clear the
|
||||
object lock settings of all versions of the object or object(s) which
|
||||
existed at the specified duration prior to the current date *or* at the
|
||||
specified date.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc retention clear version-id`.
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the object or objects for which to clear
|
||||
the object lock configuration. Specify the :mc-cmd:`alias <mc alias>` of a
|
||||
configured S3-compatible service as the prefix to the ``TARGET`` bucket
|
||||
path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc retention clear play/mybucket/object.txt MODE VALIDITY
|
||||
|
||||
If specifying a bucket prefix, include the
|
||||
:mc-cmd-option:`~mc retention info recursive` flag to return the object
|
||||
lock configuration to all objects in the prefix.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Bucket Must Enable Object Locking
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
:mc:`mc retention` *requires* that the specified bucket has object locking
|
||||
enabled. You can **only** enable object locking at bucket creation. See
|
||||
:mc-cmd-option:`mc mb with-lock` for documentation on creating buckets with
|
||||
object locking enabled.
|
||||
|
||||
Retention of Object Versions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
For buckets with :mc:`versioning enabled <mc version>`, :mc:`mc retention` by
|
||||
default operates on the *latest* version of the target object or object(s).
|
||||
|
||||
- Use the :mc-cmd-option:`mc retention set versions`,
|
||||
:mc-cmd-option:`mc retention info versions`, or
|
||||
:mc-cmd-option:`mc retention clear versions` to target
|
||||
all versions of an object or object(s).
|
||||
|
||||
- Use the :mc-cmd-option:`mc retention set version-id`,
|
||||
:mc-cmd-option:`mc retention info version-id`, or
|
||||
:mc-cmd-option:`mc retention clear version-id` to target a specific
|
||||
version of an object.
|
||||
|
||||
Interaction with Legal Holds
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Enabling a legal hold on an object prevents any modification or deletion of that
|
||||
object, similar to the :mc-cmd:`COMPLIANCE <mc retention set MODE>` object
|
||||
locking mode. Legal holds are independent of object lock settings - an object
|
||||
can have both a legal hold *and* object locking enabled at the same time.
|
||||
*However*, the legal hold *overrides* the object lock settings. That is,
|
||||
regardless of the object lock settings, the legal hold prevents any object
|
||||
modification or deletion until the hold is explicitly lifted. Setting,
|
||||
modifying, or clearing object lock settings for an object under legal hold has
|
||||
no effect until the legal hold either expires or is explicitly disabled.
|
||||
|
||||
For more information on object legal holds, see :mc-cmd:`mc legalhold`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Set Bucket Object Lock Configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention --recursive --default set play/mybucket/ governance 30d
|
||||
|
||||
Set Object Lock Configuration for Specific Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention set play/mybucket/data.csv governance 30d
|
||||
|
||||
Set Object Lock Configuration for Versioned Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
For buckets with :mc:`versioning <mc version>` enabled, use the
|
||||
:mc-cmd-option:`~mc retention set versions` option to apply the object lock
|
||||
settings to all versions of the object.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention --versions set play/mybucket/data.csv governance 30d
|
||||
|
||||
Use the :mc-cmd-option:`~mc retention set version-id` option to apply the
|
||||
object lock settings to a specific version of the object.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention --version-id hTyrbac12.sdsd set play/mybucket/data.csv governance 30d
|
||||
|
||||
Retrieve Object Lock Settings for an Object or Object(s)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention info play/mybucket/data.csv
|
||||
|
||||
To retrieve the object lock settings for all objects in the bucket or a bucket
|
||||
prefix, include the :mc-cmd-option:`~mc retention info recursive` option:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention --recursive info play/mybucket
|
||||
|
||||
mc retention --recursive info play/mybucket/myprefix/
|
||||
|
||||
Clear Object Lock Settings for an Object or Object(s)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
This example assumes that the specified bucket has object locking enabled.
|
||||
See :mc-cmd-option:`mc mb with-lock` for more information on creating buckets
|
||||
with object locking enabled.
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention clear play/mybucket/data.csv
|
||||
|
||||
To clear the object lock settings for all objects in the bucket or a bucket
|
||||
prefix, include the :mc-cmd-option:`~mc retention info recursive` option:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc retention --recursive clear play/mybucket
|
||||
|
||||
mc retention --recursive clear play/mybucket/myprefix/
|
254
source/minio-cli/minio-mc/mc-rm.rst
Normal file
254
source/minio-cli/minio-mc/mc-rm.rst
Normal file
@ -0,0 +1,254 @@
|
||||
=========
|
||||
``mc rm``
|
||||
=========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc rm
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-rm-desc
|
||||
|
||||
The :mc:`mc rm` command removes objects on a target S3-compatible service.
|
||||
To completely remove a bucket, use :mc:`mc rb` instead.
|
||||
|
||||
.. end-mc-rm-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc rm` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc rm [FLAGS] TARGET [TARGET ...]
|
||||
|
||||
:mc:`~mc rm` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
**REQUIRED**
|
||||
|
||||
The full path to object to remove.
|
||||
Specify the :mc:`alias <mc alias>` of a configured S3 service as the
|
||||
prefix to the :mc-cmd-option:`~mc rm TARGET` path.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc rm play/mybucket/object.txt play/mybucket/otherobject.txt
|
||||
|
||||
If specifying the path to a bucket or bucket prefix, you **must** also
|
||||
specify the :mc-cmd-option:`~mc rm recursive` and :mc-cmd-option:`~mc rm
|
||||
force` arguments. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc rm --recursive --force play/mybucket/
|
||||
|
||||
mc rm --recursive --force play/mybucket/myprefix
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively remove the contents of each :mc-cmd-option:`~mc rm TARGET`
|
||||
bucket or bucket prefix.
|
||||
|
||||
If specifying :mc-cmd-option:`~mc rm recursive`, you **must** also
|
||||
specify :mc-cmd-option:`~mc rm force`.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`mc rm version-id`
|
||||
|
||||
.. mc-cmd:: force
|
||||
:option:
|
||||
|
||||
Allows running :mc:`mc rm` with any of the following arguments:
|
||||
|
||||
- :mc-cmd-option:`~mc rm recursive`
|
||||
- :mc-cmd-option:`~mc rm versions`
|
||||
- :mc-cmd-option:`~mc rm stdin`
|
||||
|
||||
.. mc-cmd:: dangerous
|
||||
:option:
|
||||
|
||||
Allows running :mc:`mc rm` when the :mc-cmd:`~mc rm TARGET` specifies the
|
||||
root (all buckets) on the S3-compatible service.
|
||||
|
||||
.. mc-cmd:: version-id
|
||||
:option:
|
||||
|
||||
Removes the specified version of the :mc-cmd:`~mc rm TARGET` object. Requires
|
||||
the bucket to have versioning enabled. Use :mc:`mc version` to enable bucket
|
||||
versioning.
|
||||
|
||||
Mutually exclusive with any of the following flags:
|
||||
|
||||
- :mc-cmd-option:`~mc rm versions`
|
||||
- :mc-cmd-option:`~mc rm rewind`
|
||||
- :mc-cmd-option:`~mc rm recursive`
|
||||
|
||||
.. mc-cmd:: versions
|
||||
:option:
|
||||
|
||||
Removes all versions of the :mc-cmd:`~mc rm TARGET` object or
|
||||
object(s). Requires the bucket to have versioning enabled. Use
|
||||
:mc:`mc version` to enable bucket versioning.
|
||||
|
||||
Use :mc-cmd-option:`~mc rm rewind` and
|
||||
:mc-cmd-option:`~mc rm versions` together to clear the
|
||||
object lock settings of all versions of the object or object(s) which
|
||||
existed at the specified duration prior to the current date. *or* at the
|
||||
specified date.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc rm version-id`.
|
||||
|
||||
.. mc-cmd:: rewind
|
||||
:option:
|
||||
|
||||
Removes the latest version of the object or object(s) which existed at either
|
||||
the specified duration prior to the current date *or* at a specific date.
|
||||
|
||||
- For duration, specify a string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--rewind "1d2hh3mm4ss"``.
|
||||
|
||||
- For a date in time, specify an ISO8601-formatted timestamp. For example:
|
||||
``--rewind "2020.03.24T10:00"``.
|
||||
|
||||
For example, to clear the object lock settings to the object or object(s)
|
||||
as they existed 30 days prior to the current date: ``--rewind "30d"``
|
||||
|
||||
Use :mc-cmd-option:`~mc rm rewind` and :mc-cmd-option:`~mc rm versions`
|
||||
together to remove all versions of the object or object(s) which existed at
|
||||
the specified duration prior to the current date *or* at the specified date.
|
||||
|
||||
Mutually exclusive with :mc-cmd-option:`~mc rm version-id`.
|
||||
|
||||
.. mc-cmd:: older-than
|
||||
:option:
|
||||
|
||||
Remove object(s) older than the specified time limit. Specify a string
|
||||
in ``#d#hh#mm#ss`` format. For example: ``--older-than 1d2hh3mm4ss``.
|
||||
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: newer-than
|
||||
:option:
|
||||
|
||||
Remove object(s) newer than the specified number of days. Specify a
|
||||
string in ``#d#hh#mm#ss`` format. For example:
|
||||
``--newer-than 1d2hh3mm4ss``
|
||||
|
||||
Defaults to ``0`` (all objects).
|
||||
|
||||
.. mc-cmd:: incomplete, I
|
||||
:option:
|
||||
|
||||
Remove incomplete uploads for the specified object.
|
||||
|
||||
If any :mc-cmd-option:`~mc rm TARGET` specifies a bucket,
|
||||
you **must** also specify :mc-cmd-option:`~mc rm recursive`
|
||||
and :mc-cmd-option:`~mc rm force`.
|
||||
|
||||
.. mc-cmd:: fake
|
||||
:option:
|
||||
|
||||
Perform a fake remove operation. Use this operation to perform
|
||||
validate that the :mc:`mc rm` operation will only
|
||||
remove the desired objects or buckets.
|
||||
|
||||
.. mc-cmd:: stdin
|
||||
:option:
|
||||
|
||||
Read object names or buckets from ``STDIN``.
|
||||
|
||||
.. mc-cmd:: encrypt-key
|
||||
:option:
|
||||
|
||||
The encryption key to use for performing Server-Side Encryption with Client
|
||||
Keys (SSE-C). Specify comma seperated key-value pairs as ``KEY=VALUE,...``.
|
||||
|
||||
- For ``KEY``, specify the S3-compatible service
|
||||
:mc-cmd:`alias <mc alias>` and full path to the bucket, including any
|
||||
bucket prefixes. Separate the alias and bucket path with a forward slash
|
||||
``\``. For example, ``play/mybucket``
|
||||
|
||||
- For ``VALUE``, specify the data key to use for encryption object(s) in
|
||||
the bucket or bucket prefix specified to ``KEY``.
|
||||
|
||||
:mc-cmd-option:`~mc rm encrypt-key` can use the ``MC_ENCRYPT_KEY``
|
||||
environment variable for populating the list of encryption key-value
|
||||
pairs as an alternative to specifying them on the command line.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Deleting Bucket Contents
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Using :mc:`mc rm` to remove all contents in a bucket does not delete the bucket
|
||||
itself. Any configurations associated to the bucket remain in place, such as
|
||||
:mc-cmd-option:`default object lock settings <mc retention set default>`.
|
||||
|
||||
To completely remove a bucket, use :mc:`mc rb` instead of :mc:`mc rm`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Remove a Single Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc rm play/mybucket/myobject.txt
|
||||
|
||||
Recursively Remove a Bucket's Contents
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc rm --recursive --force play/mybucket
|
||||
|
||||
Remove All Incomplete Upload Files for an Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: moveable
|
||||
|
||||
mc rm --incomplete play/mybucket/myobject.1gig
|
||||
|
||||
Remove Objects Older Than Specified Time Period
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: moveable
|
||||
|
||||
mc rm --recursive --force --older-than 1d2h30m play/mybucket
|
||||
|
||||
|
||||
|
264
source/minio-cli/minio-mc/mc-share.rst
Normal file
264
source/minio-cli/minio-mc/mc-share.rst
Normal file
@ -0,0 +1,264 @@
|
||||
============
|
||||
``mc share``
|
||||
============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc share
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-share-desc
|
||||
|
||||
The :mc:`mc share` command generates temporary URLs with integrated
|
||||
access credentials for uploading or downloading objects to an S3-compatible
|
||||
host. The temporary URL expires after a configurable time limit.
|
||||
|
||||
.. end-mc-share-desc
|
||||
|
||||
For more information on shareable object URLs, see the Amazon S3
|
||||
documentation on :aws-docs:`Pre-Signed URLs
|
||||
<AmazonS3/latest/dev/ShareObjectPreSignedURL.html>`.
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc share COMMAND
|
||||
|
||||
:mc:`~mc share` supports the following commands:
|
||||
|
||||
.. mc-cmd:: download
|
||||
|
||||
Generates a URL for using an HTTP GET request to retrieve the
|
||||
object(s).
|
||||
|
||||
:mc-cmd:`~mc share download` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc share download [FLAGS] TARGET [TARGET ...]
|
||||
|
||||
:mc-cmd:`~mc share download` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The full path to the object for which :mc:`mc share` generates a URL.
|
||||
|
||||
If any ``TARGET`` specifies a path to a bucket, :mc:`mc share` *must*
|
||||
include the :mc-cmd-option:`mc share recursive` argument.
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively generate URLs for all objects in a :mc-cmd:`mc share TARGET`
|
||||
bucket or bucket prefix.
|
||||
|
||||
Required if any ``TARGET`` specifies a path to a bucket or bucket prefix.
|
||||
|
||||
.. mc-cmd:: expire, E
|
||||
:option:
|
||||
|
||||
Set the expiration time limit for all generated URLs.
|
||||
|
||||
Specify a string with format ``##h##m##s`` format. For example:
|
||||
``12h34m56s`` for an expiry of 12 hours, 34 minutes, and 56 seconds
|
||||
after URL generation.
|
||||
|
||||
Defaults to ``168h`` or 168 hours (7 days).
|
||||
|
||||
|
||||
.. mc-cmd:: upload
|
||||
|
||||
Generates a ``CURL`` command for uploading object(s) using ``HTTP POST``.
|
||||
|
||||
:mc-cmd:`~mc share upload` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc share upload [FLAGS] TARGET [TARGET ...]
|
||||
|
||||
:mc-cmd:`~mc share upload` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The full path to the object for which :mc:`mc share upload` generates a
|
||||
URL.
|
||||
|
||||
If the ``TARGET`` specifies a single object, :mc-cmd:`mc share upload`
|
||||
names the uploaded object based on the name specified to ``TARGET``.
|
||||
|
||||
If the ``TARGET`` specifies a path to a bucket or bucket prefix,
|
||||
:mc-cmd:`mc share upload` *must* include the
|
||||
:mc-cmd-option:`~mc share upload recursive` argument.
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Modifies the CURL URL to support uploading objects to a bucket or bucket
|
||||
prefix. Required if any ``TARGET`` specifies a path to a bucket or bucket
|
||||
prefix. The modified CURL output resembles the following:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
curl ... -F key=TARGET/<NAME> -F file=@<FILE>
|
||||
|
||||
Replace ``<FILE>`` with the path to the file to upload.
|
||||
|
||||
Replace ``<NAME>`` with the name of the file once uploaded.
|
||||
|
||||
|
||||
.. mc-cmd:: expire, E
|
||||
:option:
|
||||
|
||||
Set the expiration time limit for all generated URLs.
|
||||
|
||||
Specify a string with format ``##h##m##s`` format. For example:
|
||||
``12h34m56s`` for an expiry of 12 hours, 34 minutes, and 56 seconds
|
||||
after URL generation.
|
||||
|
||||
Defaults to ``168h`` or 168 hours (7 days).
|
||||
|
||||
|
||||
.. mc-cmd:: list
|
||||
|
||||
List all unexpired upload or download URLs generated by
|
||||
:mc-cmd:`mc share download` and :mc-cmd:`mc share upload`.
|
||||
|
||||
:mc-cmd:`~mc share list` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc share list SUBCOMMAND
|
||||
|
||||
:mc-cmd:`~mc share download` supports the following subcommands:
|
||||
|
||||
.. mc-cmd:: upload
|
||||
|
||||
List all unexpired URLs generated by :mc-cmd:`mc share upload`.
|
||||
|
||||
.. mc-cmd:: download
|
||||
|
||||
List all unexpired URLs generated by :mc-cmd:`mc share download`.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Generate a CURL GET Command for an Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc share download play/mybucket/myobject.txt
|
||||
|
||||
To specify a custom expiry, pass the ``--expiry`` flag. The following
|
||||
command sets a 4 hour expiry for the generated URL:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc share download --expiry 4h play/mybucket/myobject.txt
|
||||
|
||||
Generate a CURL GET Command For Each Object in Bucket or Bucket Prefix
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc share download --recursive play/mybucket/
|
||||
|
||||
The command returns a CURL command for each object in the bucket or bucket
|
||||
prefix.
|
||||
|
||||
To specify a custom expiry, pass the ``--expiry`` flag. The following
|
||||
command sets a 4 hour expiry for the generated URL:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc share download --recursive --expiry 4h play/mybucket/
|
||||
|
||||
Generate a CURL POST Command for an Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc share upload play/mybucket/myobject.csv
|
||||
|
||||
The command returns a CURL command for uploading an object to the specified
|
||||
bucket with the object name. Replace the ``<FILE>`` string in the returned
|
||||
CURL command with the path to the file to upload.
|
||||
|
||||
To specify a custom expiry, pass the ``--expiry`` flag. The following
|
||||
command sets a 4 hour expiry for the generated URL:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc share upload --expiry 4h play/mybucket/myobject.csv
|
||||
|
||||
Generate a CURL POST Command for a Bucket or Bucket Prefix
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc share upload --recursive play/mybucket/photos
|
||||
|
||||
The command returns a CURL command for uploading an object to the specified
|
||||
bucket prefix. Replace the ``<FILE>>`` string in the returned
|
||||
CURL command with the path to the file to upload. Replace the ``<NAME>``
|
||||
string in the returned CURL command with the name of the file in the bucket.
|
||||
|
||||
To specify a custom expiry, pass the ``--expiry`` flag. The following
|
||||
command sets a 4 hour expiry for the generated URL:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc share upload --recursive --expiry 4h play/mybucket/photos
|
||||
|
||||
You can use a shell script loop to recursively upload the contents of a bucket
|
||||
to the S3-compatible service. The following example uses a ``for in``
|
||||
loop:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
for file in ~/Documents/photos/
|
||||
do
|
||||
curl https://play.min.io/mybucket/ \
|
||||
-F policy=AAAAA -F x-amz-algorithm=AWS4-HMAC-SHA256 \
|
||||
-F x-amz-credential=AAAA/us-east-1/s3/aws4_request \
|
||||
-F x-amz-date=20200812T202556Z \
|
||||
-F x-amz-signature=AAAA \
|
||||
-F bucket=rkbucket -F key=mydata/${file} -F file=@${file}
|
||||
|
||||
done
|
||||
|
||||
Defer to the documented best practices for your preferred scripting language
|
||||
for iterating through files in a directory.
|
284
source/minio-cli/minio-mc/mc-sql.rst
Normal file
284
source/minio-cli/minio-mc/mc-sql.rst
Normal file
@ -0,0 +1,284 @@
|
||||
==========
|
||||
``mc sql``
|
||||
==========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc sql
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-sql-desc
|
||||
|
||||
The :mc:`mc sql` command provides an S3 Select interface for performing sql
|
||||
queries on objects in the specified S3-compatible service.
|
||||
|
||||
.. end-mc-sql-desc
|
||||
|
||||
See :s3-docs:`Selecting content from objects
|
||||
<selecting-content-from-objects>` for more information on S3 Select behavior
|
||||
and limitations.
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`mc sql` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc sql [FLAGS] TARGET [TARGET...]
|
||||
|
||||
:mc:`mc sql` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to the bucket or object to run the SQL query
|
||||
against. Specify the :mc-cmd:`alias <mc alias>` of a configured
|
||||
S3 service as the prefix to the ``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc sql [FLAGS] play/mybucket
|
||||
|
||||
.. mc-cmd:: query, e
|
||||
:option:
|
||||
|
||||
The SQL statement to execute on the specified :mc-cmd:`~mc sql TARGET`
|
||||
directory or object. Wrap the entire SQL query in double quotes ``"``.
|
||||
|
||||
Defaults to ``"select * from s3object"``.
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively searches the specified :mc-cmd:`~mc sql TARGET` directory
|
||||
using the :mc-cmd-option:`~mc sql query` SQL statement.
|
||||
|
||||
|
||||
.. mc-cmd:: csv-input
|
||||
:option:
|
||||
|
||||
The data format for ``.csv`` input objects. Specify a string of
|
||||
comma-seperated ``key=value,...`` pairs. See :ref:`mc-sql-csv-format`
|
||||
for more information on valid keys.
|
||||
|
||||
.. mc-cmd:: json-input
|
||||
:option:
|
||||
|
||||
The data format for ``.json`` input objects. Specify the type of the JSON
|
||||
contents as ``type=<VALUE>``. The value can be either:
|
||||
|
||||
- ``DOCUMENT`` - JSON `document <https://www.json.org/json-en.html>`__.
|
||||
- ``LINES`` - JSON `lines <http://jsonlines.org/>`__.
|
||||
|
||||
See the S3 API :s3-api:`JSONInput <API_JSONInput.html>` for more
|
||||
information.
|
||||
|
||||
.. mc-cmd:: compression
|
||||
:option:
|
||||
|
||||
The compression type of the input object. Specify one of the following
|
||||
supported values:
|
||||
|
||||
- ``GZIP``
|
||||
- ``BZIP2``
|
||||
- ``NONE`` (default)
|
||||
|
||||
.. mc-cmd:: csv-output
|
||||
:option:
|
||||
|
||||
The data format for ``.csv`` output. Specify a string of comma-seperated
|
||||
``key=value,...`` pairs. See :ref:`mc-sql-csv-format` for more information
|
||||
on valid keys.
|
||||
|
||||
See the S3 API :s3-api:`CSVOutput <API_CSVOutput.html>` for more
|
||||
information.
|
||||
|
||||
.. mc-cmd:: csv-output-header
|
||||
:option:
|
||||
|
||||
The header row of the ``.csv`` output file. Specify a string of
|
||||
comma-separated fields as ``field1,field2,...``.
|
||||
|
||||
Omit to output a ``.csv`` with no header row.
|
||||
|
||||
|
||||
.. mc-cmd:: json-output
|
||||
:option:
|
||||
|
||||
The data format for the ``.json`` output. Supports the
|
||||
``rd=value`` key, where ``rd`` is the ``RecordDelimiter`` for the JSON
|
||||
document.
|
||||
|
||||
Omit to use the default newline character ``\n``.
|
||||
|
||||
See the S3 API :s3-api:`JSONOutput <API_JSONOutput.html>` for more
|
||||
information.
|
||||
|
||||
.. mc-cmd:: encrypt-key
|
||||
:option:
|
||||
|
||||
The encryption key to use for performing Server-Side Encryption with Client
|
||||
Keys (SSE-C). Specify comma seperated key-value pairs as ``KEY=VALUE,...``.
|
||||
|
||||
- For ``KEY``, specify the S3-compatible service
|
||||
:mc-cmd:`alias <mc alias>` and full path to the bucket, including any
|
||||
bucket prefixes. Separate the alias and bucket path with a forward slash
|
||||
``\``. For example, ``play/mybucket``
|
||||
|
||||
- For ``VALUE``, specify the data key to use for encryption object(s) in
|
||||
the bucket or bucket prefix specified to ``KEY``.
|
||||
|
||||
:mc-cmd-option:`~mc sql encrypt-key` can use the ``MC_ENCRYPT_KEY``
|
||||
environment variable for populating the list of encryption key-value
|
||||
pairs as an alternative to specifying them on the command line.
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Input Formats
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
:mc:`mc sql` supports the following input formats:
|
||||
|
||||
- ``.csv``
|
||||
- ``.json``
|
||||
- ``.parquet``
|
||||
|
||||
For ``.csv`` file types, use :mc-cmd-option:`mc sql csv-input` to
|
||||
specify the CSV data format. See :ref:`mc-sql-csv-format` for more
|
||||
information on CSV formatting fields.
|
||||
|
||||
For ``.json`` file types, use :mc-cmd-option:`mc sql json-input` to specify
|
||||
the JSON data format.
|
||||
|
||||
For ``.parquet`` file types, :mc-cmd:`mc sql` automatically interprets the
|
||||
data format.
|
||||
|
||||
.. _mc-sql-csv-format:
|
||||
|
||||
CSV Formatting Fields
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following table lists valid key-value pairs for use with
|
||||
:mc-cmd-option:`mc sql csv-input` and :mc-cmd-option:`mc sql csv-output`.
|
||||
Certain key pairs are only valid for :mc-cmd-option:`~mc sql csv-input`
|
||||
See the documentation for S3 API :s3-api:`CSVInput <API_CSVInput.html>` for more
|
||||
information on S3 CSV formatting.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 20 20 60
|
||||
:width: 100%
|
||||
|
||||
* - Key
|
||||
- ``--csv-input`` Only
|
||||
- Description
|
||||
|
||||
* - ``rd``
|
||||
-
|
||||
- The character that seperates each record (row) in the input ``.csv``
|
||||
file.
|
||||
|
||||
Corresponds to ``RecordDelimiter`` in the S3 API ``CSVInput``.
|
||||
|
||||
* - ``fd``
|
||||
-
|
||||
- The character that seperates each field in a record. Defaults to
|
||||
``,``.
|
||||
|
||||
Corresponds to ``FieldDelimeter`` in the S3 API ``CSVInput``.
|
||||
|
||||
* - ``qc``
|
||||
-
|
||||
- The character used for escaping when the ``fd`` character is part of
|
||||
a value. Defaults to ``"``.
|
||||
|
||||
Corresponds to ``QuoteCharacter`` in the S3 API ``CSVInput``.
|
||||
|
||||
* - ``qec``
|
||||
-
|
||||
- The character used for escaping a quotation mark ``"`` character
|
||||
inside an already escaped value.
|
||||
|
||||
Corresponds to ``QuoteEscapeCharacter`` in the S3 API ``CSVInput``.
|
||||
|
||||
* - ``fh``
|
||||
- Yes
|
||||
- The content of the first line in the ``.csv`` file.
|
||||
|
||||
Specify one of the following supported values:
|
||||
|
||||
- ``NONE`` - The first line is not a header.
|
||||
- ``IGNORE`` - Ignore the first line.
|
||||
- ``USE`` - The first line is a header.
|
||||
|
||||
For ``NONE`` or ``IGNORE``, you must specify column positions
|
||||
``_#`` to identify a column in the :mc-cmd-option:`~mc sql query`
|
||||
statement.
|
||||
|
||||
For ``USE``, you can specify header values to identify a column in
|
||||
the :mc-cmd-option:`~mc sql query` statement.
|
||||
|
||||
Corresponds to ``FieldHeaderInfo`` in the S3 API ``CSVInput``.
|
||||
|
||||
* - ``cc``
|
||||
- Yes
|
||||
- The character used to indicate a record should be ignored. The
|
||||
character *must* appear at the beginning of the record.
|
||||
|
||||
Corresponds to ``Comment`` in the S3 API ``CSVInput``.
|
||||
|
||||
* - ``qrd``
|
||||
- Yes
|
||||
- Specify ``TRUE`` to indicate that fields may contain record delimiter
|
||||
values (``rd``).
|
||||
|
||||
Defaults to ``FALSE``.
|
||||
|
||||
Corresponds to ``AllowQuotedRecordDelimiter`` in the S3 API
|
||||
``CSVInput``.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Select all Columns in all Objects in a Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc sql --recursive \
|
||||
--query "select * from S3Object" s3/personalbucket/my-large-csvs/
|
||||
|
||||
Run an Aggregation Query on an Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc sql --query "select count(s.power) from S3Object" myminio/iot-devices/power-ratio.csv
|
||||
|
||||
Run an Aggregation Query on an Encrypted Object
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc sql --encrypt-key "myminio/iot-devices=32byteslongsecretkeymustbegiven1" \
|
||||
--query "select count(s.power) from S3Object" myminio/iot-devices/power-ratio-encrypted.csv
|
88
source/minio-cli/minio-mc/mc-stat.rst
Normal file
88
source/minio-cli/minio-mc/mc-stat.rst
Normal file
@ -0,0 +1,88 @@
|
||||
===========
|
||||
``mc stat``
|
||||
===========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc stat
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-stat-desc
|
||||
|
||||
The :mc:`mc stat` command displays information on objects contained in the
|
||||
specified S3-compatible service bucket. :mc:`mc stat` has similar functionality
|
||||
as the ``stat`` command when used on a filesystem path.
|
||||
|
||||
.. end-mc-stat-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc stat` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc stat [FLAGS] TARGET
|
||||
|
||||
:mc:`~mc stat` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
The full path to an object or file.
|
||||
|
||||
For objects on an S3-compatible service, specify the :mc:`alias <mc alias>`
|
||||
of a configured S3 service as the prefix to the :mc-cmd:`~mc stat TARGET`
|
||||
path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc stat [FLAGS] play/mybucket
|
||||
|
||||
If you specify a directory or bucket, you must also specify
|
||||
:mc-cmd-option:`mc stat recursive` to recursively apply the command to
|
||||
the contents of that directory or bucket.
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively :mc:`mc stat` the contents of
|
||||
:mc-cmd:`~mc stat TARGET`.
|
||||
|
||||
.. mc-cmd:: encrypt-key
|
||||
:option:
|
||||
|
||||
Encrypt or decrypt objects using server-side encryption with
|
||||
client-specified keys. Specify key-value pairs as ``KEY=VALUE``.
|
||||
|
||||
- Each ``KEY`` represents a bucket or object.
|
||||
- Each ``VALUE`` represents the data key to use for encrypting
|
||||
object(s).
|
||||
|
||||
Enclose the entire list of key-value pairs passed to
|
||||
:mc-cmd-option:`~mc stat encrypt-key` in double quotes ``"``.
|
||||
|
||||
:mc-cmd-option:`~mc stat encrypt-key` can use the ``MC_ENCRYPT_KEY``
|
||||
environment variable for retrieving a list of encryption key-value pairs
|
||||
as an alternative to specifying them on the command line.
|
||||
|
||||
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
68
source/minio-cli/minio-mc/mc-tree.rst
Normal file
68
source/minio-cli/minio-mc/mc-tree.rst
Normal file
@ -0,0 +1,68 @@
|
||||
===========
|
||||
``mc tree``
|
||||
===========
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc tree
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-tree-desc
|
||||
|
||||
The :mc:`mc tree` command lists buckets and directories in a tree format.
|
||||
|
||||
When applied to an S3-compatible service bucket, :mc:`mc tree` returns
|
||||
a tree listing of the bucket and all bucket prefixes.
|
||||
|
||||
When applied to a local filesystem directory, :mc:`mc tree` returns a
|
||||
tree listing of the directory and all of its subdirectories.
|
||||
|
||||
.. end-mc-tree-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc tree` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc tree [FLAGS] TARGET [TARGET...]
|
||||
|
||||
:mc:`~mc tree` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The full path to an S3-compatible service bucket *or* local
|
||||
filesystem directory.
|
||||
|
||||
For objects on an S3-compatible service, specify the :mc:`alias <mc alias>`
|
||||
of a configured service as the prefix to the :mc-cmd:`~mc stat TARGET`
|
||||
path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc stat [FLAGS] play/mybucket
|
||||
|
||||
.. mc-cmd:: files, f
|
||||
:option:
|
||||
|
||||
Includes files in the object or directory in the :mc:`mc tree` output.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc tree play/mybucket
|
33
source/minio-cli/minio-mc/mc-update.rst
Normal file
33
source/minio-cli/minio-mc/mc-update.rst
Normal file
@ -0,0 +1,33 @@
|
||||
=============
|
||||
``mc update``
|
||||
=============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc update
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-update-desc
|
||||
|
||||
The :command:`mc update` command automatically updates the ``mc`` binary to
|
||||
the latest stable version.
|
||||
|
||||
.. end-mc-update-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:command:`~mc update` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc update
|
||||
|
||||
Consider updating ``mc`` whenever you update the ``minio`` server binary to
|
||||
ensure consistent behavior and compatibility.
|
120
source/minio-cli/minio-mc/mc-version.rst
Normal file
120
source/minio-cli/minio-mc/mc-version.rst
Normal file
@ -0,0 +1,120 @@
|
||||
==============
|
||||
``mc version``
|
||||
==============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc version
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-version-desc
|
||||
|
||||
The :mc:`mc version` command enables or disables bucket versioning.
|
||||
|
||||
.. end-mc-version-desc
|
||||
|
||||
.. note::
|
||||
|
||||
The :release:`RELEASE.2020-08-08T02-33-58Z` release renamed
|
||||
``mc versioning`` to :mc:`mc version`.
|
||||
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc version` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc version TARGET COMMAND
|
||||
|
||||
:mc:`~mc version` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
**Required** The full path to the bucket on which to enable or
|
||||
disable bucket versioning. Specify the
|
||||
:command:`alias <mc alias>` of a configured S3-compatible service as the
|
||||
prefix to the :mc-cmd:`~mc version TARGET` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc version play/mybucket COMMAND
|
||||
|
||||
.. mc-cmd:: enable
|
||||
|
||||
The :mc-cmd:`mc version TARGET enable <mc version enable>` command
|
||||
enables bucket versioning on the :mc-cmd:`~mc version TARGET` bucket.
|
||||
|
||||
.. mc-cmd:: suspend
|
||||
|
||||
The :mc-cmd:`mc version TARGET suspend <mc version suspend>` command
|
||||
disables bucket versioning on the :mc-cmd:`~mc version TARGET` bucket.
|
||||
|
||||
.. mc-cmd:: info
|
||||
|
||||
The :mc-cmd:`mc version TARGET info <mc version info>` command
|
||||
returns the current bucket versioning configuration.
|
||||
|
||||
|
||||
Behavior
|
||||
--------
|
||||
|
||||
Object Locking Enables Bucket Versioning
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
While bucket versioning is disabled by default, configuring
|
||||
object locking on a bucket or an object in that bucket automatically
|
||||
enables versioning for the bucket. See
|
||||
:mc:`mc lock` for more information on configuring object locking.
|
||||
|
||||
Requires Erasure Coding
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Bucket versioning requires that the MinIO deployment supports erasure coding.
|
||||
See <erasure coding link> for more information.
|
||||
|
||||
Bucket Versioning with Existing Data
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Enabling bucket versioning on a bucket with existing data immediately applies
|
||||
a versioning ID to any unversioned object.
|
||||
|
||||
Disabling bucket versioning on a bucket with existing versioned data does
|
||||
*not* remove any versioned objects. Applications can continue to access
|
||||
versioned data after disabling bucket versioning. Use
|
||||
:mc:`mc rm` to delete an object *and* all its versions.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Enable Bucket Versioning
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc version play/mybucket enable
|
||||
|
||||
Disable Bucket Versioning
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc version play/mybucket suspend
|
108
source/minio-cli/minio-mc/mc-watch.rst
Normal file
108
source/minio-cli/minio-mc/mc-watch.rst
Normal file
@ -0,0 +1,108 @@
|
||||
============
|
||||
``mc watch``
|
||||
============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. mc:: mc watch
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. start-mc-watch-desc
|
||||
|
||||
The :mc:`mc watch` command watches for events on the specified S3-compatible
|
||||
service bucket or local filesystem path. For S3 services, use :mc:`mc event` to
|
||||
configure bucket event notifications on S3-compatible services.
|
||||
|
||||
.. end-mc-watch-desc
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
:mc:`~mc watch` has the following syntax:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc watch [FLAGS] TARGET
|
||||
|
||||
:mc:`~mc watch` supports the following arguments:
|
||||
|
||||
.. mc-cmd:: TARGET
|
||||
|
||||
*Required* The S3 service :mc:`alias <mc alias>` and bucket *or* the local
|
||||
filesystem directory to watch for event notifications. Specify the
|
||||
:mc-cmd:`alias <mc alias>` of a configured S3 service as the prefix to the
|
||||
``TARGET`` path. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc event add play/mybucket
|
||||
|
||||
.. mc-cmd:: event
|
||||
:option:
|
||||
|
||||
The event(s) to watch for. Specify multiple events using a comma ``,``
|
||||
delimiter. See :ref:`mc-event-supported-events` for supported events.
|
||||
|
||||
Defaults to ``put,delete, get``.
|
||||
|
||||
.. mc-cmd:: prefix
|
||||
:option:
|
||||
|
||||
The bucket prefix in which to watch for the speciified
|
||||
:mc-cmd-option:`~mc event event`.
|
||||
|
||||
For example, given a :mc-cmd:`~mc event TARGET` of ``play/mybucket`` and a
|
||||
:mc-cmd-option:`~mc event prefix` of ``photos``, only events in
|
||||
``play/mybucket/photos`` trigger bucket notifications.
|
||||
|
||||
.. mc-cmd:: suffix
|
||||
:option:
|
||||
|
||||
The bucket suffix in which to watch for the speciified
|
||||
:mc-cmd-option:`~mc event event`.
|
||||
|
||||
For example, given a :mc-cmd:`~mc event TARGET` of ``play/mybucket`` and a
|
||||
:mc-cmd-option:`~mc event suffix` of ``.jpg``, only events in
|
||||
``play/mybucket/*.jpg`` trigger bucket notifications.
|
||||
|
||||
.. mc-cmd:: recursive, r
|
||||
:option:
|
||||
|
||||
Recursively watch for events in the specified
|
||||
:mc-cmd:`~mc watch TARGET` bucket path or local directory.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
Watch for Events in a Bucket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc watch play/testbucket
|
||||
|
||||
Watch for Events in a Local Directory
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. include:: /includes/play-alias-available.rst
|
||||
:start-after: play-alias-only
|
||||
:end-before: end-play-alias-only
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
mc watch ~/photos
|
||||
|
||||
|
1416
source/minio-features/bucket-notifications.md
Normal file
1416
source/minio-features/bucket-notifications.md
Normal file
File diff suppressed because it is too large
Load Diff
28
source/minio-features/overview.rst
Normal file
28
source/minio-features/overview.rst
Normal file
@ -0,0 +1,28 @@
|
||||
=====================
|
||||
MinIO Server Features
|
||||
=====================
|
||||
|
||||
MinIO’s enterprise class features represent the standard in the object storage
|
||||
space. From the AWS S3 API to S3 Select and our implementations of inline
|
||||
erasure coding and security, our code is widely admired and frequently copied by
|
||||
some of the biggest names in technology and business.
|
||||
|
||||
The following table lists MinIO features and their corresponding documentation:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 30 70
|
||||
|
||||
* - Feature
|
||||
- Description
|
||||
|
||||
* - :doc:`Bucket Versioning </minio-features/bucket-notifications>`
|
||||
- MinIO Bucket Versioning allows you to automatically publish notifications
|
||||
to one or more configured notification targets when specific events
|
||||
occur in a bucket.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:hidden:
|
||||
|
||||
/minio-features/bucket-notifications
|
38
source/security/minio-security-TLS-encryption.rst
Normal file
38
source/security/minio-security-TLS-encryption.rst
Normal file
@ -0,0 +1,38 @@
|
||||
==============================
|
||||
MinIO Transport Layer Security
|
||||
==============================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The MinIO server supports enabling TLS encryption of incoming and outgoing
|
||||
traffic. MinIO recommends all MinIO servers run with TLS enabled to ensure
|
||||
end-to-end security of client-server or server-server transmissions.
|
||||
|
||||
The MinIO server looks for a private key ``private.key`` and public certificate
|
||||
``public.crt`` in the following directories:
|
||||
|
||||
- **Linux/OSX** : ``${HOME}/.minio/certs``
|
||||
|
||||
- **Windows** : ``%%USERPROFILE%%\.minio\certs``
|
||||
|
||||
MinIO only supports keys and certificates in the PEM format.
|
||||
|
||||
You can customize the certificate directory by passing the ``--certs-dir``
|
||||
option to ``minio server``. The ``certs`` directory must also include any
|
||||
intermediate certificates required to establish a chain of trust to the root CA.
|
||||
|
||||
Creating a Certificate for a MinIO Server
|
||||
-----------------------------------------
|
||||
|
||||
This section includes guidance for creating a private key and public
|
||||
certificate for a MinIO Server instance.
|
||||
|
||||
For MinIO deployments on Kubernetes, see the <future TLS kubernetes doc>
|
||||
tutorial for more specific instructions.
|
659
source/security/minio-security-policy-based-access-control.rst
Normal file
659
source/security/minio-security-policy-based-access-control.rst
Normal file
@ -0,0 +1,659 @@
|
||||
===========================
|
||||
Policy Based Access Control
|
||||
===========================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
By default, MinIO servers have a single root user which derives its credentials
|
||||
from an access key and secret key specified during server startup. While
|
||||
these credentials are adequate for local development and evaluation, MinIO
|
||||
strongly recommends using MinIO Policy Based Access Control (PBAC) to
|
||||
restrict user access to only the minimum set of actions and resources required
|
||||
to complete their workloads.
|
||||
|
||||
MinIO PBAC uses IAM-compatible policy JSON documents to define rules for
|
||||
accessing resources on the MinIO server. You can add policies to users or groups
|
||||
on the MinIO server. Adding a user to a group also adds all of the group's
|
||||
policies to the user.
|
||||
|
||||
.. _minio-security-pbac-built-in:
|
||||
|
||||
Built-In Policies
|
||||
-----------------
|
||||
|
||||
MinIO provides the following built-in policies for assigning to users
|
||||
and groups:
|
||||
|
||||
.. userpolicy:: readonly
|
||||
|
||||
Grants read-only permissions for all buckets and objects on the MinIO server.
|
||||
|
||||
.. userpolicy:: readwrite
|
||||
|
||||
Grants read and write permissions for all buckets and objects on the
|
||||
MinnIO server.
|
||||
|
||||
.. userpolicy:: diagnostics
|
||||
|
||||
Grants permission to perform diagnostic actions on the MinIO server.
|
||||
|
||||
.. userpolicy:: writeonly
|
||||
|
||||
Grants write-only permissions for all buckets and objects on the MinIO
|
||||
server.
|
||||
|
||||
.. _minio-security-pbac-document:
|
||||
|
||||
Policy Document Structure
|
||||
-------------------------
|
||||
|
||||
MinIO policy documents use the same schema as
|
||||
:aws-docs:`AWS IAM Policy <IAM/latest/UserGuide/access.html>` documents.
|
||||
|
||||
The following sample document provides a general schema for creating custom
|
||||
policies for use with a MinIO deployment. For more complete documentation on IAM
|
||||
policy elements, see the :aws-docs:`IAM JSON Policy Elements Reference
|
||||
<IAM/latest/UserGuide/reference_policies_elements.html>`.
|
||||
|
||||
.. code-block:: javascript
|
||||
:class: copyable
|
||||
|
||||
{
|
||||
"Version" : "2012-10-17",
|
||||
"Statement" : [
|
||||
{
|
||||
"Effect" : "Allow",
|
||||
"Action" : [ "s3:<ActionName>", ... ],
|
||||
"Resource" : "arn:minio:s3:::*",
|
||||
"Condition" : { ... }
|
||||
},
|
||||
{
|
||||
"Effect" : "Deny",
|
||||
"Action" : [ "s3:<ActionName>", ... ],
|
||||
"Resource" : "arn:minio:s3:::*",
|
||||
"Condition" : { ... }
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
- For the ``Statement.Action`` array, specify one or more
|
||||
:ref:`supported S3 actions <minio-security-pbac-actions>`. MinIO deployments
|
||||
supports a subset of AWS S3 actions.
|
||||
|
||||
- For the ``Statement.Resource`` key, you can replace the ``*`` with
|
||||
the specific bucket to which the policy statement should apply.
|
||||
Using ``*`` applies the statement to all resources on the MinIO deployment.
|
||||
|
||||
- For the ``Statement.Condition`` key, you can specify one or more
|
||||
:ref:`supported Conditions <minio-security-pbac-conditions>`. MinIO
|
||||
deployments supports a subset of AWS S3 conditions.
|
||||
|
||||
.. _minio-security-pbac-actions:
|
||||
|
||||
Supported Policy Actions
|
||||
------------------------
|
||||
|
||||
MinIO policy documents support a subset of IAM
|
||||
:iam-docs:`S3 Action keys <list_amazons3.html#amazons3-actions-as-permissions>`.
|
||||
|
||||
The following table lists the MinIO-supported policy action keys.
|
||||
|
||||
.. policy-action:: s3:*
|
||||
|
||||
Selector for all supported S3 actions.
|
||||
|
||||
.. policy-action:: s3:AbortMultipartUpload
|
||||
|
||||
Corresponds to the :s3-api:`s3:AbortMultipartUpload
|
||||
<API_AbortMultipartUpload.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:CreateBucket
|
||||
|
||||
Corresponds to the :s3-api:`s3:CreateBucket <API_CreateBucket.html>` IAM
|
||||
action.
|
||||
|
||||
.. policy-action:: s3:DeleteBucket
|
||||
|
||||
Corresponds to the :s3-api:`s3:DeleteBucket <API_DeleteBucket.html>` IAM
|
||||
action.
|
||||
|
||||
.. policy-action:: s3:ForceDeleteBucket
|
||||
|
||||
Corresponds to the :s3-api:`s3:DeleteBucket <API_ForceDeleteBucket.html>`
|
||||
IAM action for operations with the ``x-minio-force-delete`` flag.
|
||||
|
||||
.. policy-action:: s3:DeleteBucketPolicy
|
||||
|
||||
Corresponds to the :s3-api:`s3:DeleteBucketPolicy
|
||||
<API_DeleteBucketPolicy.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:DeleteObject
|
||||
|
||||
Corresponds to the :s3-api:`s3:DeleteObject <API_DeleteObject.html>` IAM
|
||||
action.
|
||||
|
||||
.. policy-action:: s3:GetBucketLocation
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetBucketLocation
|
||||
<API_GetBucketLocation.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetBucketNotification
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetBucketNotification
|
||||
<API_GetBucketNotification.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetBucketPolicy
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetBucketPolicy <API_GetBucketPolicy.html>`
|
||||
IAM action.
|
||||
|
||||
.. policy-action:: s3:GetObject
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetObject <API_GetObject.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:HeadBucket
|
||||
|
||||
Corresponds to the :s3-api:`s3:HeadBucket <API_HeadBucket.html>` IAM action.
|
||||
|
||||
*This action is unused in MinIO.*
|
||||
|
||||
.. policy-action:: s3:ListAllMyBuckets
|
||||
|
||||
Corresponds to the :s3-api:`s3:ListAllMyBuckets <API_ListAllMyBuckets.html>`
|
||||
IAM action.
|
||||
|
||||
.. policy-action:: s3:ListBucket
|
||||
|
||||
Corresponds to the :s3-api:`s3:ListBucket <API_ListBucket.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:ListMultipartUploads
|
||||
|
||||
Corresponds to the :s3-api:`s3:ListMultipartUploads
|
||||
<API_ListMultipartUploads.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:ListenNotification
|
||||
|
||||
MinIO Extension for controlling API operations related to MinIO Bucket
|
||||
Notifications.
|
||||
|
||||
This action is **not** intended for use with other S3-compatible services.
|
||||
|
||||
.. policy-action:: s3:ListenBucketNotification
|
||||
|
||||
MinIO Extension for controlling API operations related to MinIO Bucket
|
||||
Notifications.
|
||||
|
||||
This action is **not** intended for use with other S3-compatible services.
|
||||
|
||||
.. policy-action:: s3:ListParts
|
||||
|
||||
Corresponds to the :s3-api:`s3:ListParts <API_ListParts.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:PutBucketLifecycle
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutBucketLifecycle
|
||||
<API_PutBucketLifecycle.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetBucketLifecycle
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetBucketLifecycle
|
||||
<API_GetBucketLifecycle.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:PutObjectNotification
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutObjectNotification
|
||||
<API_PutObjectNotification.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:PutBucketPolicy
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutBucketPolicy <API_PutBucketPolicy.html>`
|
||||
IAM action.
|
||||
|
||||
.. policy-action:: s3:PutObject
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutObject <API_PutObject.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:DeleteObjectVersion
|
||||
|
||||
Corresponds to the :s3-api:`s3:DeleteObjectVersion
|
||||
<API_DeleteObjectVersion.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:DeleteObjectVersionTagging
|
||||
|
||||
Corresponds to the :s3-api:`s3:DeleteObjectVersionTagging
|
||||
<API_DeleteObjectVersionTagging.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetObjectVersion
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetObjectVersion
|
||||
<API_GetObjectVersion.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetObjectVersionTagging
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetObjectVersionTagging
|
||||
<API_GetObjectVersionTagging.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:PutObjectVersionTagging
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutObjectVersionTagging
|
||||
<API_PutObjectVersionTagging.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:BypassGovernanceRetention
|
||||
|
||||
Corresponds to the :s3-docs:`s3:BypassGovernanceRetention
|
||||
<object-lock-managing.html#object-lock-managing-bypass>` IAM action.
|
||||
|
||||
This action applies to the following API operations on objects locked under
|
||||
:mc-cmd:`GOVERNANCE <mc retention set MODE>` retention mode:
|
||||
|
||||
- ``PutObjectRetention``
|
||||
- ``PutObject``
|
||||
- ``DeleteObject``
|
||||
|
||||
.. policy-action:: s3:PutObjectRetention
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutObjectRetention
|
||||
<API_PutObjectRetention.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetObjectRetention
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetObjectRetention
|
||||
<API_GetObjectRetention.html>` IAM action.
|
||||
|
||||
This action applies to the following API operations on objects locked under
|
||||
any retention mode:
|
||||
|
||||
- ``GetObject``
|
||||
- ``HeadObject``
|
||||
|
||||
.. policy-action:: s3:GetObjectLegalHold
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetObjectLegalHold
|
||||
<API_GetObjectLegalHold.html>` IAM action.
|
||||
|
||||
This action applies to the following API operations on objects locked under
|
||||
legal hold:
|
||||
|
||||
- ``GetObject``
|
||||
|
||||
.. policy-action:: s3:PutObjectLegalHold
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutObjectLegalHold
|
||||
<API_PutObjectLegalHold.html>` IAM action.
|
||||
|
||||
This action applies to the following API operations on objects locked
|
||||
under legal hold:
|
||||
|
||||
- ``PutObject``
|
||||
|
||||
.. policy-action:: s3:GetBucketObjectLockConfiguration
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetBucketObjectLockConfiguration
|
||||
<API_GetBucketObjectLockConfiguration.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:PutBucketObjectLockConfiguration
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutBucketObjectLockConfiguration
|
||||
<API_PutBucketObjectLockConfiguration.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetBucketTagging
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetBucketTagging <API_GetBucketTagging.html>`
|
||||
IAM action.
|
||||
|
||||
.. policy-action:: s3:PutBucketTagging
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutBucketTagging <API_PutBucketTagging.html>`
|
||||
IAM action.
|
||||
|
||||
.. policy-action:: s3:Get
|
||||
|
||||
Corresponds to the :s3-api:`s3:Get <API_Get.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:Put
|
||||
|
||||
Corresponds to the :s3-api:`s3:Put <API_Put.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:Delete
|
||||
|
||||
Corresponds to the :s3-api:`s3:Delete <API_Delete.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:PutBucketEncryption
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutBucketEncryption
|
||||
<API_PutBucketEncryption.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetBucketEncryption
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetBucketEncryption
|
||||
<API_GetBucketEncryption.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:PutBucketVersioning
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutBucketVersioning
|
||||
<API_PutBucketVersioning.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetBucketVersioning
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetBucketVersioning
|
||||
<API_GetBucketVersioning.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:GetReplicationConfiguration
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetReplicationConfiguration
|
||||
<API_GetReplicationConfiguration.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:PutReplicationConfiguration
|
||||
|
||||
Corresponds to the :s3-api:`s3:PutReplicationConfiguration
|
||||
<PutReplicationConfiguration.html>` IAM action.
|
||||
|
||||
.. policy-action:: s3:ReplicateObject
|
||||
|
||||
Corresponds to the :s3-api:`s3:ReplicateObject <API_ReplicateObject.html>`
|
||||
IAM action.
|
||||
|
||||
.. policy-action:: s3:ReplicateDelete
|
||||
|
||||
Corresponds to the :s3-api:`s3:ReplicateDelete <API_ReplicateDelete.html>`
|
||||
IAM action.
|
||||
|
||||
.. policy-action:: s3:ReplicateTags
|
||||
|
||||
Corresponds to the :s3-api:`s3:ReplicateTags <API_ReplicateTags.html>` IAM
|
||||
action.
|
||||
|
||||
.. policy-action:: s3:GetObjectVersionForReplication
|
||||
|
||||
Corresponds to the :s3-api:`s3:GetObjectVersionForReplication
|
||||
<API_GetObjectVersionForReplication.html>` IAM action.
|
||||
|
||||
|
||||
.. _minio-security-pbac-mc-admin-actions:
|
||||
|
||||
``mc admin`` Policy Action Keys
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
MinIO supports the following actions for use with defining policies
|
||||
for :mc-cmd:`mc admin` operations. These actions are *only* valid for
|
||||
MinIO deployments and are *not* intended for use with other S3-compatible
|
||||
services:
|
||||
|
||||
.. policy-action:: admin:Heal
|
||||
|
||||
Allows heal command
|
||||
|
||||
.. policy-action:: admin:StorageInfo
|
||||
|
||||
Allows listing server info
|
||||
|
||||
.. policy-action:: admin:DataUsageInfo
|
||||
|
||||
Allows listing data usage info
|
||||
|
||||
.. policy-action:: admin:TopLocksInfo
|
||||
|
||||
Allows listing top locks
|
||||
|
||||
.. policy-action:: admin:Profiling
|
||||
|
||||
Allows profiling
|
||||
|
||||
.. policy-action:: admin:ServerTrace
|
||||
|
||||
Allows listing server trace
|
||||
|
||||
.. policy-action:: admin:ConsoleLog
|
||||
|
||||
Allows listing console logs on terminal
|
||||
|
||||
.. policy-action:: admin:KMSCreateKey
|
||||
|
||||
Allows creating a new KMS master key
|
||||
|
||||
.. policy-action:: admin:KMSKeyStatus
|
||||
|
||||
Allows getting KMS key status
|
||||
|
||||
.. policy-action:: admin:ServerInfo
|
||||
|
||||
Allows listing server info
|
||||
|
||||
.. policy-action:: admin:OBDInfo
|
||||
|
||||
Allows obtaining cluster on-board diagnostics
|
||||
|
||||
.. policy-action:: admin:ServerUpdate
|
||||
|
||||
Allows MinIO binary update
|
||||
|
||||
.. policy-action:: admin:ServiceRestart
|
||||
|
||||
Allows restart of MinIO service.
|
||||
|
||||
.. policy-action:: admin:ServiceStop
|
||||
|
||||
Allows stopping MinIO service.
|
||||
|
||||
.. policy-action:: admin:ConfigUpdate
|
||||
|
||||
Allows MinIO config management
|
||||
|
||||
.. policy-action:: admin:CreateUser
|
||||
|
||||
Allows creating MinIO user
|
||||
|
||||
.. policy-action:: admin:DeleteUser
|
||||
|
||||
Allows deleting MinIO user
|
||||
|
||||
.. policy-action:: admin:ListUsers
|
||||
|
||||
Allows list users permission
|
||||
|
||||
.. policy-action:: admin:EnableUser
|
||||
|
||||
Allows enable user permission
|
||||
|
||||
.. policy-action:: admin:DisableUser
|
||||
|
||||
Allows disable user permission
|
||||
|
||||
.. policy-action:: admin:GetUser
|
||||
|
||||
Allows GET permission on user info
|
||||
|
||||
.. policy-action:: admin:AddUserToGroup
|
||||
|
||||
Allows adding user to group permission
|
||||
|
||||
.. policy-action:: admin:RemoveUserFromGroup
|
||||
|
||||
Allows removing user to group permission
|
||||
|
||||
.. policy-action:: admin:GetGroup
|
||||
|
||||
Allows getting group info
|
||||
|
||||
.. policy-action:: admin:ListGroups
|
||||
|
||||
Allows list groups permission
|
||||
|
||||
.. policy-action:: admin:EnableGroup
|
||||
|
||||
Allows enable group permission
|
||||
|
||||
.. policy-action:: admin:DisableGroup
|
||||
|
||||
Allows disable group permission
|
||||
|
||||
.. policy-action:: admin:CreatePolicy"
|
||||
|
||||
Allows create policy permission
|
||||
|
||||
.. policy-action:: admin:DeletePolicy
|
||||
|
||||
Allows delete policy permission
|
||||
|
||||
.. policy-action:: admin:GetPolicy
|
||||
|
||||
Allows get policy permission
|
||||
|
||||
.. policy-action:: admin:AttachUserOrGroupPolicy
|
||||
|
||||
Allows attaching a policy to a user/group
|
||||
|
||||
.. policy-action:: admin:ListUserPolicies
|
||||
|
||||
Allows listing user policies
|
||||
|
||||
.. policy-action:: admin:SetBucketQuota
|
||||
|
||||
Allows setting bucket quota
|
||||
|
||||
.. policy-action:: admin:GetBucketQuota
|
||||
|
||||
Allows getting bucket quota
|
||||
|
||||
.. policy-action:: admin:SetBucketTarget
|
||||
|
||||
Allows setting bucket target
|
||||
|
||||
.. policy-action:: admin:GetBucketTarget
|
||||
|
||||
Allows getting bucket targets
|
||||
|
||||
.. _minio-security-pbac-conditions:
|
||||
|
||||
Supported Policy Condition Keys
|
||||
-------------------------------
|
||||
|
||||
MinIO policy documents support IAM
|
||||
:iam-docs:`conditional statements <reference_policies_elements_condition.html>`.
|
||||
|
||||
Each condition element consists of
|
||||
:iam-docs:`operators <reference_policies_elements_condition_operators.html>`
|
||||
and condition keys. MinIO supports a subset of IAM condition keys. For complete
|
||||
information on any listed condition key, see the
|
||||
:iam-docs:`IAM Condition Element Documentation
|
||||
<reference_policies_elements_condition.html>`
|
||||
|
||||
MinIO supports the following condition keys for all supported
|
||||
:ref:`actions <minio-security-pbac-actions>`:
|
||||
|
||||
- ``aws:Referer``
|
||||
- ``aws:SourceIp``
|
||||
- ``aws:UserAgent``
|
||||
- ``aws:SecureTransport``
|
||||
- ``aws:CurrentTime``
|
||||
- ``aws:EpochTime``
|
||||
- ``aws:PrincipalType``
|
||||
- ``aws:userid``
|
||||
- ``aws:username``
|
||||
- ``s3:x-amz-content-sha256``
|
||||
|
||||
The following table lists additional supported condition keys for specific
|
||||
actions:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 30 70
|
||||
:width: 100%
|
||||
|
||||
* - Action Key
|
||||
- Condition Keys
|
||||
|
||||
* - :policy-action:`s3:GetObject`
|
||||
- | ``s3:x-amz-server-side-encryption``
|
||||
| ``s3:x-amz-server-side-encryption-customer-algorithm``
|
||||
|
||||
* - :policy-action:`s3:ListBucket`
|
||||
- | ``s3:prefix``
|
||||
| ``s3:delimiter``
|
||||
| ``s3:max-keys``
|
||||
|
||||
* - :policy-action:`s3:PutObject`
|
||||
- | ``s3:x-amz-copy-source``
|
||||
| ``s3:x-amz-server-side-encryption``
|
||||
| ``s3:x-amz-server-side-encryption-customer-algorithm``
|
||||
| ``s3:x-amz-metadata-directive``
|
||||
| ``s3:x-amz-storage-class``
|
||||
| ``s3:object-lock-retain-until-date``
|
||||
| ``s3:object-lock-mode``
|
||||
| ``s3:object-lock-legal-hold``
|
||||
|
||||
* - :policy-action:`s3:PutObjectRetention`
|
||||
- | ``s3:x-amz-object-lock-remaining-retention-days``
|
||||
| ``s3:x-amz-object-lock-retain-until-date``
|
||||
| ``s3:x-amz-object-lock-mode``
|
||||
|
||||
* - :policy-action:`s3:PutObjectLegalHold`
|
||||
- ``s3:object-lock-legal-hold``
|
||||
|
||||
* - :policy-action:`s3:BypassGovernanceRetention`
|
||||
- | ``s3:object-lock-remaining-retention-days``
|
||||
| ``s3:object-lock-retain-until-date``
|
||||
| ``s3:object-lock-mode``
|
||||
| ``s3:object-lock-legal-hold``
|
||||
|
||||
* - :policy-action:`s3:GetObjectVersion`
|
||||
- ``s3:versionid``
|
||||
|
||||
* - :policy-action:`s3:GetObjectVersionTagging`
|
||||
- ``s3:versionid``
|
||||
|
||||
* - :policy-action:`s3:DeleteObjectVersion`
|
||||
- ``s3:versionid``
|
||||
|
||||
* - :policy-action:`s3:DeleteObjectVersionTagging`
|
||||
- ``s3:versionid``
|
||||
|
||||
``mc admin`` Policy Condition Keys
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
MinIO supports the following conditions for use with defining policies for
|
||||
:mc-cmd:`mc admin` :ref:`actions <minio-security-pbac-mc-admin-actions>`.
|
||||
|
||||
- ``aws:Referer``
|
||||
- ``aws:SourceIp``
|
||||
- ``aws:UserAgent``
|
||||
- ``aws:SecureTransport``
|
||||
- ``aws:CurrentTime``
|
||||
- ``aws:EpochTime``
|
||||
|
||||
For complete information on any listed condition key, see the :iam-docs:`IAM
|
||||
Condition Element Documentation <reference_policies_elements_condition.html>`
|
||||
|
||||
Creating Custom Policies
|
||||
------------------------
|
||||
|
||||
Use the ``mc admin policy`` command to add a policy to the MinIO
|
||||
server. The policy *must* be a valid JSON document formatted according to
|
||||
IAM policy specifications. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc config host add myminio http://myminio1.example.net:9000 <access_key> <secret_key>
|
||||
|
||||
mc admin policy add myminio/ new_policy new_policy.json
|
||||
|
||||
To add this policy to a user or group, use the ``mc admin policy set`` command:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mc admin policy set myminio/ new_policy user=user_name
|
||||
|
||||
mc admin policy set myminio/ new_policy group=group_name
|
||||
|
||||
Add Policies to a User or Group
|
||||
-------------------------------
|
||||
|
||||
Remove Policies from a User or Group
|
||||
------------------------------------
|
70
source/security/minio-security-security-token-service.rst
Normal file
70
source/security/minio-security-security-token-service.rst
Normal file
@ -0,0 +1,70 @@
|
||||
============================
|
||||
MinIO Security Token Service
|
||||
============================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The MinIO Security Token Service (STS) is an endpoint service that enables
|
||||
clients to request temporary credentials for MinIO resources. Temporary
|
||||
credentials work almost identically to default admin credentials, with some
|
||||
differences:
|
||||
|
||||
- Temporary credentials are short-term, as the name implies. They can be
|
||||
configured to last for anywhere from a few minutes to several hours. After the
|
||||
credentials expire, MinIO no longer recognizes them or allows any kind of
|
||||
access from API requests made with them.
|
||||
|
||||
- Temporary credentials do not need to be stored with the application but are
|
||||
generated dynamically and provided to the application when requested. When (or
|
||||
even before) the temporary credentials expire, the application can request new
|
||||
credentials.
|
||||
|
||||
Consider the following advantages of using temporary credentials:
|
||||
|
||||
- Eliminates the need to embed long-term credentials with an application.
|
||||
|
||||
- Eliminates the need to provide access to buckets and objects without having to
|
||||
define static credentials.
|
||||
|
||||
- Temporary credentials have a limited lifetime, there is no need to rotate them
|
||||
or explicitly revoke them. Expired temporary credentials cannot be reused.
|
||||
|
||||
Identity Federation
|
||||
-------------------
|
||||
|
||||
MinIO STS supports the following identity federation providers:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 30 70
|
||||
|
||||
* - Provider
|
||||
- Description
|
||||
|
||||
* - OpenID Providers
|
||||
- Applications can request a client credential grant from an
|
||||
OpenID-compatible identity provider. Clients validate their identity
|
||||
using a JWT access token supplied by the identity provider.
|
||||
|
||||
See <doc> for more information on configuring OpenID-based identity
|
||||
federation.
|
||||
|
||||
* - OpenID WebIdentity
|
||||
- Applications can request temporary credentials using any OpenID (OIDC)
|
||||
compatible web identity provider. See <doc> for more information.
|
||||
|
||||
* - AssumeRole
|
||||
- Applications can request temporary credentials using a MinIO User
|
||||
access and secret key.
|
||||
|
||||
* - Active Directory / Lightweight Directory Access Protocol (AD/LDAP)
|
||||
- Applications can request temporary credentials using an external
|
||||
AD/LDAP service.
|
||||
|
153
source/security/minio-security-server-side-encryption.rst
Normal file
153
source/security/minio-security-server-side-encryption.rst
Normal file
@ -0,0 +1,153 @@
|
||||
=============================
|
||||
Server-Side Object Encryption
|
||||
=============================
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
.. contents:: On This Page
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
MinIO supports Server-Side Encryption (SSE) of objects, where the MinIO
|
||||
stores objects on disk in an encrypted format. Only clients with access
|
||||
to the correct secret key can decrypt and read the object.
|
||||
|
||||
MinIO supports two types of SSE encryption:
|
||||
|
||||
SSE-C
|
||||
The server uses a secret key provided by the client to perform
|
||||
encryption and decryption. SSE-C requires TLS connectivity between
|
||||
clients and the MinIO server.
|
||||
|
||||
SSE-S3
|
||||
The server uses a secret key managed by a Key Management System (KMS)
|
||||
to perform encryption and decryption. SSE-S3 requires a compatible KMS
|
||||
provider accessible by the MinIO server.
|
||||
|
||||
Encryption Process Overview
|
||||
---------------------------
|
||||
|
||||
The MinIO server uses three distinct keys when encrypting or decrypting an
|
||||
object:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 30 70
|
||||
|
||||
* - Key
|
||||
- Description
|
||||
|
||||
* - External Key (EK)
|
||||
- An external secret key used to generate additional encryption keys.
|
||||
|
||||
For SSE-C, the EK is the client-supplied secret key.
|
||||
|
||||
For SSE-S3, the EK is the KMS-supplied secret key.
|
||||
|
||||
* - Key Encryption Key (KEK)
|
||||
- A unique secret key deterministically generated on-demand using the EK.
|
||||
MinIO never stores the KEK on disk.
|
||||
|
||||
* - Object Encryption Key (OEK)
|
||||
- A randomly generated per-object key used to encrypt or decrypt the
|
||||
object. MinIO encrypts the OEK using the KEK and stores the encrypted
|
||||
OEK as metadata with the object.
|
||||
|
||||
SSE Encryption Types
|
||||
--------------------
|
||||
|
||||
SSE with Client Provided Keys (SSE-C)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
SSE-C allows S3 clients to specify an Encryption Key (EK) for encrypting or
|
||||
decrypting an object stored on the MinIO server. The S3 client sends the secret
|
||||
key as part of the HTTP request. For read requests with the correct secret key,
|
||||
the MinIO server sends the *decrypted* object to the client applications. SSE-C
|
||||
therefore *requires* TLS between the client and server to ensure end-to-end
|
||||
security and protection of the secret key and any unencrypted data. While the
|
||||
MinIO server never stores the client EK to disk, the client EK resides in system
|
||||
RAM during the encryption or decryption process.
|
||||
|
||||
MinIO does not assume or require that S3 clients send a unique EK. However,
|
||||
if clients use a single EK for multiple objects or buckets, the loss or
|
||||
compromise of that EK *also* results in the loss or compromise of all data
|
||||
encrypted with that EK.
|
||||
|
||||
Key Rotation
|
||||
````````````
|
||||
|
||||
S3 clients can rotate the client EK of an existing object using an S3 ``COPY``
|
||||
operation. The ``COPY`` source and destination *must* be the same, while the
|
||||
request headers must contain both the current and the new client EK. For
|
||||
example, the following request headers support rotating the client EK for an
|
||||
object:
|
||||
|
||||
.. code-block:: shell
|
||||
:class: copyable
|
||||
|
||||
X-Amz-Server-Side-Encryption-Customer-Key: Base64 encoded new key.
|
||||
X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key: Base64 encoded current key.
|
||||
|
||||
Such a special COPY request is also known as S3 SSE-C key rotation.
|
||||
|
||||
SSE with KMS Provided Keys (SSE-S3)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
SSE-S3 allows S3 clinets to encrypt or decrypt an object at the MinIO server
|
||||
using an external Key Management Service (KMS). The MinIO server requires
|
||||
the KMS provide the following services:
|
||||
|
||||
- ``GenerateKey``: The MinIO server specifies the ID of a master key to the
|
||||
KMS. The KMS then uses the master key to generate a new data key and
|
||||
returns the plain data key and the master-key encrypted data key.
|
||||
|
||||
- ``DecryptKey``: The MinIO server specifies the ID of a master key to the KMS
|
||||
along with an encrypted data key. The KMS uses the master key to decrypt
|
||||
the data key and return the plain data key.
|
||||
|
||||
The MinIO server requests a new data key from the KMS for each uploaded
|
||||
object and uses that data key as the Encryption Key (EK). MinIO stores
|
||||
the encrypted EK and the master key ID as part of the object metadata.
|
||||
While the MinIO server never stores the plain EK to disk, the EK resides
|
||||
in system RAM during the encryption or decryption process.
|
||||
|
||||
Key Rotation
|
||||
````````````
|
||||
|
||||
The MinIO server supports key rotation for SSE-S3 encrypted objects. The MinIO
|
||||
server decrypts the Object Encryption Key (OEK) using the current encrypted data
|
||||
key and the master key ID of the object metadata. If this succeeds, the server
|
||||
requests a new data key from the KMS using the master key ID of the current
|
||||
MinIO KMS configuration and re-wraps the OEK with a new KEK derived from the new
|
||||
data key / EK.
|
||||
|
||||
<Diagram to come>
|
||||
|
||||
Only the root MinIO user can perform an SSE-S3 key rotation using the Admin-API via
|
||||
the ``mc`` client. Refer to the ``mc admin guide`` <todo>
|
||||
|
||||
Secure Erasure and Locking
|
||||
``````````````````````````
|
||||
|
||||
The MinIO server requires an available KMS to en/decrypt SSE-S3 encrypted
|
||||
objects. Therefore it is possible to erase or lock some or all encrypted
|
||||
objects. For example in case of a detected attack or other emergency situations
|
||||
the following actions can be taken:
|
||||
|
||||
- Seal the KMS such that it cannot be accessed by MinIO server anymore. That
|
||||
will lock all SSE-S3 encrypted objects protected by master keys stored on the
|
||||
KMS. All these objects can not be decrypted as long as the KMS is sealed.
|
||||
|
||||
- Seal/Unmount one/some master keys. That will lock all SSE-S3 encrypted objects
|
||||
protected by these master keys. All these objects can not be decrypted as long
|
||||
as the key(s) are sealed.
|
||||
|
||||
- Delete one/some master keys. From a security standpoint, this is equal to
|
||||
erasing all SSE-S3 encrypted objects protected by these master keys. All these
|
||||
objects are lost forever as they cannot be decrypted. Especially deleting all
|
||||
master keys at the KMS is equivalent to secure erasing all SSE-S3 encrypted
|
||||
objects.
|
||||
|
47
source/security/minio-security.rst
Normal file
47
source/security/minio-security.rst
Normal file
@ -0,0 +1,47 @@
|
||||
==============
|
||||
MinIO Security
|
||||
==============
|
||||
|
||||
.. default-domain:: minio
|
||||
|
||||
MinIO provides support for the following security features:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 30 70
|
||||
|
||||
* - Feature
|
||||
- Description
|
||||
|
||||
* - Server-Side Object Encryption
|
||||
- Encrypt objects using a secret key provided by the S3 client
|
||||
or a supported Key Management System (KMS). Only clients with access
|
||||
to the secret key can decrypt the object.
|
||||
|
||||
* - Transport Layer Security (TLS) Encryption
|
||||
- Enable TLS encryption of all network traffic. Several MinIO
|
||||
security features, such as Server-Side Object Encryption, require
|
||||
TLS encryption to ensure end-to-end security of data.
|
||||
|
||||
* - Policy Based Access Control (RBAC)
|
||||
- MinIO uses :aws-docs:`IAM-compatible policy documents
|
||||
<IAM/latest/UserGuide/access_policies>` for controlling user privileges.
|
||||
You can also assign privileges to a group, where all members of the
|
||||
group inherit the group privileges. MinIO provides built-in
|
||||
policies for the most common access patterns.
|
||||
|
||||
* - Security Token Service (STS)
|
||||
- MinIO Security Token Service (STS) is an endpoint service that allows
|
||||
clients to request temporary credentials for accessing MinIO resources.
|
||||
MinIO STS supports multiple forms of identity federation, including
|
||||
OpenID identity providers and Active Directory/LDAP services.
|
||||
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:hidden:
|
||||
|
||||
/security/minio-security-policy-based-access-control
|
||||
/security/minio-security-TLS-encryption
|
||||
/security/minio-security-server-side-encryption
|
||||
/security/minio-security-security-token-service
|
675
sphinxext/minio.py
Normal file
675
sphinxext/minio.py
Normal file
@ -0,0 +1,675 @@
|
||||
"""
|
||||
sphinx.domains.minio
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The MinIO domain.
|
||||
|
||||
:copyright: Copyright 2007-2020 by MinIO Inc. See AUTHORS
|
||||
:license: Apache License 2.0. See LICENSE
|
||||
|
||||
Based on the default JavaScript domain distributed with Sphinx (BSD 2-clause)
|
||||
|
||||
Additional work to adapt for MinIO done by MinIO Inc. (See AUTHORS)
|
||||
|
||||
See https://github.com/sphinx-doc/sphinx/blob/3.x/sphinx/domains/javascript.py.
|
||||
|
||||
|
||||
|
||||
|
||||
"""
|
||||
|
||||
from typing import Any, Dict, Iterator, List, Tuple
|
||||
from typing import cast
|
||||
|
||||
from docutils import nodes
|
||||
from docutils.nodes import Element, Node
|
||||
from docutils.parsers.rst import directives
|
||||
|
||||
from sphinx import addnodes
|
||||
from sphinx.addnodes import desc_signature, pending_xref
|
||||
from sphinx.application import Sphinx
|
||||
from sphinx.builders import Builder
|
||||
from sphinx.directives import ObjectDescription
|
||||
from sphinx.domains import Domain, ObjType
|
||||
from sphinx.domains.python import _pseudo_parse_arglist
|
||||
from sphinx.environment import BuildEnvironment
|
||||
from sphinx.locale import _, __
|
||||
from sphinx.roles import XRefRole
|
||||
from sphinx.util import logging
|
||||
from sphinx.util.docfields import Field, GroupedField, TypedField
|
||||
from sphinx.util.docutils import SphinxDirective
|
||||
from sphinx.util.nodes import make_id, make_refnode
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class MinioMCCommand(SphinxDirective):
|
||||
"""
|
||||
Description of a MinIO MC Command. Use this class when describing a top level
|
||||
``mc`` or ``mc admin`` command. ``MinioSubcommand`` objects use this
|
||||
as a prefix for linking purposes.
|
||||
"""
|
||||
|
||||
has_content = False
|
||||
required_arguments = 1
|
||||
optional_arguments = 1 #for mc admin?
|
||||
final_argument_whitespace = True
|
||||
option_spec = {
|
||||
'noindex': directives.flag # in case we do not want to create an index entry.
|
||||
}
|
||||
|
||||
def run(self) -> List[Node]:
|
||||
command = self.arguments[0].strip()
|
||||
if (len(self.arguments) > 1):
|
||||
command += " " + self.arguments[1].strip()
|
||||
|
||||
self.env.ref_context['minio:command'] = command
|
||||
noindex = 'noindex' in self.options
|
||||
ret = []
|
||||
if not noindex:
|
||||
domain = cast(MinIODomain, self.env.get_domain('minio'))
|
||||
|
||||
node_id = make_id(self.env, self.state.document, 'command', command)
|
||||
domain.note_module(command, node_id)
|
||||
# Make a duplicate entry in 'objects' to facilitate searching for
|
||||
# the module in JavaScriptDomain.find_obj()
|
||||
domain.note_object(command, 'command', node_id,
|
||||
location=(self.env.docname, self.lineno))
|
||||
|
||||
target = nodes.target('', '', ids=[node_id], ismod=True)
|
||||
|
||||
self.state.document.note_explicit_target(target)
|
||||
ret.append(target)
|
||||
indextext = _('%s (command)') % command
|
||||
inode = addnodes.index(entries=[('single', indextext, node_id, '', None)])
|
||||
ret.append(inode)
|
||||
return ret
|
||||
|
||||
class MinioMCObject(ObjectDescription):
|
||||
"""
|
||||
Description of a Minio ``mc`` or ``mc admin`` subcommand or subcommand argument
|
||||
"""
|
||||
|
||||
has_arguments = True
|
||||
|
||||
display_prefix = None
|
||||
|
||||
allow_nesting = True
|
||||
|
||||
option_spec = {
|
||||
'noindex': directives.flag,
|
||||
'noindexentry': directives.flag,
|
||||
'fullpath': directives.flag,
|
||||
'option': directives.flag,
|
||||
}
|
||||
|
||||
def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]:
|
||||
"""Breaks down construct signatures
|
||||
|
||||
Parses out prefix and argument list from construct definition. The
|
||||
namespace and class will be determined by the nesting of domain
|
||||
directives.
|
||||
"""
|
||||
sig = sig.strip()
|
||||
if ',' in sig:
|
||||
# For subcommands w/ aliases
|
||||
member, alias = sig.split(',', 1)
|
||||
member = member.strip()
|
||||
alias = alias.strip()
|
||||
else:
|
||||
member = sig
|
||||
alias = None
|
||||
# If construct is nested, prefix the current prefix
|
||||
prefix = self.env.ref_context.get('minio:object', None)
|
||||
|
||||
#Grab the top-level command name.
|
||||
command_name = self.env.ref_context.get('minio:command')
|
||||
name = member
|
||||
format_name = member
|
||||
format_alias = alias
|
||||
if prefix:
|
||||
fullname = ' '.join([prefix, name])
|
||||
else:
|
||||
fullname = name
|
||||
|
||||
if 'option' in self.options:
|
||||
format_name = "--" + name
|
||||
|
||||
if 'option' in self.options and alias != None:
|
||||
format_alias = "--" + alias
|
||||
|
||||
|
||||
signode['command'] = command_name
|
||||
signode['object'] = prefix
|
||||
signode['fullname'] = fullname
|
||||
|
||||
if prefix:
|
||||
signode += addnodes.desc_addname(prefix + ' ', ' ')
|
||||
elif command_name and ('fullpath' in self.options):
|
||||
signode += addnodes.desc_addname(command_name + ' ', command_name + ' ')
|
||||
elif command_name:
|
||||
signode += addnodes.desc_addname(command_name + ' ', ' ')
|
||||
|
||||
if (alias != None):
|
||||
signode += addnodes.desc_name(name + ', ' + alias, format_name + ', ' + format_alias)
|
||||
else:
|
||||
signode += addnodes.desc_name(name, format_name)
|
||||
|
||||
return fullname, prefix
|
||||
|
||||
def add_target_and_index(self, name_obj: Tuple[str, str], sig: str,
|
||||
signode: desc_signature) -> None:
|
||||
mod_name = self.env.ref_context.get('minio:command')
|
||||
fullname = (mod_name + ' ' if mod_name else '') + name_obj[0]
|
||||
node_id = make_id(self.env, self.state.document, '', fullname)
|
||||
signode['ids'].append(node_id)
|
||||
|
||||
self.state.document.note_explicit_target(signode)
|
||||
|
||||
domain = cast(MinIODomain, self.env.get_domain('minio'))
|
||||
domain.note_object(fullname, self.objtype, node_id, location=signode)
|
||||
|
||||
if 'noindexentry' not in self.options:
|
||||
indextext = self.get_index_text(mod_name, name_obj)
|
||||
if indextext:
|
||||
self.indexnode['entries'].append(('single', indextext, node_id, '', None))
|
||||
|
||||
def get_index_text(self, objectname: str, name_obj: Tuple[str, str]) -> str:
|
||||
name, obj = name_obj
|
||||
if self.objtype == 'function':
|
||||
if not obj:
|
||||
return _('%s() (built-in function)') % name
|
||||
return _('%s() (%s method)') % (name, obj)
|
||||
elif self.objtype == 'class':
|
||||
return _('%s() (class)') % name
|
||||
elif self.objtype == 'data':
|
||||
return _('%s (global variable or constant)') % name
|
||||
elif self.objtype == 'attribute':
|
||||
return _('%s (%s attribute)') % (name, obj)
|
||||
return ''
|
||||
|
||||
def before_content(self) -> None:
|
||||
"""Handle object nesting before content
|
||||
|
||||
:minio:`MinioObject` represents MinIO language constructs. For
|
||||
constructs that are nestable, this method will build up a stack of the
|
||||
nesting heirarchy so that it can be later de-nested correctly, in
|
||||
:minio:meth:`after_content`.
|
||||
|
||||
The following keys are used in ``self.env.ref_context``:
|
||||
|
||||
minio:objects
|
||||
Stores the object prefix history. With each nested element, we
|
||||
add the object prefix to this list. When we exit that object's
|
||||
nesting level, ::`after_content` is triggered and the
|
||||
prefix is removed from the end of the list.
|
||||
|
||||
minio:object
|
||||
Current object prefix. This should generally reflect the last
|
||||
element in the prefix history
|
||||
"""
|
||||
prefix = None
|
||||
if self.names:
|
||||
(obj_name, obj_name_prefix) = self.names.pop()
|
||||
prefix = obj_name_prefix.strip('.') if obj_name_prefix else None
|
||||
if self.allow_nesting:
|
||||
prefix = obj_name
|
||||
if prefix:
|
||||
self.env.ref_context['minio:object'] = prefix
|
||||
if self.allow_nesting:
|
||||
objects = self.env.ref_context.setdefault('minio:objects', [])
|
||||
objects.append(prefix)
|
||||
|
||||
def after_content(self) -> None:
|
||||
"""Handle object de-nesting after content
|
||||
|
||||
If this class is a nestable object, removing the last nested class prefix
|
||||
ends further nesting in the object.
|
||||
|
||||
If this class is not a nestable object, the list of classes should not
|
||||
be altered as we didn't affect the nesting levels in
|
||||
:py:meth:`before_content`.
|
||||
"""
|
||||
objects = self.env.ref_context.setdefault('minio:objects', [])
|
||||
if self.allow_nesting:
|
||||
try:
|
||||
objects.pop()
|
||||
except IndexError:
|
||||
pass
|
||||
self.env.ref_context['minio:object'] = (objects[-1] if len(objects) > 0
|
||||
else None)
|
||||
|
||||
|
||||
|
||||
class MinioObject(ObjectDescription):
|
||||
"""
|
||||
Description of a MinIO object.
|
||||
"""
|
||||
#: If set to ``True`` this object is callable and a `desc_parameterlist` is
|
||||
#: added
|
||||
has_arguments = False
|
||||
|
||||
#: what is displayed right before the documentation entry
|
||||
display_prefix = None # type: str
|
||||
|
||||
#: If ``allow_nesting`` is ``True``, the object prefixes will be accumulated
|
||||
#: based on directive nesting
|
||||
allow_nesting = False
|
||||
|
||||
option_spec = {
|
||||
'noindex': directives.flag,
|
||||
'noindexentry': directives.flag,
|
||||
}
|
||||
|
||||
def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str]:
|
||||
"""Breaks down construct signatures
|
||||
|
||||
Parses out prefix and argument list from construct definition. The
|
||||
namespace and class will be determined by the nesting of domain
|
||||
directives.
|
||||
"""
|
||||
sig = sig.strip()
|
||||
if '(' in sig and sig[-1:] == ')':
|
||||
member, arglist = sig.split('(', 1)
|
||||
member = member.strip()
|
||||
arglist = arglist[:-1].strip()
|
||||
elif ',' in sig:
|
||||
# Bit ugly. For subcommands w/ aliases
|
||||
member, alias = sig.split(',', 1)
|
||||
member = member.strip()
|
||||
alias = alias.strip()
|
||||
else:
|
||||
member = sig
|
||||
arglist = None
|
||||
alias = None
|
||||
# If construct is nested, prefix the current prefix
|
||||
prefix = self.env.ref_context.get('minio:object', None)
|
||||
mod_name = self.env.ref_context.get('minio:command')
|
||||
name = member
|
||||
try:
|
||||
member_prefix, member_name = member.rsplit('.', 1)
|
||||
except ValueError:
|
||||
member_name = name
|
||||
member_prefix = ''
|
||||
finally:
|
||||
name = member_name
|
||||
if prefix and member_prefix:
|
||||
prefix = '.'.join([prefix, member_prefix])
|
||||
elif prefix is None and member_prefix:
|
||||
prefix = member_prefix
|
||||
fullname = name
|
||||
if prefix and self.allow_nesting==False:
|
||||
fullname = '.'.join([prefix, name])
|
||||
elif prefix and self.allow_nesting==True:
|
||||
fullname = ' '.join([prefix, name])
|
||||
|
||||
signode['module'] = mod_name
|
||||
signode['object'] = prefix
|
||||
signode['fullname'] = fullname
|
||||
|
||||
if self.display_prefix:
|
||||
signode += addnodes.desc_annotation(self.display_prefix,
|
||||
self.display_prefix)
|
||||
|
||||
# In our current usage, we only nest for command/subcommand. So we
|
||||
# need to split some of the logic here from nesting of YAML or JSON
|
||||
# So if allow_nesting is true, we should use " " instead of "." for
|
||||
# the prefix description.
|
||||
# We also have an exit for the 'subcommand' type so that we don't end
|
||||
# up building long name strings for subcommands
|
||||
# Finally for subcommands w/ aliases, need to append the alias name
|
||||
|
||||
|
||||
if prefix and self.allow_nesting == False:
|
||||
signode += addnodes.desc_addname(prefix + '.', prefix + '.')
|
||||
elif prefix and self.allow_nesting == True and self.objtype != 'subcommand':
|
||||
signode += addnodes.desc_addname(prefix + ' ', prefix + ' ')
|
||||
signode += addnodes.desc_addname(alias + ' ', alias + ' ')
|
||||
elif mod_name:
|
||||
signode += addnodes.desc_addname(mod_name + '.', mod_name + '.')
|
||||
if (alias != None):
|
||||
signode += addnodes.desc_name(name + ", " + alias, name + ", " + alias)
|
||||
else:
|
||||
signode += addnodes.desc_name(name, name)
|
||||
if self.has_arguments:
|
||||
if not arglist:
|
||||
signode += addnodes.desc_parameterlist()
|
||||
else:
|
||||
_pseudo_parse_arglist(signode, arglist)
|
||||
return fullname, prefix
|
||||
|
||||
def add_target_and_index(self, name_obj: Tuple[str, str], sig: str,
|
||||
signode: desc_signature) -> None:
|
||||
mod_name = self.env.ref_context.get('minio:module')
|
||||
fullname = (mod_name + '.' if mod_name else '') + name_obj[0]
|
||||
node_id = make_id(self.env, self.state.document, '', fullname)
|
||||
signode['ids'].append(node_id)
|
||||
|
||||
# Assign old styled node_id not to break old hyperlinks (if possible)
|
||||
# Note: Will be removed in Sphinx-5.0 (RemovedInSphinx50Warning)
|
||||
old_node_id = self.make_old_id(fullname)
|
||||
if old_node_id not in self.state.document.ids and old_node_id not in signode['ids']:
|
||||
signode['ids'].append(old_node_id)
|
||||
|
||||
self.state.document.note_explicit_target(signode)
|
||||
|
||||
domain = cast(MinIODomain, self.env.get_domain('minio'))
|
||||
domain.note_object(fullname, self.objtype, node_id, location=signode)
|
||||
|
||||
if 'noindexentry' not in self.options:
|
||||
indextext = self.get_index_text(mod_name, name_obj)
|
||||
if indextext:
|
||||
self.indexnode['entries'].append(('single', indextext, node_id, '', None))
|
||||
|
||||
def get_index_text(self, objectname: str, name_obj: Tuple[str, str]) -> str:
|
||||
name, obj = name_obj
|
||||
if self.objtype == 'function':
|
||||
if not obj:
|
||||
return _('%s() (built-in function)') % name
|
||||
return _('%s() (%s method)') % (name, obj)
|
||||
elif self.objtype == 'class':
|
||||
return _('%s() (class)') % name
|
||||
elif self.objtype == 'data':
|
||||
return _('%s (global variable or constant)') % name
|
||||
elif self.objtype == 'attribute':
|
||||
return _('%s (%s attribute)') % (name, obj)
|
||||
return ''
|
||||
|
||||
def before_content(self) -> None:
|
||||
"""Handle object nesting before content
|
||||
|
||||
:py:class:`MinioObject` represents MinIO language constructs. For
|
||||
constructs that are nestable, this method will build up a stack of the
|
||||
nesting heirarchy so that it can be later de-nested correctly, in
|
||||
:py:meth:`after_content`.
|
||||
|
||||
For constructs that aren't nestable, the stack is bypassed, and instead
|
||||
only the most recent object is tracked. This object prefix name will be
|
||||
removed with :py:meth:`after_content`.
|
||||
|
||||
The following keys are used in ``self.env.ref_context``:
|
||||
|
||||
minio:objects
|
||||
Stores the object prefix history. With each nested element, we
|
||||
add the object prefix to this list. When we exit that object's
|
||||
nesting level, :py:meth:`after_content` is triggered and the
|
||||
prefix is removed from the end of the list.
|
||||
|
||||
minio:object
|
||||
Current object prefix. This should generally reflect the last
|
||||
element in the prefix history
|
||||
"""
|
||||
prefix = None
|
||||
if self.names:
|
||||
(obj_name, obj_name_prefix) = self.names.pop()
|
||||
prefix = obj_name_prefix.strip('.') if obj_name_prefix else None
|
||||
if self.allow_nesting:
|
||||
prefix = obj_name
|
||||
if prefix:
|
||||
self.env.ref_context['minio:object'] = prefix
|
||||
if self.allow_nesting:
|
||||
objects = self.env.ref_context.setdefault('minio:objects', [])
|
||||
objects.append(prefix)
|
||||
|
||||
def after_content(self) -> None:
|
||||
"""Handle object de-nesting after content
|
||||
|
||||
If this class is a nestable object, removing the last nested class prefix
|
||||
ends further nesting in the object.
|
||||
|
||||
If this class is not a nestable object, the list of classes should not
|
||||
be altered as we didn't affect the nesting levels in
|
||||
:py:meth:`before_content`.
|
||||
"""
|
||||
objects = self.env.ref_context.setdefault('minio:objects', [])
|
||||
if self.allow_nesting:
|
||||
try:
|
||||
objects.pop()
|
||||
except IndexError:
|
||||
pass
|
||||
self.env.ref_context['minio:object'] = (objects[-1] if len(objects) > 0
|
||||
else None)
|
||||
|
||||
def make_old_id(self, fullname: str) -> str:
|
||||
"""Generate old styled node_id for Minio objects.
|
||||
|
||||
.. note:: Old Styled node_id was used until Sphinx-3.0.
|
||||
This will be removed in Sphinx-5.0.
|
||||
"""
|
||||
return fullname.replace('$', '_S_')
|
||||
|
||||
class MinioCallable(MinioObject):
|
||||
"""Description of a MinIO function, method or constructor."""
|
||||
has_arguments = True
|
||||
|
||||
doc_field_types = [
|
||||
TypedField('arguments', label=_('Arguments'),
|
||||
names=('argument', 'arg', 'parameter', 'param'),
|
||||
typerolename='func', typenames=('paramtype', 'type')),
|
||||
GroupedField('errors', label=_('Throws'), rolename='err',
|
||||
names=('throws', ),
|
||||
can_collapse=True),
|
||||
Field('returnvalue', label=_('Returns'), has_arg=False,
|
||||
names=('returns', 'return')),
|
||||
Field('returntype', label=_('Return type'), has_arg=False,
|
||||
names=('rtype',)),
|
||||
]
|
||||
|
||||
class MinioConstructor(MinioCallable):
|
||||
"""Like a callable but with a different prefix."""
|
||||
display_prefix = 'class '
|
||||
allow_nesting = True
|
||||
|
||||
class MinioCommand(MinioObject):
|
||||
allow_nesting = True
|
||||
|
||||
class MinioCMDOptionXRefRole(XRefRole):
|
||||
def process_link(self, env: BuildEnvironment, refnode: Element,
|
||||
has_explicit_title: bool, title: str, target: str) -> Tuple[str, str]:
|
||||
# basically what sphinx.domains.python.PyXRefRole does
|
||||
refnode['minio:object'] = env.ref_context.get('minio:object')
|
||||
refnode['minio:module'] = env.ref_context.get('minio:module')
|
||||
refnode['minio:command'] = env.ref_context.get('minio:commannd')
|
||||
if not has_explicit_title:
|
||||
title = title.lstrip('.')
|
||||
target = target.lstrip('~')
|
||||
if title[0:1] == '~':
|
||||
title = title[1:]
|
||||
# Handle stripping lead path from commands.
|
||||
space = title.rfind(' ')
|
||||
if space != -1:
|
||||
title = title[space + 1:]
|
||||
title = "--" + title
|
||||
else:
|
||||
#full command, so need to insert the `--`
|
||||
title = title[:title.rfind(" ")] + " --" + title[title.rfind(" ")+1:]
|
||||
if target[0:1] == '.':
|
||||
target = target[1:]
|
||||
refnode['refspecific'] = True
|
||||
return title, target
|
||||
|
||||
class MinioXRefRole(XRefRole):
|
||||
def process_link(self, env: BuildEnvironment, refnode: Element,
|
||||
has_explicit_title: bool, title: str, target: str) -> Tuple[str, str]:
|
||||
# basically what sphinx.domains.python.PyXRefRole does
|
||||
refnode['minio:object'] = env.ref_context.get('minio:object')
|
||||
refnode['minio:module'] = env.ref_context.get('minio:module')
|
||||
refnode['minio:command'] = env.ref_context.get('minio:commannd')
|
||||
if not has_explicit_title:
|
||||
title = title.lstrip('.')
|
||||
target = target.lstrip('~')
|
||||
if title[0:1] == '~':
|
||||
title = title[1:]
|
||||
dot = title.rfind('.')
|
||||
if dot != -1:
|
||||
title = title[dot + 1:]
|
||||
|
||||
# Handle stripping lead path from commands.
|
||||
space = title.rfind(' ')
|
||||
if space != -1:
|
||||
title = title[space + 1:]
|
||||
if target[0:1] == '.':
|
||||
target = target[1:]
|
||||
refnode['refspecific'] = True
|
||||
return title, target
|
||||
|
||||
class MinIODomain(Domain):
|
||||
"""MinIO language domain."""
|
||||
name = 'minio'
|
||||
label = 'MinIO'
|
||||
# if you add a new object type make sure to edit MinioObject.get_index_string
|
||||
object_types = {
|
||||
'data': ObjType(_('data'), 'data'),
|
||||
'kubeconf': ObjType(_('kubeconf'), 'kubeconf'),
|
||||
'userpolicy': ObjType(_('userpolicy'), 'userpolicy'),
|
||||
'command': ObjType(_('command'), 'command'),
|
||||
'subcommand': ObjType(_('subcommand'), 'subcommand'),
|
||||
'flag': ObjType(_('flag'), 'flag'),
|
||||
'mc': ObjType(_('mc'), 'mc'),
|
||||
'mc-cmd': ObjType(_('mc-cmd'), 'mc-cmd'),
|
||||
'mc-cmd-option': ObjType(_('mc-cmd-option'), 'mc-cmd-option'),
|
||||
'policy-action': ObjType(_('policy-action'), 'policy-action'),
|
||||
}
|
||||
directives = {
|
||||
'data': MinioObject,
|
||||
'kubeconf': MinioObject,
|
||||
'userpolicy': MinioObject,
|
||||
'command': MinioCommand,
|
||||
'subcommand': MinioCommand,
|
||||
'flag': MinioObject,
|
||||
'mc': MinioMCCommand,
|
||||
'mc-cmd': MinioMCObject,
|
||||
'policy-action': MinioObject
|
||||
}
|
||||
roles = {
|
||||
'data': MinioXRefRole(),
|
||||
'kubeconf': MinioXRefRole(),
|
||||
'userpolicy': MinioXRefRole(),
|
||||
'command': MinioXRefRole(),
|
||||
'subcommand': MinioXRefRole(),
|
||||
'flag': MinioXRefRole(),
|
||||
'mc': MinioXRefRole(),
|
||||
'mc-cmd': MinioXRefRole(),
|
||||
'mc-cmd-option': MinioCMDOptionXRefRole(),
|
||||
'policy-action': MinioXRefRole(),
|
||||
|
||||
}
|
||||
initial_data = {
|
||||
'objects': {}, # fullname -> docname, node_id, objtype
|
||||
'modules': {}, # modname -> docname, node_id
|
||||
'commands': {},
|
||||
} # type: Dict[str, Dict[str, Tuple[str, str]]]
|
||||
|
||||
@property
|
||||
def objects(self) -> Dict[str, Tuple[str, str, str]]:
|
||||
return self.data.setdefault('objects', {}) # fullname -> docname, node_id, objtype
|
||||
|
||||
def note_object(self, fullname: str, objtype: str, node_id: str,
|
||||
location: Any = None) -> None:
|
||||
if fullname in self.objects:
|
||||
docname = self.objects[fullname][0]
|
||||
logger.warning(__('duplicate %s description of %s, other %s in %s'),
|
||||
objtype, fullname, objtype, docname, location=location)
|
||||
self.objects[fullname] = (self.env.docname, node_id, objtype)
|
||||
|
||||
@property
|
||||
def modules(self) -> Dict[str, Tuple[str, str]]:
|
||||
return self.data.setdefault('modules', {}) # modname -> docname, node_id
|
||||
|
||||
def note_module(self, modname: str, node_id: str) -> None:
|
||||
self.modules[modname] = (self.env.docname, node_id)
|
||||
|
||||
@property
|
||||
def command(self) -> Dict[str, Tuple[str, str]]:
|
||||
return self.data.setdefault('command', {}) # command -> commandname, node_id
|
||||
|
||||
def note_command(self, commandname: str, node_id: str) -> None:
|
||||
self.command[commandname] = (self.env.docname, node_id)
|
||||
|
||||
def clear_doc(self, docname: str) -> None:
|
||||
for fullname, (pkg_docname, node_id, _l) in list(self.objects.items()):
|
||||
if pkg_docname == docname:
|
||||
del self.objects[fullname]
|
||||
for modname, (pkg_docname, node_id) in list(self.modules.items()):
|
||||
if pkg_docname == docname:
|
||||
del self.modules[modname]
|
||||
|
||||
def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None:
|
||||
# XXX check duplicates
|
||||
for fullname, (fn, node_id, objtype) in otherdata['objects'].items():
|
||||
if fn in docnames:
|
||||
self.objects[fullname] = (fn, node_id, objtype)
|
||||
for mod_name, (pkg_docname, node_id) in otherdata['modules'].items():
|
||||
if pkg_docname in docnames:
|
||||
self.modules[mod_name] = (pkg_docname, node_id)
|
||||
|
||||
def find_obj(self, env: BuildEnvironment, mod_name: str, prefix: str, name: str,
|
||||
typ: str, searchorder: int = 0) -> Tuple[str, Tuple[str, str, str]]:
|
||||
if name[-2:] == '()':
|
||||
name = name[:-2]
|
||||
|
||||
searches = []
|
||||
if mod_name and prefix:
|
||||
searches.append('.'.join([mod_name, prefix, name]))
|
||||
if mod_name:
|
||||
searches.append('.'.join([mod_name, name]))
|
||||
if prefix:
|
||||
searches.append('.'.join([prefix, name]))
|
||||
searches.append(name)
|
||||
|
||||
if searchorder == 0:
|
||||
searches.reverse()
|
||||
|
||||
newname = None
|
||||
for search_name in searches:
|
||||
if search_name in self.objects:
|
||||
newname = search_name
|
||||
|
||||
return newname, self.objects.get(newname)
|
||||
|
||||
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
|
||||
typ: str, target: str, node: pending_xref, contnode: Element
|
||||
) -> Element:
|
||||
mod_name = node.get('minio:module')
|
||||
prefix = node.get('minio:object')
|
||||
searchorder = 1 if node.hasattr('refspecific') else 0
|
||||
name, obj = self.find_obj(env, mod_name, prefix, target, typ, searchorder)
|
||||
if not obj:
|
||||
return None
|
||||
return make_refnode(builder, fromdocname, obj[0], obj[1], contnode, name)
|
||||
|
||||
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
|
||||
target: str, node: pending_xref, contnode: Element
|
||||
) -> List[Tuple[str, Element]]:
|
||||
mod_name = node.get('minio:module')
|
||||
prefix = node.get('minio:object')
|
||||
name, obj = self.find_obj(env, mod_name, prefix, target, None, 1)
|
||||
if not obj:
|
||||
return []
|
||||
return [('minio:' + self.role_for_objtype(obj[2]),
|
||||
make_refnode(builder, fromdocname, obj[0], obj[1], contnode, name))]
|
||||
|
||||
def get_objects(self) -> Iterator[Tuple[str, str, str, str, str, int]]:
|
||||
for refname, (docname, node_id, typ) in list(self.objects.items()):
|
||||
yield refname, refname, typ, docname, node_id, 1
|
||||
|
||||
def get_full_qualified_name(self, node: Element) -> str:
|
||||
modname = node.get('minio:module')
|
||||
prefix = node.get('minio:object')
|
||||
target = node.get('reftarget')
|
||||
if target is None:
|
||||
return None
|
||||
else:
|
||||
return '.'.join(filter(None, [modname, prefix, target]))
|
||||
|
||||
|
||||
def setup(app: Sphinx) -> Dict[str, Any]:
|
||||
app.add_domain(MinIODomain)
|
||||
|
||||
return {
|
||||
'version': 'builtin',
|
||||
'env_version': 2,
|
||||
'parallel_read_safe': True,
|
||||
'parallel_write_safe': True,
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user