Skip to content

When value of key attribute is null, CLI writes a stack trace to stdout #94

@juneb

Description

@juneb

We should trap this error.

(py) PS C:\ps-test> $cmkArn
(py) PS C:\ps-test>


(py) PS C:\ps-test> aws-crypto --encrypt `
>>                    --input C:\Windows\Logs --recursive `
>>                    --output C:\ps-test\Archive --suffix '.archive' `
>>                    --master-keys key=$cmkARN `
>>                    --encryption-context class=log `
>>                    --suppress-metadata `
>>                    --caching capacity=1 max_age=10 max_messages_encrypted=10 `
>>                    -vv
>>
2017-11-16 19:44:18,574 - MainThread - aws_encryption_sdk_cli - DEBUG - Encryption mode: encrypt
2017-11-16 19:44:18,575 - MainThread - aws_encryption_sdk_cli - DEBUG - Encryption source: C:\Windows\Logs
2017-11-16 19:44:18,576 - MainThread - aws_encryption_sdk_cli - DEBUG - Encryption destination: C:\ps-test\Archive
2017-11-16 19:44:18,576 - MainThread - aws_encryption_sdk_cli - DEBUG - Master key provider configuration: [{'key': [''], 'provider': 'aws-encryption-sdk-cli::
aws-kms'}]
2017-11-16 19:44:18,576 - MainThread - aws_encryption_sdk_cli - DEBUG - Suffix requested: .archive
2017-11-16 19:44:18,577 - MainThread - aws_encryption_sdk_cli - DEBUG - Loading provider: aws-encryption-sdk-cli::aws-kms
2017-11-16 19:44:18,577 - MainThread - aws_encryption_sdk_cli - DEBUG - Discovering master key provider plugins
2017-11-16 19:44:18,605 - MainThread - aws_encryption_sdk_cli - INFO - Collecting plugin "aws-kms" registered by "aws-encryption-sdk-cli 1.0.2.5"
2017-11-16 19:44:18,605 - MainThread - aws_encryption_sdk_cli - DEBUG - Plugin details: {'name': 'aws-kms', 'module_name': 'aws_encryption_sdk_cli.key_provider
s', 'attrs': ('aws_kms_master_key_provider',), 'extras': (), 'dist': aws-encryption-sdk-cli 1.0.2.5 (c:\py\lib\site-packages)}
2017-11-16 19:44:18,702 - MainThread - aws_encryption_sdk_cli - DEBUG - Requested source: C:\Windows\Logs
2017-11-16 19:44:18,702 - MainThread - aws_encryption_sdk_cli - DEBUG - Expanded source: ['C:\\Windows\\Logs']
2017-11-16 19:44:18,703 - MainThread - aws_encryption_sdk_cli - DEBUG - encrypting directory C:\Windows\Logs to C:\ps-test\Archive
2017-11-16 19:44:18,703 - MainThread - aws_encryption_sdk_cli - DEBUG - Using custom suffix ".archive" to create target file
2017-11-16 19:44:18,704 - MainThread - aws_encryption_sdk_cli - DEBUG - Duplicating filename CBS.log into C:\ps-test\Archive\CBS
2017-11-16 19:44:18,704 - MainThread - aws_encryption_sdk_cli - INFO - encrypting file C:\Windows\Logs\CBS\CBS.log to C:\ps-test\Archive\CBS\CBS.log.archive
--- Logging error ---
Traceback (most recent call last):
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\__init__.py", line 266, in cli
    process_cli_request(stream_args, args)
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\__init__.py", line 193, in process_cli_request
    suffix=parsed_args.suffix
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\internal\io_handling.py", line 371, in process_dir
    destination=destination_filename
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\internal\io_handling.py", line 331, in process_single_file
    destination=destination
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\internal\io_handling.py", line 261, in process_single_operation
    destination_writer=destination_writer
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\internal\io_handling.py", line 202, in _single_io_write
    header=json_ready_header(handler.header)
  File "c:\py\lib\site-packages\aws_encryption_sdk\streaming_client.py", line 174, in header
    self._prep_message()
  File "c:\py\lib\site-packages\aws_encryption_sdk\streaming_client.py", line 404, in _prep_message
    request=encryption_materials_request
  File "c:\py\lib\site-packages\aws_encryption_sdk\materials_managers\caching.py", line 219, in get_encryption_materials
    new_result = self.backing_materials_manager.get_encryption_materials(inner_request)
  File "c:\py\lib\site-packages\aws_encryption_sdk\materials_managers\default.py", line 94, in get_encryption_materials
    encryption_context=encryption_context
  File "c:\py\lib\site-packages\aws_encryption_sdk\internal\utils\__init__.py", line 111, in prepare_data_keys
    data_encryption_key = primary_master_key.generate_data_key(algorithm, encryption_context)
  File "c:\py\lib\site-packages\aws_encryption_sdk\key_providers\base.py", line 443, in generate_data_key
    encryption_context=encryption_context
  File "c:\py\lib\site-packages\aws_encryption_sdk\key_providers\kms.py", line 227, in _generate_data_key
    response = self.config.client.generate_data_key(**kms_params)
  File "c:\py\lib\site-packages\botocore\client.py", line 312, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "c:\py\lib\site-packages\botocore\client.py", line 579, in _make_api_call
    api_params, operation_model, context=request_context)
  File "c:\py\lib\site-packages\botocore\client.py", line 634, in _convert_to_request_dict
    api_params, operation_model)
  File "c:\py\lib\site-packages\botocore\validate.py", line 291, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid length for parameter KeyId, value: 0, valid range: 1-inf

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\junebl\AppData\Local\Programs\Python\Python36-32\Lib\logging\__init__.py", line 992, in emit
    msg = self.format(record)
  File "C:\Users\junebl\AppData\Local\Programs\Python\Python36-32\Lib\logging\__init__.py", line 838, in format
    return fmt.format(record)
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\internal\logging_utils.py", line 131, in format
    _record = self.__redact_record(record)
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\internal\logging_utils.py", line 117, in __redact_record
    _record = copy.deepcopy(record)
  File "c:\py\lib\copy.py", line 180, in deepcopy
    y = _reconstruct(x, memo, *rv)
  File "c:\py\lib\copy.py", line 280, in _reconstruct
    state = deepcopy(state, memo)
  File "c:\py\lib\copy.py", line 150, in deepcopy
    y = copier(x, memo)
  File "c:\py\lib\copy.py", line 240, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "c:\py\lib\copy.py", line 150, in deepcopy
    y = copier(x, memo)
  File "c:\py\lib\copy.py", line 220, in _deepcopy_tuple
    y = [deepcopy(a, memo) for a in x]
  File "c:\py\lib\copy.py", line 220, in <listcomp>
    y = [deepcopy(a, memo) for a in x]
  File "c:\py\lib\copy.py", line 180, in deepcopy
    y = _reconstruct(x, memo, *rv)
  File "c:\py\lib\copy.py", line 274, in _reconstruct
    y = func(*args)
TypeError: __init__() takes 1 positional argument but 2 were given
Call stack:
  File "C:\Users\junebl\AppData\Local\Programs\Python\Python36-32\Lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Users\junebl\AppData\Local\Programs\Python\Python36-32\Lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\py\Scripts\aws-crypto.exe\__main__.py", line 9, in <module>
    sys.exit(cli())
  File "c:\py\lib\site-packages\aws_encryption_sdk_cli\__init__.py", line 273, in cli
    _LOGGER.exception(message)
Message: 'Encountered unexpected ParamValidationError: increase verbosity to see details'
Arguments: ()
Encountered unexpected ParamValidationError: increase verbosity to see details

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions