awscli 1.42.33__py3-none-any.whl → 1.44.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of awscli might be problematic. Click here for more details.
- awscli/__init__.py +1 -1
- awscli/alias.py +3 -3
- awscli/argprocess.py +2 -1
- awscli/arguments.py +1 -1
- awscli/bcdoc/docevents.py +3 -0
- awscli/clidocs.py +19 -2
- awscli/clidriver.py +55 -9
- awscli/customizations/argrename.py +1 -0
- awscli/customizations/cliinputjson.py +4 -0
- awscli/customizations/cloudformation/deploy.py +19 -3
- awscli/customizations/cloudtrail/validation.py +22 -2
- awscli/customizations/commands.py +2 -1
- awscli/customizations/eks/update_kubeconfig.py +12 -1
- awscli/customizations/emr/argumentschema.py +355 -344
- awscli/customizations/emr/createcluster.py +12 -0
- awscli/customizations/emr/emrutils.py +83 -50
- awscli/customizations/emr/helptext.py +10 -0
- awscli/customizations/emr/steputils.py +92 -52
- awscli/customizations/globalargs.py +169 -0
- awscli/customizations/paginate.py +66 -1
- awscli/customizations/s3/filegenerator.py +4 -1
- awscli/customizations/s3/fileinfo.py +4 -1
- awscli/customizations/s3/fileinfobuilder.py +6 -0
- awscli/customizations/s3/s3handler.py +9 -0
- awscli/customizations/s3/subcommands.py +147 -6
- awscli/customizations/s3/syncstrategy/base.py +9 -0
- awscli/customizations/s3/syncstrategy/caseconflict.py +92 -0
- awscli/customizations/s3/utils.py +14 -0
- awscli/customizations/scalarparse.py +48 -9
- awscli/data/cli.json +5 -0
- awscli/examples/cloudformation/create-generated-template.rst +50 -0
- awscli/examples/cloudformation/create-stack-refactor.rst +16 -0
- awscli/examples/cloudformation/delete-generated-template.rst +10 -0
- awscli/examples/cloudformation/describe-generated-template.rst +62 -0
- awscli/examples/cloudformation/describe-resource-scan.rst +38 -0
- awscli/examples/cloudformation/describe-stack-refactor.rst +20 -0
- awscli/examples/cloudformation/execute-stack-refactor.rst +10 -0
- awscli/examples/cloudformation/list-generated-templates.rst +41 -0
- awscli/examples/cloudformation/list-resource-scan-related-resources.rst +47 -0
- awscli/examples/cloudformation/list-resource-scan-resources.rst +30 -0
- awscli/examples/cloudformation/list-stack-refactor-actions.rst +71 -0
- awscli/examples/cloudformation/start-resource-scan.rst +14 -0
- awscli/examples/global_options.rst +4 -0
- awscli/examples/global_synopsis.rst +1 -0
- awscli/examples/ivs-realtime/get-composition.rst +7 -4
- awscli/examples/ivs-realtime/start-composition.rst +88 -3
- awscli/examples/lambda/create-function.rst +4 -4
- awscli/examples/lambda/get-function.rst +3 -3
- awscli/examples/lambda/list-functions.rst +6 -6
- awscli/examples/medical-imaging/create-datastore.rst +19 -2
- awscli/examples/medical-imaging/get-datastore.rst +24 -1
- awscli/examples/securityhub/describe-hub.rst +6 -4
- awscli/examples/servicediscovery/create-service.rst +50 -10
- awscli/examples/servicediscovery/delete-namespace.rst +18 -4
- awscli/examples/servicediscovery/delete-service-attributes.rst +15 -3
- awscli/examples/servicediscovery/delete-service.rst +13 -3
- awscli/examples/servicediscovery/deregister-instance.rst +18 -2
- awscli/examples/servicediscovery/discover-instances-revision.rst +18 -1
- awscli/examples/servicediscovery/discover-instances.rst +32 -2
- awscli/examples/servicediscovery/get-instance.rst +30 -4
- awscli/examples/servicediscovery/get-instances-health-status.rst +19 -1
- awscli/examples/servicediscovery/get-namespace.rst +40 -9
- awscli/examples/servicediscovery/get-operation.rst +32 -6
- awscli/examples/servicediscovery/get-service-attributes.rst +25 -3
- awscli/examples/servicediscovery/get-service.rst +35 -7
- awscli/examples/servicediscovery/list-instances.rst +38 -3
- awscli/examples/servicediscovery/list-namespaces.rst +45 -22
- awscli/examples/servicediscovery/list-services.rst +30 -2
- awscli/examples/servicediscovery/register-instance.rst +18 -2
- awscli/examples/servicediscovery/update-http-namespace.rst +22 -5
- awscli/examples/servicediscovery/update-instance-custom-health-status.rst +14 -1
- awscli/examples/servicediscovery/update-private-dns-namespace.rst +22 -5
- awscli/examples/servicediscovery/update-public-dns-namespace.rst +22 -5
- awscli/examples/servicediscovery/update-service-attributes.rst +14 -2
- awscli/examples/servicediscovery/update-service.rst +20 -4
- awscli/paramfile.py +21 -4
- awscli/testutils.py +17 -0
- awscli/topics/config-vars.rst +1 -1
- awscli/topics/s3-case-insensitivity.rst +105 -0
- awscli/topics/topic-tags.json +16 -0
- awscli/utils.py +19 -2
- {awscli-1.42.33.dist-info → awscli-1.44.6.dist-info}/METADATA +5 -3
- {awscli-1.42.33.dist-info → awscli-1.44.6.dist-info}/RECORD +91 -132
- awscli/examples/qldb/cancel-journal-kinesis-stream.rst +0 -15
- awscli/examples/qldb/create-ledger.rst +0 -43
- awscli/examples/qldb/delete-ledger.rst +0 -10
- awscli/examples/qldb/describe-journal-kinesis-stream.rst +0 -29
- awscli/examples/qldb/describe-journal-s3-export.rst +0 -30
- awscli/examples/qldb/describe-ledger.rst +0 -23
- awscli/examples/qldb/export-journal-to-s3.rst +0 -28
- awscli/examples/qldb/get-block.rst +0 -55
- awscli/examples/qldb/get-digest.rst +0 -17
- awscli/examples/qldb/get-revision.rst +0 -57
- awscli/examples/qldb/list-journal-kinesis-streams-for-ledger.rst +0 -30
- awscli/examples/qldb/list-journal-s3-exports-for-ledger.rst +0 -31
- awscli/examples/qldb/list-journal-s3-exports.rst +0 -46
- awscli/examples/qldb/list-ledgers.rst +0 -24
- awscli/examples/qldb/list-tags-for-resource.rst +0 -17
- awscli/examples/qldb/stream-journal-to-kinesis.rst +0 -46
- awscli/examples/qldb/tag-resource.rst +0 -11
- awscli/examples/qldb/untag-resource.rst +0 -11
- awscli/examples/qldb/update-ledger-permissions-mode.rst +0 -34
- awscli/examples/qldb/update-ledger.rst +0 -63
- awscli/examples/robomaker/batch-describe-simulation-job.rst +0 -150
- awscli/examples/robomaker/cancel-simulation-job.rst +0 -6
- awscli/examples/robomaker/create-deployment-job.rst +0 -37
- awscli/examples/robomaker/create-fleet.rst +0 -18
- awscli/examples/robomaker/create-robot-application-version.rst +0 -31
- awscli/examples/robomaker/create-robot-application.rst +0 -29
- awscli/examples/robomaker/create-robot.rst +0 -20
- awscli/examples/robomaker/create-simulation-application-version.rst +0 -39
- awscli/examples/robomaker/create-simulation-application.rst +0 -38
- awscli/examples/robomaker/create-simulation-job.rst +0 -43
- awscli/examples/robomaker/delete-fleet.rst +0 -7
- awscli/examples/robomaker/delete-robot-application.rst +0 -7
- awscli/examples/robomaker/delete-robot.rst +0 -7
- awscli/examples/robomaker/delete-simulation-application.rst +0 -7
- awscli/examples/robomaker/deregister-robot.rst +0 -14
- awscli/examples/robomaker/describe-deployment-job.rst +0 -38
- awscli/examples/robomaker/describe-fleet.rst +0 -28
- awscli/examples/robomaker/describe-robot-application.rst +0 -29
- awscli/examples/robomaker/describe-robot.rst +0 -21
- awscli/examples/robomaker/describe-simulation-application.rst +0 -37
- awscli/examples/robomaker/describe-simulation-job.rst +0 -45
- awscli/examples/robomaker/list-deployment-jobs.rst +0 -57
- awscli/examples/robomaker/list-fleets.rst +0 -22
- awscli/examples/robomaker/list-robot-applications.rst +0 -32
- awscli/examples/robomaker/list-robots.rst +0 -45
- awscli/examples/robomaker/list-simulation-applications.rst +0 -50
- awscli/examples/robomaker/list-simulation-jobs.rst +0 -80
- awscli/examples/robomaker/list-tags-for-resource.rst +0 -16
- awscli/examples/robomaker/register-robot.rst +0 -14
- awscli/examples/robomaker/restart-simulation-job.rst +0 -7
- awscli/examples/robomaker/sync-deployment-job.rst +0 -30
- awscli/examples/robomaker/tag-resource.rst +0 -7
- awscli/examples/robomaker/untag-resource.rst +0 -7
- awscli/examples/robomaker/update-robot-application.rst +0 -28
- awscli/examples/robomaker/update-simulation-application.rst +0 -36
- {awscli-1.42.33.data → awscli-1.44.6.data}/scripts/aws +0 -0
- {awscli-1.42.33.data → awscli-1.44.6.data}/scripts/aws.cmd +0 -0
- {awscli-1.42.33.data → awscli-1.44.6.data}/scripts/aws_bash_completer +0 -0
- {awscli-1.42.33.data → awscli-1.44.6.data}/scripts/aws_completer +0 -0
- {awscli-1.42.33.data → awscli-1.44.6.data}/scripts/aws_zsh_completer.sh +0 -0
- {awscli-1.42.33.dist-info → awscli-1.44.6.dist-info}/LICENSE.txt +0 -0
- {awscli-1.42.33.dist-info → awscli-1.44.6.dist-info}/WHEEL +0 -0
- {awscli-1.42.33.dist-info → awscli-1.44.6.dist-info}/top_level.txt +0 -0
|
@@ -1,18 +1,35 @@
|
|
|
1
|
-
**To update a public DNS namespace**
|
|
1
|
+
**Example 1: To update a public DNS namespace using ID**
|
|
2
2
|
|
|
3
|
-
The following ``update-public-dns-namespace`` example updates the description of a public DNS namespace. ::
|
|
3
|
+
The following ``update-public-dns-namespace`` example updates the description of a public DNS namespace using its ID. ::
|
|
4
4
|
|
|
5
5
|
aws servicediscovery update-public-dns-namespace \
|
|
6
|
-
--id ns-
|
|
7
|
-
--updater-request-id
|
|
6
|
+
--id ns-abcd1234xmpl5678 \
|
|
7
|
+
--updater-request-id abcd1234-5678-90ab-cdef-xmpl12345678 \
|
|
8
8
|
--namespace Description="The updated namespace description."
|
|
9
9
|
|
|
10
10
|
Output::
|
|
11
11
|
|
|
12
12
|
{
|
|
13
|
-
"OperationId": "
|
|
13
|
+
"OperationId": "abcd1234-5678-90ab-cdef-xmpl12345678"
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
To confirm that the operation succeeded, you can run ``get-operation``.
|
|
17
17
|
|
|
18
18
|
For more information, see `AWS Cloud Map namespaces <https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-namespaces.html>`__ in the *AWS Cloud Map Developer Guide*.
|
|
19
|
+
|
|
20
|
+
**Example 2: To update a public DNS namespace using ARN**
|
|
21
|
+
|
|
22
|
+
The following ``update-public-dns-namespace`` example updates a public DNS namespace using its ARN. ::
|
|
23
|
+
|
|
24
|
+
aws servicediscovery update-public-dns-namespace \
|
|
25
|
+
--id arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-abcd1234xmpl5678 \
|
|
26
|
+
--updater-request-id abcd1234-5678-90ab-cdef-xmpl12345678 \
|
|
27
|
+
--namespace Description="The updated namespace description."
|
|
28
|
+
|
|
29
|
+
Output::
|
|
30
|
+
|
|
31
|
+
{
|
|
32
|
+
"OperationId": "abcd1234-5678-90ab-cdef-xmpl12345678"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
For more information, see `AWS Cloud Map namespaces <https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-namespaces.html>`__ in the *AWS Cloud Map Developer Guide*.
|
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
**Example 1: To update a service to add an attribute**
|
|
2
2
|
|
|
3
3
|
The following ``update-service-attributes`` example updates the specified service to add a service attribute with a key ``Port`` and a value ``80``. ::
|
|
4
4
|
|
|
5
5
|
aws servicediscovery update-service-attributes \
|
|
6
|
-
--service-id srv-
|
|
6
|
+
--service-id srv-abcd1234xmpl5678 \
|
|
7
7
|
--attributes Port=80
|
|
8
8
|
|
|
9
9
|
This command produces no output.
|
|
10
10
|
|
|
11
11
|
For more information, see `AWS Cloud Map services <https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html>`__ in the *AWS Cloud Map Developer Guide*.
|
|
12
|
+
|
|
13
|
+
**Example 2: To update a service attributes using ARN**
|
|
14
|
+
|
|
15
|
+
The following ``update-service-attributes`` example updates a service using its ARN to add a service attribute. Specifying the ARN is necessary for adding attributes to services created in namespaces shared with your account. ::
|
|
16
|
+
|
|
17
|
+
aws servicediscovery update-service-attributes \
|
|
18
|
+
--service-id arn:aws:servicediscovery:us-west-2:123456789012:service/srv-abcd1234xmpl5678 \
|
|
19
|
+
--attributes Port=80
|
|
20
|
+
|
|
21
|
+
This command produces no output.
|
|
22
|
+
|
|
23
|
+
For more information, see `AWS Cloud Map services <https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html>`__ and `Shared AWS Cloud Map namespaces <https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html>`__ in the *AWS Cloud Map Developer Guide*.
|
|
@@ -1,17 +1,33 @@
|
|
|
1
|
-
**To update a service**
|
|
1
|
+
**Example 1: To update a service**
|
|
2
2
|
|
|
3
3
|
The following ``update-service`` example updates a service to update the ``DnsConfig`` and ``HealthCheckConfig`` settings. ::
|
|
4
4
|
|
|
5
5
|
aws servicediscovery update-service \
|
|
6
|
-
--id srv-
|
|
7
|
-
--service "DnsConfig={DnsRecords=[{
|
|
6
|
+
--id srv-abcd1234xmpl5678 \
|
|
7
|
+
--service "DnsConfig={DnsRecords=[{Type=A,TTL=60}]},HealthCheckConfig={Type=HTTP,ResourcePath=/,FailureThreshold=2}"
|
|
8
8
|
|
|
9
9
|
Output::
|
|
10
10
|
|
|
11
11
|
{
|
|
12
|
-
"OperationId": "
|
|
12
|
+
"OperationId": "abcd1234-5678-90ab-cdef-xmpl12345678"
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
To confirm that the operation succeeded, you can run ``get-operation``.
|
|
16
16
|
|
|
17
17
|
For more information about updating a service, see `Updating an AWS Cloud Map service <https://docs.aws.amazon.com/cloud-map/latest/dg/editing-services.html>`__ in the *AWS Cloud Map Developer Guide*.
|
|
18
|
+
|
|
19
|
+
**Example 2: To update a service using ARN**
|
|
20
|
+
|
|
21
|
+
The following ``update-service`` example updates a service using its ARN. Specifying an ARN is necessary for services that are created in namespaces shared with your account. ::
|
|
22
|
+
|
|
23
|
+
aws servicediscovery update-service \
|
|
24
|
+
--id arn:aws:servicediscovery:us-west-2:123456789012:service/srv-abcd1234xmpl5678 \
|
|
25
|
+
--service "DnsConfig={DnsRecords=[{Type=A,TTL=60}]},HealthCheckConfig={Type=HTTP,ResourcePath=/,FailureThreshold=2}"
|
|
26
|
+
|
|
27
|
+
Output::
|
|
28
|
+
|
|
29
|
+
{
|
|
30
|
+
"OperationId": "abcd1234-5678-90ab-cdef-xmpl12345678"
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
For more information about updating a service, see `Updating an AWS Cloud Map service <https://docs.aws.amazon.com/cloud-map/latest/dg/editing-services.html>`__ and `Shared AWS Cloud Map namespaces <https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html>`__ in the *AWS Cloud Map Developer Guide*.
|
awscli/paramfile.py
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
|
+
import sys
|
|
14
|
+
|
|
13
15
|
import copy
|
|
14
16
|
import logging
|
|
15
17
|
import os
|
|
@@ -20,6 +22,7 @@ from botocore.httpsession import URLLib3Session
|
|
|
20
22
|
|
|
21
23
|
from awscli import argprocess
|
|
22
24
|
from awscli.compat import compat_open
|
|
25
|
+
from awscli.utils import resolve_v2_debug_mode
|
|
23
26
|
|
|
24
27
|
logger = logging.getLogger(__name__)
|
|
25
28
|
|
|
@@ -166,7 +169,7 @@ class URIArgumentHandler:
|
|
|
166
169
|
prefixes.update(REMOTE_PREFIX_MAP)
|
|
167
170
|
self._prefixes = prefixes
|
|
168
171
|
|
|
169
|
-
def __call__(self, event_name, param, value, **kwargs):
|
|
172
|
+
def __call__(self, event_name, param, value, parsed_globals=None, **kwargs):
|
|
170
173
|
"""Handler that supports param values from URIs."""
|
|
171
174
|
cli_argument = param
|
|
172
175
|
qualified_param_name = '.'.join(event_name.split('.')[1:])
|
|
@@ -175,13 +178,27 @@ class URIArgumentHandler:
|
|
|
175
178
|
):
|
|
176
179
|
return
|
|
177
180
|
else:
|
|
178
|
-
return self._check_for_uri_param(cli_argument, value)
|
|
181
|
+
return self._check_for_uri_param(cli_argument, value, parsed_globals)
|
|
179
182
|
|
|
180
|
-
def _check_for_uri_param(self, param, value):
|
|
183
|
+
def _check_for_uri_param(self, param, value, parsed_globals):
|
|
181
184
|
if isinstance(value, list) and len(value) == 1:
|
|
182
185
|
value = value[0]
|
|
183
186
|
try:
|
|
184
|
-
|
|
187
|
+
param_file = get_paramfile(value, self._prefixes)
|
|
188
|
+
if param_file is not None and resolve_v2_debug_mode(parsed_globals):
|
|
189
|
+
print(
|
|
190
|
+
'\nAWS CLI v2 UPGRADE WARNING: For input parameters that '
|
|
191
|
+
'have a prefix of `http://` or `https://`, AWS CLI v2 '
|
|
192
|
+
'will not automatically request the content of the URL '
|
|
193
|
+
'for the parameter, and the `cli_follow_urlparam` option '
|
|
194
|
+
'has been removed. For guidance on how to adapt this '
|
|
195
|
+
'command to AWS CLI v2 usage, see '
|
|
196
|
+
'https://docs.aws.amazon.com/cli/latest/userguide/'
|
|
197
|
+
'cliv2-migration-changes.html'
|
|
198
|
+
'#cliv2-migration-paramfile.\n',
|
|
199
|
+
file=sys.stderr,
|
|
200
|
+
)
|
|
201
|
+
return param_file
|
|
185
202
|
except ResourceLoadingError as e:
|
|
186
203
|
raise argprocess.ParamError(param.cli_name, str(e))
|
|
187
204
|
|
awscli/testutils.py
CHANGED
|
@@ -27,7 +27,9 @@ import json
|
|
|
27
27
|
import logging
|
|
28
28
|
import os
|
|
29
29
|
import platform
|
|
30
|
+
import random
|
|
30
31
|
import shutil
|
|
32
|
+
import string
|
|
31
33
|
import sys
|
|
32
34
|
import tempfile
|
|
33
35
|
import time
|
|
@@ -36,6 +38,7 @@ import uuid
|
|
|
36
38
|
from pprint import pformat
|
|
37
39
|
from subprocess import PIPE, Popen
|
|
38
40
|
from unittest import mock
|
|
41
|
+
from pathlib import Path
|
|
39
42
|
|
|
40
43
|
import botocore.loaders
|
|
41
44
|
from botocore.awsrequest import AWSResponse
|
|
@@ -49,6 +52,11 @@ _LOADER = botocore.loaders.Loader()
|
|
|
49
52
|
INTEG_LOG = logging.getLogger('awscli.tests.integration')
|
|
50
53
|
AWS_CMD = None
|
|
51
54
|
|
|
55
|
+
with tempfile.TemporaryDirectory() as tmpdir:
|
|
56
|
+
with open(Path(tmpdir) / 'aws-cli-tmp-file', 'w') as f:
|
|
57
|
+
pass
|
|
58
|
+
CASE_INSENSITIVE = (Path(tmpdir) / 'AWS-CLI-TMP-FILE').exists()
|
|
59
|
+
|
|
52
60
|
|
|
53
61
|
def skip_if_windows(reason):
|
|
54
62
|
"""Decorator to skip tests that should not be run on windows.
|
|
@@ -69,6 +77,15 @@ def skip_if_windows(reason):
|
|
|
69
77
|
return decorator
|
|
70
78
|
|
|
71
79
|
|
|
80
|
+
def skip_if_case_sensitive():
|
|
81
|
+
def decorator(func):
|
|
82
|
+
return unittest.skipIf(
|
|
83
|
+
not CASE_INSENSITIVE,
|
|
84
|
+
"This test requires a case-insensitive filesystem."
|
|
85
|
+
)(func)
|
|
86
|
+
return decorator
|
|
87
|
+
|
|
88
|
+
|
|
72
89
|
def create_clidriver():
|
|
73
90
|
driver = awscli.clidriver.create_clidriver()
|
|
74
91
|
session = driver.session
|
awscli/topics/config-vars.rst
CHANGED
|
@@ -98,7 +98,7 @@ The valid values of the ``output`` configuration variable are:
|
|
|
98
98
|
``cli_timestamp_format`` controls the format of timestamps displayed by the AWS CLI.
|
|
99
99
|
The valid values of the ``cli_timestamp_format`` configuration variable are:
|
|
100
100
|
|
|
101
|
-
*
|
|
101
|
+
* wire - Display the timestamp exactly as received from the HTTP response.
|
|
102
102
|
* iso8601 - Reformat timestamp using iso8601 in the UTC timezone.
|
|
103
103
|
|
|
104
104
|
``cli_follow_urlparam`` controls whether or not the CLI will attempt to follow
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
:title: AWS CLI S3 Case-Insensitivity
|
|
2
|
+
:description: Using 'aws s3' commands on case-insensitive filesystems
|
|
3
|
+
:category: S3
|
|
4
|
+
:related command: s3 cp, s3 sync, s3 mv
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
This page explains how to detect and handle potential case conflicts when
|
|
8
|
+
downloading multiple objects from S3 to a local case-insensitive filesystem
|
|
9
|
+
using a single AWS CLI command.
|
|
10
|
+
|
|
11
|
+
Case conflicts
|
|
12
|
+
==============
|
|
13
|
+
S3 object keys are case-sensitive meaning that a bucket can have a set of
|
|
14
|
+
key names that differ only by case, for example, ``a.txt`` and ``A.txt``.
|
|
15
|
+
|
|
16
|
+
The AWS CLI offers high-level S3 commands that manage transfers of
|
|
17
|
+
multiple S3 objects using a single command:
|
|
18
|
+
|
|
19
|
+
* ``aws s3 sync``
|
|
20
|
+
* ``aws s3 cp --recursive``
|
|
21
|
+
* ``aws s3 mv --recursive``
|
|
22
|
+
|
|
23
|
+
Case conflicts can occur on case-insensitive filesystems when an S3 bucket
|
|
24
|
+
has multiple objects whose keys differ only by case and a single AWS CLI
|
|
25
|
+
command is called to download multiple S3 objects **OR** a local file
|
|
26
|
+
already exists whose name differs only by case.
|
|
27
|
+
|
|
28
|
+
For example, consider an S3 bucket with the following stored objects:
|
|
29
|
+
|
|
30
|
+
* ``a.txt``
|
|
31
|
+
* ``A.txt``
|
|
32
|
+
|
|
33
|
+
When the following AWS CLI command is called, the AWS CLI will submit
|
|
34
|
+
requests to download ``a.txt`` and ``A.txt``. Since only
|
|
35
|
+
one can exist on a case-insensitive filesystem, the last download to finish
|
|
36
|
+
will be the file that's locally available.
|
|
37
|
+
|
|
38
|
+
.. code-block::
|
|
39
|
+
|
|
40
|
+
aws s3 sync s3://examplebucket ./mylocaldir
|
|
41
|
+
|
|
42
|
+
Detecting and handling case conflicts
|
|
43
|
+
=====================================
|
|
44
|
+
To detect and handle case conflicts, you can specify the ``--case-conflict``
|
|
45
|
+
parameter. The following values are valid options:
|
|
46
|
+
|
|
47
|
+
* ``error`` - When a case conflict is detected, the command will immediately
|
|
48
|
+
fail and abort in-progress downloads.
|
|
49
|
+
* ``warn`` - (Default) When a case conflict is detected, the AWS CLI will
|
|
50
|
+
display a warning.
|
|
51
|
+
* ``skip`` - When a case conflict is detected, the command will skip
|
|
52
|
+
downloading the object and continue and display a warning.
|
|
53
|
+
* ``ignore`` - Case conflicts will not be detected or handled.
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
Continuing the prior example, the following describes what happens when
|
|
57
|
+
appending the ``--case-conflict`` parameter with possible values:
|
|
58
|
+
|
|
59
|
+
``--case-conflict error``
|
|
60
|
+
|
|
61
|
+
1. Submit a download request for ``A.txt``.
|
|
62
|
+
2. Detect that ``a.txt`` conflicts with an object that's been submitted for download.
|
|
63
|
+
3. Throw an error. If ``A.txt`` finished downloading, it will be locally available. Otherwise, the download request for ``A.txt`` will be aborted.
|
|
64
|
+
|
|
65
|
+
``--case-conflict warn``
|
|
66
|
+
|
|
67
|
+
1. Submit a download request for ``A.txt``.
|
|
68
|
+
2. Detect that ``a.txt`` conflicts with an object that's been submitted for download.
|
|
69
|
+
3. Display a warning.
|
|
70
|
+
4. Submit a download request for ``a.txt``, downloading ``A.txt`` and ``a.txt`` in parallel.
|
|
71
|
+
|
|
72
|
+
``--case-conflict skip``
|
|
73
|
+
|
|
74
|
+
1. Submit a download request for ``A.txt``.
|
|
75
|
+
2. Detect that ``a.txt`` conflicts with an object that's been submitted for download.
|
|
76
|
+
3. Skip downloading ``a.txt`` and continue.
|
|
77
|
+
|
|
78
|
+
``--case-conflict ignore``
|
|
79
|
+
|
|
80
|
+
1. Submit a download request for ``A.txt``.
|
|
81
|
+
2. Submit a download request for ``a.txt``, downloading ``A.txt`` and ``a.txt`` in parallel.
|
|
82
|
+
|
|
83
|
+
If your local filesystem is case-sensitive, there's no need to detect and
|
|
84
|
+
handle case conflicts. We recommend setting ``--case-conflict ignore``
|
|
85
|
+
in this case.
|
|
86
|
+
|
|
87
|
+
S3 Express directory buckets
|
|
88
|
+
============================
|
|
89
|
+
Detecting case conflicts is **NOT** supported when the source is an S3 Express
|
|
90
|
+
directory bucket. When operating on directory buckets, valid values for the
|
|
91
|
+
``--case-conflict`` parameter are:
|
|
92
|
+
|
|
93
|
+
* ``warn``
|
|
94
|
+
* ``ignore``
|
|
95
|
+
|
|
96
|
+
The following values are invalid when operating on directory buckets:
|
|
97
|
+
|
|
98
|
+
* ``error``
|
|
99
|
+
* ``skip``
|
|
100
|
+
|
|
101
|
+
For example, calling the following command will fail:
|
|
102
|
+
|
|
103
|
+
.. code-block::
|
|
104
|
+
|
|
105
|
+
aws s3 cp s3://mydirbucket--usw2-az1--x-s3 ./mylocaldir --recursive --case-conflict error
|
awscli/topics/topic-tags.json
CHANGED
|
@@ -69,5 +69,21 @@
|
|
|
69
69
|
"title": [
|
|
70
70
|
"AWS CLI S3 FAQ"
|
|
71
71
|
]
|
|
72
|
+
},
|
|
73
|
+
"s3-case-insensitivity": {
|
|
74
|
+
"category": [
|
|
75
|
+
"S3"
|
|
76
|
+
],
|
|
77
|
+
"description": [
|
|
78
|
+
"Using 'aws s3' commands on case-insensitive filesystems"
|
|
79
|
+
],
|
|
80
|
+
"related command": [
|
|
81
|
+
"s3 cp",
|
|
82
|
+
"s3 sync",
|
|
83
|
+
"s3 mv"
|
|
84
|
+
],
|
|
85
|
+
"title": [
|
|
86
|
+
"AWS CLI S3 Case-Insensitivity"
|
|
87
|
+
]
|
|
72
88
|
}
|
|
73
89
|
}
|
awscli/utils.py
CHANGED
|
@@ -134,6 +134,18 @@ def find_service_and_method_in_event_name(event_name):
|
|
|
134
134
|
return service_name, operation_name
|
|
135
135
|
|
|
136
136
|
|
|
137
|
+
def resolve_v2_debug_mode(args):
|
|
138
|
+
# Resolve whether v2-debug mode is enabled,
|
|
139
|
+
# following the correct precedence order.
|
|
140
|
+
if args is None:
|
|
141
|
+
return False
|
|
142
|
+
if getattr(args, 'v2_debug', False):
|
|
143
|
+
return True
|
|
144
|
+
if os.environ.get('AWS_CLI_UPGRADE_DEBUG_MODE', '').lower() == 'true':
|
|
145
|
+
return True
|
|
146
|
+
return False
|
|
147
|
+
|
|
148
|
+
|
|
137
149
|
def is_document_type(shape):
|
|
138
150
|
"""Check if shape is a document type"""
|
|
139
151
|
return getattr(shape, 'is_document_type', False)
|
|
@@ -205,8 +217,13 @@ def ignore_ctrl_c():
|
|
|
205
217
|
signal.signal(signal.SIGINT, original)
|
|
206
218
|
|
|
207
219
|
|
|
208
|
-
def emit_top_level_args_parsed_event(session, args):
|
|
209
|
-
session.emit(
|
|
220
|
+
def emit_top_level_args_parsed_event(session, args, remaining=None):
|
|
221
|
+
session.emit(
|
|
222
|
+
'top-level-args-parsed',
|
|
223
|
+
parsed_args=args,
|
|
224
|
+
session=session,
|
|
225
|
+
remaining_args=remaining,
|
|
226
|
+
)
|
|
210
227
|
|
|
211
228
|
|
|
212
229
|
def is_a_tty():
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: awscli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.44.6
|
|
4
4
|
Summary: Universal Command Line Environment for AWS.
|
|
5
5
|
Home-page: http://aws.amazon.com/cli/
|
|
6
6
|
Author: Amazon Web Services
|
|
@@ -21,11 +21,12 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
25
|
Requires-Python: >= 3.9
|
|
25
26
|
License-File: LICENSE.txt
|
|
26
|
-
Requires-Dist: botocore (==1.
|
|
27
|
+
Requires-Dist: botocore (==1.42.16)
|
|
27
28
|
Requires-Dist: docutils (<=0.19,>=0.18.1)
|
|
28
|
-
Requires-Dist: s3transfer (<0.
|
|
29
|
+
Requires-Dist: s3transfer (<0.17.0,>=0.16.0)
|
|
29
30
|
Requires-Dist: PyYAML (<6.1,>=3.10)
|
|
30
31
|
Requires-Dist: colorama (<0.4.7,>=0.2.5)
|
|
31
32
|
Requires-Dist: rsa (<4.8,>=3.1.2)
|
|
@@ -63,6 +64,7 @@ The aws-cli package works on Python versions:
|
|
|
63
64
|
- 3.11.x and greater
|
|
64
65
|
- 3.12.x and greater
|
|
65
66
|
- 3.13.x and greater
|
|
67
|
+
- 3.14.x and greater
|
|
66
68
|
|
|
67
69
|
Notices
|
|
68
70
|
~~~~~~~
|