Zuplo Changelog
We release improvements, new features, and fixes daily. Follow along here to see the most important updates.
Custom Fields Available on All Logging Policies
A new fields
option is now available across all
logging plugins. This addition
enables you to append arbitrary custom fields to each log entry, providing
additional context and information in your logs.
For example, using our Google Cloud Logging plugin:
import {
RuntimeExtensions,
GoogleCloudLoggingPlugin,
environment,
} from "@zuplo/runtime";
export function runtimeInit(runtime: RuntimeExtensions) {
runtime.addPlugin(
new GoogleCloudLoggingPlugin({
logName: "projects/my-project/logs/my-api",
serviceAccountJson: environment.GCP_SERVICE_ACCOUNT,
fields: {
myCustomField: "value",
anotherCustomField: "value2",
},
}),
);
}
You can use this feature to include relevant metadata, application-specific details, or contextual information that may be useful for debugging or analysis purposes.
Zuplo Release v6.40.0
This release includes improvements to logging stability and performance.
Bug Fixes 🐛#
-
Fixed OpenTelemetry fetch instrumentation issue - Resolved an issue with OpenTelemetry outgoing fetch instrumentation that could cause unexpected behavior in distributed tracing. This fix ensures proper trace context propagation for outgoing HTTP requests.
-
Improved log ordering - Fixed an issue where logs could appear out of order in certain scenarios. Logs now maintain their correct chronological sequence for better debugging and monitoring.
Zuplo Identity Token
The Zuplo Identity Token is a new feature that allows developers to create a JWT token that uniquely and securely identifies their Zuplo API. This token can be used to authenticate downstream services or third-party APIs, enabling secure communication between services without the need for additional authentication mechanisms or sharing of sensitive credentials.
The Zuplo Identity Token is a JSON Web Token (JWT) that contains information about the Zuplo API that it represents. This token is signed by Zuplo and can be verified by downstream services or third-party APIs to ensure its authenticity and integrity.
The token contains claims for the Zuplo account
, project
, and deployment
that can be used to uniquely identify the API and its associated resources. See
the
Zuplo Identity Token documentation
for more information.
Using the Token#
Developers can access the Zuplo Identity Token in their code by calling the
ZuploServices
API. A custom audience
can be provided to the token to ensure
that it is only usable by the intended downstream service. Multiple tokens with
different audiences can be created and caching is managed by Zuplo to ensure
high performance.
import { ZuploServices, ZuploContext, ZuploRequest } from "@zuplo/runtime";
export default async function handler(
request: ZuploRequeset,
context: ZuploContext,
) {
const idToken = await ZuploServices.getIDToken(context, {
audience: "https://my-api.example.com",
});
const response = await fetch("https://my-api.example.com", {
headers: {
Authorization: `Bearer ${idToken}`,
},
});
}
Federated Identity increases the security of your Zuplo API by removing the need to share sensitive service account keys with your Zuplo API. Instead, Zuplo will use the Zuplo Identity Token to authenticate with Google Cloud Services on your behalf.
A new policy has been added to Zuplo that enables Federated Identity with Google Cloud Services. By utilizing this policy developers can secure their GCP API or other Google Cloud Resources (Storage, Pub/Sub, etc.) with GCP IAM and allow Zuplo to call these services on their behalf.
Federated Identity with GCP is available as a paid-addon to customers on enterprise plans. Contact your account manager or sales@zuplo.com to inquire about pricing.
For more information on how to configure Federated Identity with GCP, see the Federated Identity with GCP documentation.
API Monetization Enhancements
Over the past month, we have made several improvements to the API Monetization beta:
-
Better Error Handling for Stripe Webhooks: We have improved the error handling for Stripe webhooks to ensure more robust and reliable operation.
-
Improved Documentation: We have updated and expanded the documentation to provide clearer and more comprehensive guidance.
-
Additional Logging: We have added more logging to help diagnose and troubleshoot issues more effectively.
-
Editable Plans: We have made plans editable, allowing developers to modify quotas or fix misconfigurations as needed.
These improvements are part of our ongoing effort to refine and enhance the API Monetization beta. We have more enhancements planned before the General Availability (GA) release, and we aim to stabilize the feature in the next month.
We added a new plugin for API Brownouts, which allows developers to simulate outages of their API. This is useful for migrating users off of old versions of their API. You can read more about API Brownouts in our blog post here.
To learn more, please view our Policy documentation.