Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerPDK は、ポリシー、Flex インスタンス、API インスタンス、および Anypoint Organization に関するメタデータを提供する Metadata Injectable を提供します。Metadata 構造体は次のようになります。
pub struct Metadata {
pub flex_metadata: FlexMetadata,
pub policy_metadata: PolicyMetadata,
pub api_metadata: ApiMetadata,
pub platform_metadata: PlatformMetadata,
}
Metadata 構造体は、以下の構造体を参照しています。
FlexMetadata:
pub struct FlexMetadata {
pub flex_name: String,
pub flex_version: String,
}
PolicyMetadata:
pub struct PolicyMetadata {
pub policy_name: String,
pub policy_namespace: String,
}
ApiMetadata:
pub struct ApiMetadata {
pub id: Option<String>,
pub name: Option<String>,
pub version: Option<String>,
pub slas: Option<Vec<ApiSla>>, // API SLA tiers in the platform
}
// Each ApiSla contains the limits for each SLA.
pub struct ApiSla {
pub id: String,
pub tiers: Vec<Tier>, // Limits within an API SLA tier in the platform
}
PlatformMetadata:
pub struct PlatformMetadata {
pub organization_id: String,
pub environment_id: String,
pub root_organization_id: String,
}
メタデータを #[entrypoint] 設定関数に挿入するには、以下のコードスニペットを参照してください。
#[entrypoint]
async fn configure(launcher: Launcher, metadata: Metadata) -> Result<()> {
logger::info!("Flex instance name is: {}", metadata.flex_metadata.flex_name.to_string());
launcher
.launch(on_request(filter))
.await?;
Ok(())
}
ラップされた関数にメタデータを直接挿入することはできません。ラップされた関数でメタデータを使用するには、まず #[entrypoint] 関数にデータを挿入してから、ラップされた関数にデータを挿入します。
#[entrypoint]
async fn configure(launcher: Launcher, metadata: Metadata) -> Result<()> {
launcher
.launch(on_request(|r| request_filter(r, &metadata)))
.await?;
Ok(())
}
async fn request_filter(_: RequestState, metadata: &Metadata) -> Flow<()> {
let mut vec = Vec::new();
let headers = &mut vec;
headers.push((
"flex_name".to_string(),
metadata.flex_metadata.flex_name.to_string(),
));
headers.push((
"policy_name".to_string(),
metadata.policy_metadata.policy_name.to_string(),
));
Flow::Break(Response::new(201).with_headers(vec))
}