MCPcopy Index your code
hub / github.com/aws/aws-lambda-rust-runtime / register

Function register

lambda-extension/src/extension.rs:561–606  ·  view source on GitHub ↗

Initialize and register the extension in the Extensions API

(
    client: &'a Client,
    extension_name: Option<&'a str>,
    events: Option<&'a [&'a str]>,
)

Source from the content-addressed store, hash-verified

559
560/// Initialize and register the extension in the Extensions API
561async fn register<'a>(
562 client: &'a Client,
563 extension_name: Option<&'a str>,
564 events: Option<&'a [&'a str]>,
565) -> Result<RegisterResponse, Error> {
566 let name = match extension_name {
567 Some(name) => name.into(),
568 None => {
569 let args: Vec<String> = std::env::args().collect();
570 PathBuf::from(args[0].clone())
571 .file_name()
572 .expect("unexpected executable name")
573 .to_str()
574 .expect("unexpect executable name")
575 .to_string()
576 }
577 };
578
579 let events = events.unwrap_or(&["INVOKE", "SHUTDOWN"]);
580
581 let req = requests::register_request(&name, events)?;
582 let res = client.call(req).await?;
583 if !res.status().is_success() {
584 let err = format!("unable to register the extension: {}", res.status());
585 return Err(ExtensionError::boxed(err));
586 }
587
588 let header = res
589 .headers()
590 .get(requests::EXTENSION_ID_HEADER)
591 .ok_or_else(|| ExtensionError::boxed("missing extension id header"))
592 .map_err(|e| ExtensionError::boxed(e.to_string()))?;
593 let extension_id = header.to_str()?.to_string();
594
595 let (_, body) = res.into_parts();
596 let body = body.collect().await?.to_bytes();
597 let response: RegisterResponseBody = serde_json::from_slice(&body)?;
598
599 Ok(RegisterResponse {
600 extension_id,
601 function_name: response.function_name,
602 function_version: response.function_version,
603 handler: response.handler,
604 account_id: response.account_id,
605 })
606}

Callers 1

registerMethod · 0.85

Calls 6

register_requestFunction · 0.85
boxedFunction · 0.85
collectMethod · 0.80
into_partsMethod · 0.80
cloneMethod · 0.45
callMethod · 0.45

Tested by

no test coverage detected