Module aws_sigv4::http_request

source ·
Expand description

Utilities to sign HTTP requests.

§Example: Signing an HTTP request

Note: This requires http0-compat to be enabled.

use aws_smithy_runtime_api::client::identity::Identity;
#[cfg(feature = "http1")]
fn test() -> Result<(), aws_sigv4::http_request::SigningError> {
use aws_sigv4::http_request::{sign, SigningSettings, SigningParams, SignableRequest};
use aws_sigv4::sign::v4;
use http0;
use std::time::SystemTime;

// Set up information and settings for the signing
// You can obtain credentials from `SdkConfig`.
let identity = Credentials::new(
    "AKIDEXAMPLE",
    "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY",
    None,
    None,
    "hardcoded-credentials"
).into();
let signing_settings = SigningSettings::default();
let signing_params = v4::SigningParams::builder()
    .identity(&identity)
    .region("us-east-1")
    .name("exampleservice")
    .time(SystemTime::now())
    .settings(signing_settings)
    .build()
    .unwrap()
    .into();
// Convert the HTTP request into a signable request
let signable_request = SignableRequest::new(
    "GET",
    "https://some-endpoint.some-region.amazonaws.com",
    std::iter::empty(),
    SignableBody::Bytes(&[])
).expect("signable request");

let mut my_req = http::Request::new("...");
// Sign and then apply the signature to the request
let (signing_instructions, _signature) = sign(signable_request, &signing_params)?.into_parts();
signing_instructions.apply_to_request_http1x(&mut my_req);

Structs§

Enums§

Functions§

  • Produces a signature for the given request and returns instructions that can be used to apply that signature to an HTTP request.