def aws_sign_request(http_request, signing_config): """ Perform AWS HTTP request signing. The :class:`awscrt.http.HttpRequest` is transformed asynchronously, according to the :class:`AwsSigningConfig`. When signing: 1. It is good practice to use a new config for each signature, or the date might get too old. 2. Do not add the following headers to requests before signing, they may be added by the signer: x-amz-content-sha256, X-Amz-Date, Authorization 3. Do not add the following query params to requests before signing, they may be added by the signer: X-Amz-Signature, X-Amz-Date, X-Amz-Credential, X-Amz-Algorithm, X-Amz-SignedHeaders Args: http_request (awscrt.http.HttpRequest): The HTTP request to sign. signing_config (AwsSigningConfig): Configuration for signing. Returns: concurrent.futures.Future: A Future whose result will be the signed :class:`awscrt.http.HttpRequest`. The future will contain an exception if the signing process fails. """ assert isinstance(http_request, HttpRequest) assert isinstance(signing_config, AwsSigningConfig) future = Future() def _on_complete(error_code): try: if error_code: future.set_exception(awscrt.exceptions.from_code(error_code)) else: future.set_result(http_request) except Exception as e: future.set_exception(e) _awscrt.sign_request_aws(http_request, signing_config, _on_complete) return future
def aws_sign_request(http_request, signing_config): """ Perform AWS HTTP request signing. The HttpRequest is transformed asynchronously, according to the AwsSigningConfig. Returns a Future whose result will be the signed HttpRequest. When signing: (1) It is good practice to use a new config for each signature, or the date might get too old. (2) Do not add the following headers to requests before signing, they may be added by the signer: x-amz-content-sha256, X-Amz-Date, Authorization (3) Do not add the following query params to requests before signing, they may be added by the signer: X-Amz-Signature, X-Amz-Date, X-Amz-Credential, X-Amz-Algorithm, X-Amz-SignedHeaders """ assert isinstance(http_request, HttpRequest) assert isinstance(signing_config, AwsSigningConfig) future = Future() def _on_complete(error_code): try: if error_code: future.set_exception(awscrt.exceptions.from_code(error_code)) else: future.set_result(http_request) except Exception as e: future.set_exception(e) _awscrt.sign_request_aws(http_request, signing_config, _on_complete) return future