awscli 1.42.7__py3-none-any.whl → 1.44.26__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.
- awscli/__init__.py +1 -1
- awscli/alias.py +3 -3
- awscli/argprocess.py +7 -2
- 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 -3
- 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/gamelift/uploadbuild.py +24 -11
- 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 +96 -0
- awscli/customizations/s3/utils.py +14 -0
- awscli/customizations/scalarparse.py +48 -9
- awscli/data/cli.json +5 -0
- awscli/examples/apigateway/update-vpc-link.rst +47 -0
- awscli/examples/application-signals/batch-get-service-level-objective-budget-report.rst +99 -0
- awscli/examples/application-signals/create-service-level-objective.rst +88 -0
- awscli/examples/application-signals/delete-service-level-objective.rst +10 -0
- awscli/examples/application-signals/get-service-level-objective.rst +53 -0
- awscli/examples/application-signals/get-service.rst +72 -0
- awscli/examples/application-signals/list-service-dependencies.rst +96 -0
- awscli/examples/application-signals/list-service-dependents.rst +36 -0
- awscli/examples/application-signals/list-service-level-objectives.rst +17 -0
- awscli/examples/application-signals/list-service-operations.rst +63 -0
- awscli/examples/application-signals/list-services.rst +61 -0
- awscli/examples/application-signals/list-tags-for-resource.rst +17 -0
- awscli/examples/application-signals/start-discovery.rst +9 -0
- awscli/examples/application-signals/tag-resource.rst +11 -0
- awscli/examples/application-signals/untag-resource.rst +11 -0
- awscli/examples/application-signals/update-service-level-objective.rst +69 -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/ec2/authorize-security-group-ingress.rst +1 -1
- awscli/examples/global_options.rst +4 -0
- awscli/examples/global_synopsis.rst +1 -0
- awscli/examples/guardduty/update-detector.rst +23 -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/networkmanager/get-vpc-attachment.rst +1 -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/handlers.py +0 -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.7.dist-info → awscli-1.44.26.dist-info}/METADATA +16 -3
- {awscli-1.42.7.dist-info → awscli-1.44.26.dist-info}/RECORD +112 -231
- awscli/customizations/opsworks.py +0 -543
- awscli/customizations/opsworkscm.py +0 -21
- awscli/examples/elastictranscoder/cancel-job.rst +0 -8
- awscli/examples/elastictranscoder/create-job.rst +0 -94
- awscli/examples/elastictranscoder/create-pipeline.rst +0 -94
- awscli/examples/elastictranscoder/create-preset.rst +0 -141
- awscli/examples/elastictranscoder/delete-pipeline.rst +0 -13
- awscli/examples/elastictranscoder/delete-preset.rst +0 -8
- awscli/examples/elastictranscoder/list-jobs-by-pipeline.rst +0 -13
- awscli/examples/elastictranscoder/list-jobs-by-status.rst +0 -14
- awscli/examples/elastictranscoder/list-pipelines.rst +0 -84
- awscli/examples/elastictranscoder/list-presets.rst +0 -95
- awscli/examples/elastictranscoder/read-job.rst +0 -65
- awscli/examples/elastictranscoder/read-pipeline.rst +0 -59
- awscli/examples/elastictranscoder/read-preset.rst +0 -100
- awscli/examples/elastictranscoder/update-pipeline-notifications.rst +0 -52
- awscli/examples/elastictranscoder/update-pipeline-status.rst +0 -53
- awscli/examples/elastictranscoder/update-pipeline.rst +0 -95
- awscli/examples/opsworks/assign-instance.rst +0 -14
- awscli/examples/opsworks/assign-volume.rst +0 -17
- awscli/examples/opsworks/associate-elastic-ip.rst +0 -14
- awscli/examples/opsworks/attach-elastic-load-balancer.rst +0 -14
- awscli/examples/opsworks/create-app.rst +0 -64
- awscli/examples/opsworks/create-deployment.rst +0 -66
- awscli/examples/opsworks/create-instance.rst +0 -25
- awscli/examples/opsworks/create-layer.rst +0 -17
- awscli/examples/opsworks/create-server.rst +0 -43
- awscli/examples/opsworks/create-stack.rst +0 -25
- awscli/examples/opsworks/create-user-profile.rst +0 -24
- awscli/examples/opsworks/delete-app.rst +0 -17
- awscli/examples/opsworks/delete-instance.rst +0 -15
- awscli/examples/opsworks/delete-layer.rst +0 -17
- awscli/examples/opsworks/delete-stack.rst +0 -18
- awscli/examples/opsworks/delete-user-profile.rst +0 -17
- awscli/examples/opsworks/deregister-elastic-ip.rst +0 -13
- awscli/examples/opsworks/deregister-instance.rst +0 -14
- awscli/examples/opsworks/deregister-rds-db-instance.rst +0 -20
- awscli/examples/opsworks/deregister-volume.rst +0 -15
- awscli/examples/opsworks/describe-apps.rst +0 -38
- awscli/examples/opsworks/describe-commands.rst +0 -43
- awscli/examples/opsworks/describe-deployments.rst +0 -52
- awscli/examples/opsworks/describe-elastic-ips.rst +0 -24
- awscli/examples/opsworks/describe-elastic-load-balancers.rst +0 -37
- awscli/examples/opsworks/describe-instances.rst +0 -95
- awscli/examples/opsworks/describe-layers.rst +0 -171
- awscli/examples/opsworks/describe-load-based-auto-scaling.rst +0 -37
- awscli/examples/opsworks/describe-my-user-profile.rst +0 -24
- awscli/examples/opsworks/describe-permissions.rst +0 -26
- awscli/examples/opsworks/describe-raid-arrays.rst +0 -31
- awscli/examples/opsworks/describe-rds-db-instances.rst +0 -29
- awscli/examples/opsworks/describe-stack-provisioning-parameters.rst +0 -32
- awscli/examples/opsworks/describe-stack-summary.rst +0 -27
- awscli/examples/opsworks/describe-stacks.rst +0 -65
- awscli/examples/opsworks/describe-timebased-auto-scaling.rst +0 -39
- awscli/examples/opsworks/describe-user-profiles.rst +0 -32
- awscli/examples/opsworks/describe-volumes.rst +0 -31
- awscli/examples/opsworks/detach-elastic-load-balancer.rst +0 -14
- awscli/examples/opsworks/disassociate-elastic-ip.rst +0 -14
- awscli/examples/opsworks/get-hostname-suggestion.rst +0 -21
- awscli/examples/opsworks/reboot-instance.rst +0 -14
- awscli/examples/opsworks/register-elastic-ip.rst +0 -19
- awscli/examples/opsworks/register-rds-db-instance.rst +0 -15
- awscli/examples/opsworks/register-volume.rst +0 -18
- awscli/examples/opsworks/register.rst +0 -105
- awscli/examples/opsworks/set-load-based-auto-scaling.rst +0 -38
- awscli/examples/opsworks/set-permission.rst +0 -23
- awscli/examples/opsworks/set-time-based-auto-scaling.rst +0 -33
- awscli/examples/opsworks/start-instance.rst +0 -20
- awscli/examples/opsworks/start-stack.rst +0 -15
- awscli/examples/opsworks/stop-instance.rst +0 -20
- awscli/examples/opsworks/stop-stack.rst +0 -15
- awscli/examples/opsworks/unassign-instance.rst +0 -14
- awscli/examples/opsworks/unassign-volume.rst +0 -16
- awscli/examples/opsworks/update-app.rst +0 -14
- awscli/examples/opsworks/update-elastic-ip.rst +0 -14
- awscli/examples/opsworks/update-instance.rst +0 -14
- awscli/examples/opsworks/update-layer.rst +0 -14
- awscli/examples/opsworks/update-my-user-profile.rst +0 -16
- awscli/examples/opsworks/update-rds-db-instance.rst +0 -18
- awscli/examples/opsworks/update-volume.rst +0 -16
- awscli/examples/opsworkscm/associate-node.rst +0 -22
- awscli/examples/opsworkscm/create-backup.rst +0 -46
- awscli/examples/opsworkscm/create-server.rst +0 -48
- awscli/examples/opsworkscm/delete-backup.rst +0 -17
- awscli/examples/opsworkscm/delete-server.rst +0 -16
- awscli/examples/opsworkscm/describe-account-attributes.rst +0 -26
- awscli/examples/opsworkscm/describe-backups.rst +0 -44
- awscli/examples/opsworkscm/describe-events.rst +0 -21
- awscli/examples/opsworkscm/describe-node-association-status.rst +0 -20
- awscli/examples/opsworkscm/describe-servers.rst +0 -48
- awscli/examples/opsworkscm/disassociate-node.rst +0 -19
- awscli/examples/opsworkscm/restore-server.rst +0 -20
- awscli/examples/opsworkscm/start-maintenance.rst +0 -39
- awscli/examples/opsworkscm/update-server-engine-attributes.rst +0 -43
- awscli/examples/opsworkscm/update-server.rst +0 -42
- 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.7.data → awscli-1.44.26.data}/scripts/aws +0 -0
- {awscli-1.42.7.data → awscli-1.44.26.data}/scripts/aws.cmd +0 -0
- {awscli-1.42.7.data → awscli-1.44.26.data}/scripts/aws_bash_completer +0 -0
- {awscli-1.42.7.data → awscli-1.44.26.data}/scripts/aws_completer +0 -0
- {awscli-1.42.7.data → awscli-1.44.26.data}/scripts/aws_zsh_completer.sh +0 -0
- {awscli-1.42.7.dist-info → awscli-1.44.26.dist-info}/LICENSE.txt +0 -0
- {awscli-1.42.7.dist-info → awscli-1.44.26.dist-info}/WHEEL +0 -0
- {awscli-1.42.7.dist-info → awscli-1.44.26.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import logging
|
|
4
|
+
import os
|
|
5
|
+
import sys
|
|
6
|
+
|
|
7
|
+
from awscli.customizations.s3.syncstrategy.base import BaseSync
|
|
8
|
+
from awscli.customizations.utils import uni_print
|
|
9
|
+
|
|
10
|
+
LOG = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CaseConflictException(Exception):
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class CaseConflictSync(BaseSync):
|
|
18
|
+
DOC_URI = (
|
|
19
|
+
"https://docs.aws.amazon.com/cli/v1/topic/"
|
|
20
|
+
"s3-case-insensitivity.html"
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
sync_type='file_not_at_dest',
|
|
26
|
+
on_case_conflict='ignore',
|
|
27
|
+
submitted=None,
|
|
28
|
+
):
|
|
29
|
+
super().__init__(sync_type)
|
|
30
|
+
self._on_case_conflict = on_case_conflict
|
|
31
|
+
if submitted is None:
|
|
32
|
+
submitted = set()
|
|
33
|
+
self._submitted = submitted
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def submitted(self):
|
|
37
|
+
return self._submitted
|
|
38
|
+
|
|
39
|
+
def determine_should_sync(self, src_file, dest_file):
|
|
40
|
+
# `src_file.compare_key` and `dest_file.compare_key` are not equal.
|
|
41
|
+
# This could mean that they're completely different or differ
|
|
42
|
+
# only by case. eg, `/tmp/a` and `/tmp/b` versus `/tmp/a` and `/tmp/A`.
|
|
43
|
+
# If the source file's destination already exists, that means it
|
|
44
|
+
# differs only by case and the conflict needs to be handled.
|
|
45
|
+
should_sync = True
|
|
46
|
+
# Normalize compare key for case sensitivity.
|
|
47
|
+
lower_compare_key = src_file.compare_key.lower()
|
|
48
|
+
if lower_compare_key in self._submitted or os.path.exists(
|
|
49
|
+
src_file.dest
|
|
50
|
+
):
|
|
51
|
+
handler = getattr(self, f"_handle_{self._on_case_conflict}")
|
|
52
|
+
should_sync = handler(src_file)
|
|
53
|
+
if should_sync:
|
|
54
|
+
LOG.debug(f"syncing: {src_file.src} -> {src_file.dest}")
|
|
55
|
+
self._submitted.add(lower_compare_key)
|
|
56
|
+
# Set properties so that a subscriber can be created
|
|
57
|
+
# that removes the key from the set after download finishes.
|
|
58
|
+
src_file.case_conflict_submitted = self._submitted
|
|
59
|
+
src_file.case_conflict_key = lower_compare_key
|
|
60
|
+
return should_sync
|
|
61
|
+
|
|
62
|
+
@staticmethod
|
|
63
|
+
def _handle_ignore(src_file):
|
|
64
|
+
return True
|
|
65
|
+
|
|
66
|
+
@staticmethod
|
|
67
|
+
def _handle_skip(src_file):
|
|
68
|
+
msg = (
|
|
69
|
+
f"warning: Skipping {src_file.src} -> {src_file.dest} "
|
|
70
|
+
"because a file whose name differs only by case either exists "
|
|
71
|
+
"or is being downloaded.\n"
|
|
72
|
+
)
|
|
73
|
+
uni_print(msg, sys.stderr)
|
|
74
|
+
return False
|
|
75
|
+
|
|
76
|
+
@staticmethod
|
|
77
|
+
def _handle_warn(src_file):
|
|
78
|
+
msg = (
|
|
79
|
+
f"warning: Downloading {src_file.src} -> {src_file.dest} "
|
|
80
|
+
"despite a file whose name differs only by case either existing "
|
|
81
|
+
"or being downloaded. This behavior is not defined on "
|
|
82
|
+
"case-insensitive filesystems and may result in overwriting "
|
|
83
|
+
"existing files or race conditions between concurrent downloads. "
|
|
84
|
+
f"For more information, see {CaseConflictSync.DOC_URI}.\n"
|
|
85
|
+
)
|
|
86
|
+
uni_print(msg, sys.stderr)
|
|
87
|
+
return True
|
|
88
|
+
|
|
89
|
+
@staticmethod
|
|
90
|
+
def _handle_error(src_file):
|
|
91
|
+
msg = (
|
|
92
|
+
f"Failed to download {src_file.src} -> {src_file.dest} "
|
|
93
|
+
"because a file whose name differs only by case either exists "
|
|
94
|
+
"or is being downloaded."
|
|
95
|
+
)
|
|
96
|
+
raise CaseConflictException(msg)
|
|
@@ -690,6 +690,20 @@ class OnDoneFilteredSubscriber(BaseSubscriber):
|
|
|
690
690
|
pass
|
|
691
691
|
|
|
692
692
|
|
|
693
|
+
class CaseConflictCleanupSubscriber(BaseSubscriber):
|
|
694
|
+
"""
|
|
695
|
+
A subscriber which removes object compare key from case conflict set
|
|
696
|
+
when download finishes.
|
|
697
|
+
"""
|
|
698
|
+
|
|
699
|
+
def __init__(self, submitted, case_conflict_key):
|
|
700
|
+
self._submitted = submitted
|
|
701
|
+
self._key = case_conflict_key
|
|
702
|
+
|
|
703
|
+
def on_done(self, future, **kwargs):
|
|
704
|
+
self._submitted.discard(self._key)
|
|
705
|
+
|
|
706
|
+
|
|
693
707
|
class DeleteSourceSubscriber(OnDoneFilteredSubscriber):
|
|
694
708
|
"""A subscriber which deletes the source of the transfer."""
|
|
695
709
|
def _on_success(self, future):
|
|
@@ -27,9 +27,14 @@ There's nothing currently done for timestamps, but this will change
|
|
|
27
27
|
in the future.
|
|
28
28
|
|
|
29
29
|
"""
|
|
30
|
+
import sys
|
|
31
|
+
|
|
30
32
|
from botocore.utils import parse_timestamp
|
|
31
33
|
from botocore.exceptions import ProfileNotFound
|
|
32
34
|
|
|
35
|
+
from awscli.customizations.utils import uni_print
|
|
36
|
+
from awscli.utils import resolve_v2_debug_mode
|
|
37
|
+
|
|
33
38
|
|
|
34
39
|
def register_scalar_parser(event_handlers):
|
|
35
40
|
event_handlers.register_first(
|
|
@@ -44,12 +49,20 @@ def iso_format(value):
|
|
|
44
49
|
return parse_timestamp(value).isoformat()
|
|
45
50
|
|
|
46
51
|
|
|
47
|
-
def add_timestamp_parser(session):
|
|
52
|
+
def add_timestamp_parser(session, v2_debug=False):
|
|
48
53
|
factory = session.get_component('response_parser_factory')
|
|
54
|
+
print_v2_debug_warnings = v2_debug
|
|
49
55
|
try:
|
|
50
56
|
timestamp_format = session.get_scoped_config().get(
|
|
51
57
|
'cli_timestamp_format',
|
|
52
|
-
|
|
58
|
+
None)
|
|
59
|
+
if timestamp_format is not None:
|
|
60
|
+
# We do not want to print v2 debug warnings if the user explicitly
|
|
61
|
+
# configured the cli_timestamp_format, they would not be
|
|
62
|
+
# broken in that case.
|
|
63
|
+
print_v2_debug_warnings = False
|
|
64
|
+
else:
|
|
65
|
+
timestamp_format = 'wire'
|
|
53
66
|
except ProfileNotFound:
|
|
54
67
|
# If a --profile is provided that does not exist, loading
|
|
55
68
|
# a value from get_scoped_config will crash the CLI.
|
|
@@ -57,23 +70,49 @@ def add_timestamp_parser(session):
|
|
|
57
70
|
# the session-initialized event, which happens before a
|
|
58
71
|
# profile can be created, even if the command would have
|
|
59
72
|
# successfully created a profile. Instead of crashing here
|
|
60
|
-
# on a ProfileNotFound the CLI should just use '
|
|
61
|
-
timestamp_format = '
|
|
62
|
-
|
|
73
|
+
# on a ProfileNotFound the CLI should just use 'wire'.
|
|
74
|
+
timestamp_format = 'wire'
|
|
75
|
+
# We also support 'none' for backwards compatibility reasons, though we
|
|
76
|
+
# document 'wire' instead.
|
|
77
|
+
if timestamp_format == 'wire' or timestamp_format == 'none':
|
|
63
78
|
# For backwards compatibility reasons, we replace botocore's timestamp
|
|
64
79
|
# parser (which parses to a datetime.datetime object) with the
|
|
65
80
|
# identity function which prints the date exactly the same as it comes
|
|
66
81
|
# across the wire.
|
|
67
|
-
|
|
82
|
+
encountered_timestamp = False
|
|
83
|
+
def identity_with_warning(x):
|
|
84
|
+
# To prevent printing the same warning for each timestamp in the
|
|
85
|
+
# response, we utilize a reference to a nonlocal variable to track
|
|
86
|
+
# if we have already printed the warning.
|
|
87
|
+
nonlocal encountered_timestamp
|
|
88
|
+
if not encountered_timestamp:
|
|
89
|
+
encountered_timestamp = True
|
|
90
|
+
uni_print(
|
|
91
|
+
'\nAWS CLI v2 UPGRADE WARNING: In AWS CLI v2, all '
|
|
92
|
+
'timestamp response values are returned in the ISO 8601 '
|
|
93
|
+
'format. This is different from v1 behavior, where the '
|
|
94
|
+
'timestamps are returned as they appear in the service '
|
|
95
|
+
'API response. To retain AWS CLI v1 behavior in AWS CLI '
|
|
96
|
+
'v2, set the configuration variable '
|
|
97
|
+
'`cli_timestamp_format` to `wire`. See '
|
|
98
|
+
'https://docs.aws.amazon.com/cli/latest/userguide/'
|
|
99
|
+
'cliv2-migration-changes.html'
|
|
100
|
+
'#cliv2-migration-timestamp.\n',
|
|
101
|
+
out_file=sys.stderr
|
|
102
|
+
)
|
|
103
|
+
return identity(x)
|
|
104
|
+
|
|
105
|
+
timestamp_parser = identity_with_warning \
|
|
106
|
+
if print_v2_debug_warnings else identity
|
|
68
107
|
elif timestamp_format == 'iso8601':
|
|
69
108
|
timestamp_parser = iso_format
|
|
70
109
|
else:
|
|
71
110
|
raise ValueError('Unknown cli_timestamp_format value: %s, valid values'
|
|
72
|
-
' are "none" or "iso8601"' % timestamp_format)
|
|
111
|
+
' are "none", "wire" or "iso8601"' % timestamp_format)
|
|
73
112
|
factory.set_parser_defaults(timestamp_parser=timestamp_parser)
|
|
74
113
|
|
|
75
114
|
|
|
76
|
-
def add_scalar_parsers(session, **kwargs):
|
|
115
|
+
def add_scalar_parsers(session, parsed_args=None, **kwargs):
|
|
77
116
|
factory = session.get_component('response_parser_factory')
|
|
78
117
|
factory.set_parser_defaults(blob_parser=identity)
|
|
79
|
-
add_timestamp_parser(session)
|
|
118
|
+
add_timestamp_parser(session, resolve_v2_debug_mode(parsed_args))
|
awscli/data/cli.json
CHANGED
|
@@ -64,6 +64,11 @@
|
|
|
64
64
|
"dest": "connect_timeout",
|
|
65
65
|
"type": "int",
|
|
66
66
|
"help": "<p>The maximum socket connect time in seconds. If the value is set to 0, the socket connect will be blocking and not timeout. The default value is 60 seconds.</p>"
|
|
67
|
+
},
|
|
68
|
+
"v2-debug": {
|
|
69
|
+
"action": "store_true",
|
|
70
|
+
"dest": "v2_debug",
|
|
71
|
+
"help": "<p>Enable AWS CLI v2 migration assistance. Prints warnings if the command would face a breaking change after swapping AWS CLI v1 for AWS CLI v2 in the current environment. Prints one warning for each breaking change detected.</p>"
|
|
67
72
|
}
|
|
68
73
|
}
|
|
69
74
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
**Example 1: To update an existing VPC link name**
|
|
2
|
+
|
|
3
|
+
The following ``update-vpc-link`` example updates the name of the specified VPC link. ::
|
|
4
|
+
|
|
5
|
+
aws apigateway update-vpc-link \
|
|
6
|
+
--vpc-link-id ab3de6 \
|
|
7
|
+
--patch-operations op=replace,path=/name,value=my-vpc-link
|
|
8
|
+
|
|
9
|
+
Output::
|
|
10
|
+
|
|
11
|
+
{
|
|
12
|
+
"id": "ab3de6",
|
|
13
|
+
"name": "my-vpc-link",
|
|
14
|
+
"targetArns": [
|
|
15
|
+
"arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/my-lb/12a456s89aaa12345"
|
|
16
|
+
],
|
|
17
|
+
"status": "AVAILABLE",
|
|
18
|
+
"statusMessage": "Your vpc link is ready for use",
|
|
19
|
+
"tags": {}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
For more information, see `Updating existing VPC link <https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-vpc-link.html>`__ in the *AWS CLI Command Reference*.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
**Example 2: To update an existing VPC link name and description**
|
|
26
|
+
|
|
27
|
+
The following ``update-vpc-link`` example updates name of the specified VPC link. ::
|
|
28
|
+
|
|
29
|
+
aws apigateway update-vpc-link \
|
|
30
|
+
--vpc-link-id ab3de6 \
|
|
31
|
+
--patch-operations op=replace,path=/name,value=my-vpc-link op=replace,path=/description,value="My custom description"
|
|
32
|
+
|
|
33
|
+
Output::
|
|
34
|
+
|
|
35
|
+
{
|
|
36
|
+
"id": "ab3de6",
|
|
37
|
+
"name": "my-vpc-link",
|
|
38
|
+
"description": "My custom description",
|
|
39
|
+
"targetArns": [
|
|
40
|
+
"arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/my-lb/12a456s89aaa12345"
|
|
41
|
+
],
|
|
42
|
+
"status": "AVAILABLE",
|
|
43
|
+
"statusMessage": "Your vpc link is ready for use",
|
|
44
|
+
"tags": {}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
For more information, see `Updating existing VPC link <https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-vpc-link.html>`__ in the *AWS CLI Command Reference*.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
**To retrieve one or more service level objective (SLO) budget reports.**
|
|
2
|
+
|
|
3
|
+
The following ``batch-get-service-level-objective-budget-report`` example retrieves one or more service level objective (SLO) budget reports. ::
|
|
4
|
+
|
|
5
|
+
aws application-signals batch-get-service-level-objective-budget-report \
|
|
6
|
+
--timestamp 1735059869 \
|
|
7
|
+
--slo-ids "arn:aws:application-signals:us-east-1:123456789101:slo/SLOName1" "arn:aws:application-signals:us-east-1:123456789101:slo/SLOName2"
|
|
8
|
+
|
|
9
|
+
Output::
|
|
10
|
+
|
|
11
|
+
{
|
|
12
|
+
"Timestamp": "2024-12-24T22:34:29+05:30",
|
|
13
|
+
"Reports": [{
|
|
14
|
+
"Arn": "arn:aws:application-signals:us-east-1:123456789101:slo/SLOName1",
|
|
15
|
+
"Name": "Your SLO Name",
|
|
16
|
+
"EvaluationType": "PeriodBased",
|
|
17
|
+
"BudgetStatus": "OK",
|
|
18
|
+
"Attainment": 100.0,
|
|
19
|
+
"TotalBudgetSeconds": 6048,
|
|
20
|
+
"BudgetSecondsRemaining": 6048,
|
|
21
|
+
"Sli": {
|
|
22
|
+
"SliMetric": {
|
|
23
|
+
"MetricDataQueries": [{
|
|
24
|
+
"Id": "m1",
|
|
25
|
+
"MetricStat": {
|
|
26
|
+
"Metric": {
|
|
27
|
+
"Namespace": "AWS/EC2",
|
|
28
|
+
"MetricName": "CPUUtilization",
|
|
29
|
+
"Dimensions": [{
|
|
30
|
+
"Name": "InstanceId",
|
|
31
|
+
"Value": "i-0e098765432522"
|
|
32
|
+
}]
|
|
33
|
+
},
|
|
34
|
+
"Period": 60,
|
|
35
|
+
"Stat": "Average"
|
|
36
|
+
},
|
|
37
|
+
"ReturnData": true
|
|
38
|
+
}]
|
|
39
|
+
},
|
|
40
|
+
"MetricThreshold": 200.0,
|
|
41
|
+
"ComparisonOperator": "LessThanOrEqualTo"
|
|
42
|
+
},
|
|
43
|
+
"Goal": {
|
|
44
|
+
"Interval": {
|
|
45
|
+
"RollingInterval": {
|
|
46
|
+
"DurationUnit": "DAY",
|
|
47
|
+
"Duration": 7
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"AttainmentGoal": 99.0,
|
|
51
|
+
"WarningThreshold": 50.0
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"Arn": "arn:aws:application-signals:us-east-1:123456789101:slo/SLOName2",
|
|
56
|
+
"Name": "test",
|
|
57
|
+
"EvaluationType": "PeriodBased",
|
|
58
|
+
"BudgetStatus": "BREACHED",
|
|
59
|
+
"Attainment": 97.39583275,
|
|
60
|
+
"TotalBudgetSeconds": 86,
|
|
61
|
+
"BudgetSecondsRemaining": -2154,
|
|
62
|
+
"Sli": {
|
|
63
|
+
"SliMetric": {
|
|
64
|
+
"MetricDataQueries": [{
|
|
65
|
+
"Id": "cwMetric",
|
|
66
|
+
"MetricStat": {
|
|
67
|
+
"Metric": {
|
|
68
|
+
"Namespace": "AWS/EC2",
|
|
69
|
+
"MetricName": "CPUUtilization",
|
|
70
|
+
"Dimensions": [{
|
|
71
|
+
"Name": "InstanceId",
|
|
72
|
+
"Value": "i-0e12345678922"
|
|
73
|
+
}]
|
|
74
|
+
},
|
|
75
|
+
"Period": 300,
|
|
76
|
+
"Stat": "Average"
|
|
77
|
+
},
|
|
78
|
+
"ReturnData": true
|
|
79
|
+
}]
|
|
80
|
+
},
|
|
81
|
+
"MetricThreshold": 5.0,
|
|
82
|
+
"ComparisonOperator": "GreaterThan"
|
|
83
|
+
},
|
|
84
|
+
"Goal": {
|
|
85
|
+
"Interval": {
|
|
86
|
+
"RollingInterval": {
|
|
87
|
+
"DurationUnit": "DAY",
|
|
88
|
+
"Duration": 1
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"AttainmentGoal": 99.9,
|
|
92
|
+
"WarningThreshold": 30.0
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"Errors": []
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
For more information, see `Application Signals <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html>`__ in the *Amazon CloudWatch User Guide*.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
**To create a service level objective (SLO)**
|
|
2
|
+
|
|
3
|
+
The following ``create-service-level-objective`` example creates a service level objective (SLO), which can help you ensure that your critical business operations are meeting customer expectations. ::
|
|
4
|
+
|
|
5
|
+
aws application-signals create-service-level-objective \
|
|
6
|
+
--name "SLOName" \
|
|
7
|
+
--description "Description of your SLO" \
|
|
8
|
+
--sli-config file://sli-config.json
|
|
9
|
+
|
|
10
|
+
Contents of ``sli-config.json``::
|
|
11
|
+
|
|
12
|
+
{
|
|
13
|
+
"SliMetricConfig": {
|
|
14
|
+
"MetricDataQueries": [
|
|
15
|
+
{
|
|
16
|
+
"Id": "m1",
|
|
17
|
+
"MetricStat": {
|
|
18
|
+
"Metric": {
|
|
19
|
+
"Namespace": "AWS/EC2",
|
|
20
|
+
"MetricName": "CPUUtilization",
|
|
21
|
+
"Dimensions": [
|
|
22
|
+
{
|
|
23
|
+
"Name": "InstanceId",
|
|
24
|
+
"Value": "i-0e5a1234561522"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"Period": 60,
|
|
29
|
+
"Stat": "Average"
|
|
30
|
+
},
|
|
31
|
+
"ReturnData": true
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"MetricThreshold": 200,
|
|
36
|
+
"ComparisonOperator": "LessThanOrEqualTo"
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
Output::
|
|
40
|
+
|
|
41
|
+
{
|
|
42
|
+
"Slo": {
|
|
43
|
+
"Arn": "arn:aws:application-signals:us-east-1:123456789101:slo/SLOName",
|
|
44
|
+
"Name": "SLOName",
|
|
45
|
+
"Description": "Description of your SLO",
|
|
46
|
+
"CreatedTime": "2024-12-27T08:16:09.032000+05:30",
|
|
47
|
+
"LastUpdatedTime": "2024-12-27T08:16:09.032000+05:30",
|
|
48
|
+
"Sli": {
|
|
49
|
+
"SliMetric": {
|
|
50
|
+
"MetricDataQueries": [
|
|
51
|
+
{
|
|
52
|
+
"Id": "m1",
|
|
53
|
+
"MetricStat": {
|
|
54
|
+
"Metric": {
|
|
55
|
+
"Namespace": "AWS/EC2",
|
|
56
|
+
"MetricName": "CPUUtilization",
|
|
57
|
+
"Dimensions": [
|
|
58
|
+
{
|
|
59
|
+
"Name": "InstanceId",
|
|
60
|
+
"Value": "i-0e59876543234522"
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"Period": 60,
|
|
65
|
+
"Stat": "Average"
|
|
66
|
+
},
|
|
67
|
+
"ReturnData": true
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"MetricThreshold": 200.0,
|
|
72
|
+
"ComparisonOperator": "LessThanOrEqualTo"
|
|
73
|
+
},
|
|
74
|
+
"EvaluationType": "PeriodBased",
|
|
75
|
+
"Goal": {
|
|
76
|
+
"Interval": {
|
|
77
|
+
"RollingInterval": {
|
|
78
|
+
"DurationUnit": "DAY",
|
|
79
|
+
"Duration": 7
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"AttainmentGoal": 99.0,
|
|
83
|
+
"WarningThreshold": 50.0
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
For more information, see `Application Signals <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html>`__ in the *Amazon CloudWatch User Guide*.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
**To delete the specified service level objective.**
|
|
2
|
+
|
|
3
|
+
The following ``delete-service-level-objective`` example deletes the specified service level objective. ::
|
|
4
|
+
|
|
5
|
+
aws application-signals delete-service-level-objective \
|
|
6
|
+
--id "arn:aws:application-signals:us-east-1:123456789101:slo/SLOName"
|
|
7
|
+
|
|
8
|
+
This command produces no output.
|
|
9
|
+
|
|
10
|
+
For more information, see `Application Signals <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html>`__ in the *Amazon CloudWatch User Guide*.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
**To return information about one SLO created in the account**
|
|
2
|
+
|
|
3
|
+
The following ``get-service-level-objective`` example returns information about one SLO created in the account. ::
|
|
4
|
+
|
|
5
|
+
aws application-signals get-service-level-objective \
|
|
6
|
+
--id "arn:aws:application-signals:us-east-1:123456789101:slo/SLOName"
|
|
7
|
+
|
|
8
|
+
Output::
|
|
9
|
+
|
|
10
|
+
{
|
|
11
|
+
"Slo": {
|
|
12
|
+
"Arn": "arn:aws:application-signals:us-east-1:123456789101:slo/SLOName",
|
|
13
|
+
"Name": "SLOName",
|
|
14
|
+
"Description": "Description of your SLO",
|
|
15
|
+
"CreatedTime": "2024-12-24T22:19:18.624000+05:30",
|
|
16
|
+
"LastUpdatedTime": "2024-12-24T22:19:55.280000+05:30",
|
|
17
|
+
"Sli": {
|
|
18
|
+
"SliMetric": {
|
|
19
|
+
"MetricDataQueries": [{
|
|
20
|
+
"Id": "m1",
|
|
21
|
+
"MetricStat": {
|
|
22
|
+
"Metric": {
|
|
23
|
+
"Namespace": "AWS/EC2",
|
|
24
|
+
"MetricName": "CPUUtilization",
|
|
25
|
+
"Dimensions": [{
|
|
26
|
+
"Name": "InstanceId",
|
|
27
|
+
"Value": "i-0e0987654321522"
|
|
28
|
+
}]
|
|
29
|
+
},
|
|
30
|
+
"Period": 60,
|
|
31
|
+
"Stat": "Average"
|
|
32
|
+
},
|
|
33
|
+
"ReturnData": true
|
|
34
|
+
}]
|
|
35
|
+
},
|
|
36
|
+
"MetricThreshold": 200.0,
|
|
37
|
+
"ComparisonOperator": "LessThanOrEqualTo"
|
|
38
|
+
},
|
|
39
|
+
"EvaluationType": "PeriodBased",
|
|
40
|
+
"Goal": {
|
|
41
|
+
"Interval": {
|
|
42
|
+
"RollingInterval": {
|
|
43
|
+
"DurationUnit": "DAY",
|
|
44
|
+
"Duration": 7
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"AttainmentGoal": 99.0,
|
|
48
|
+
"WarningThreshold": 50.0
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
For more information, see `Application Signals <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html>`__ in the *Amazon CloudWatch User Guide*.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
**To return information about a service discovered by Application Signals**
|
|
2
|
+
|
|
3
|
+
The following ``get-service`` example returns information about a service discovered by Application Signals. ::
|
|
4
|
+
|
|
5
|
+
aws application-signals get-service \
|
|
6
|
+
--start-time 1732704000 \
|
|
7
|
+
--end-time 1732714500 \
|
|
8
|
+
--key-attributes Environment=lambda:default,Name=hello-world-python,Type=Service
|
|
9
|
+
|
|
10
|
+
Output::
|
|
11
|
+
|
|
12
|
+
{
|
|
13
|
+
"Service": {
|
|
14
|
+
"KeyAttributes": {
|
|
15
|
+
"Environment": "lambda:default",
|
|
16
|
+
"Name": "hello-world-python",
|
|
17
|
+
"Type": "Service"
|
|
18
|
+
},
|
|
19
|
+
"AttributeMaps": [{
|
|
20
|
+
"Lambda.Function.Name": "hello-world-python",
|
|
21
|
+
"PlatformType": "AWS::Lambda"
|
|
22
|
+
}],
|
|
23
|
+
"MetricReferences": [{
|
|
24
|
+
"Namespace": "ApplicationSignals",
|
|
25
|
+
"MetricType": "LATENCY",
|
|
26
|
+
"Dimensions": [{
|
|
27
|
+
"Name": "Environment",
|
|
28
|
+
"Value": "lambda:default"
|
|
29
|
+
}, {
|
|
30
|
+
"Name": "Service",
|
|
31
|
+
"Value": "hello-world-python"
|
|
32
|
+
}],
|
|
33
|
+
"MetricName": "Latency"
|
|
34
|
+
}, {
|
|
35
|
+
"Namespace": "ApplicationSignals",
|
|
36
|
+
"MetricType": "FAULT",
|
|
37
|
+
"Dimensions": [{
|
|
38
|
+
"Name": "Environment",
|
|
39
|
+
"Value": "lambda:default"
|
|
40
|
+
}, {
|
|
41
|
+
"Name": "Service",
|
|
42
|
+
"Value": "hello-world-python"
|
|
43
|
+
}],
|
|
44
|
+
"MetricName": "Fault"
|
|
45
|
+
}, {
|
|
46
|
+
"Namespace": "ApplicationSignals",
|
|
47
|
+
"MetricType": "ERROR",
|
|
48
|
+
"Dimensions": [{
|
|
49
|
+
"Name": "Environment",
|
|
50
|
+
"Value": "lambda:default"
|
|
51
|
+
}, {
|
|
52
|
+
"Name": "Service",
|
|
53
|
+
"Value": "hello-world-python"
|
|
54
|
+
}],
|
|
55
|
+
"MetricName": "Error"
|
|
56
|
+
}],
|
|
57
|
+
"LogGroupReferences": [{
|
|
58
|
+
"Identifier": "/aws/lambda/hello-world-python",
|
|
59
|
+
"ResourceType": "AWS::Logs::LogGroup",
|
|
60
|
+
"Type": "AWS::Resource"
|
|
61
|
+
}]
|
|
62
|
+
},
|
|
63
|
+
"StartTime": "2024-11-27T10:00:00+00:00",
|
|
64
|
+
"EndTime": "2024-11-27T14:00:01+00:00",
|
|
65
|
+
"LogGroupReferences": [{
|
|
66
|
+
"Identifier": "/aws/lambda/hello-world-python",
|
|
67
|
+
"ResourceType": "AWS::Logs::LogGroup",
|
|
68
|
+
"Type": "AWS::Resource"
|
|
69
|
+
}]
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
For more information, see `Application Signals <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html>`__ in the *Amazon CloudWatch User Guide*.
|