///
import * as pulumi from "@pulumi/pulumi";
import { Account } from "./account";
import { Blob } from "./blob";
import { Container } from "./container";
import { Queue } from "./queue";
import { Table } from "./table";
import * as appservice from "../appservice";
import * as core from "../core";
import * as storage from "../storage";
/**
* Produce a URL with read-only access to a Storage Blob with a Shared Access Signature (SAS).
* @param blob Blob to construct URL for.
* @param account Storage account.
*/
export declare function signedBlobReadUrl(blob: Blob, account: Account): pulumi.Output;
interface BlobBindingDefinition extends appservice.BindingDefinition {
/**
* The name of the property in the context object to bind the actual blob value to. Not really
* important in our implementation as the blob value will be passed as the second argument to
* the callback function.
*/
name: string;
/**
* The path to the blob we want to create a trigger for.
*/
path: pulumi.Input;
/**
* The storage connection string for the storage account containing the blob.
*/
connection: pulumi.Input;
/**
* How we want the blob represented when passed into the callback. We specify 'binary'
* so that all data is passed in as a buffer. Otherwise, Azure will attempt to sniff
* the content and convert it accordingly. This gives us a consistent way to know what
* data will be passed into the function.
*/
dataType: "binary";
}
export interface BlobInputBindingDefinition extends BlobBindingDefinition {
/**
* The type of a blob binding. Must be 'blob'.
*/
type: "blob";
/**
* The direction of the binding. Must be set to 'in' for an input binding.
*/
direction: "in";
}
/**
* Data that will be passed along in the context object to the BlobCallback.
*/
export interface BlobContext extends appservice.Context {
executionContext: {
invocationId: string;
functionName: string;
functionDirectory: string;
};
bindingData: {
blobTrigger: string;
uri: string;
properties: {
cacheControl: any;
contentDisposition: any;
contentEncoding: any;
contentLanguage: any;
length: number;
contentMD5: any;
contentType: string;
eTag: string;
lastModified: string;
blobType: string;
leaseStatus: string;
leaseState: string;
leaseDuration: string;
pageBlobSequenceNumber: any;
appendBlobCommittedBlockCount: any;
isServerEncrypted: boolean;
};
metadata: Record;
blobName: string;
sys: {
methodName: string;
utcNow: string;
};
invocationId: string;
};
}
/**
* Signature of the callback that can receive blob notifications.
*/
export type BlobCallback = appservice.Callback;
export interface GetBlobFunctionArgs extends appservice.CallbackFunctionArgs {
/**
* An optional prefix or suffix to filter down notifications. See
* https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob#trigger---blob-name-patterns
* for more details.
*/
filterPrefix?: pulumi.Input;
filterSuffix?: pulumi.Input;
}
export interface BlobFunctionArgs extends GetBlobFunctionArgs {
/**
* Storage Blob Container to subscribe for events of.
*/
container: Container;
}
export interface BlobEventSubscriptionArgs extends GetBlobFunctionArgs, appservice.CallbackFunctionAppArgs {
/**
* The name of the resource group in which to create the event subscription. [resourceGroup] takes precedence over [resourceGroupName].
* If none of the two is supplied, the resource group of the Storage Account will be used.
*/
resourceGroupName?: pulumi.Input;
}
declare module "./container" {
interface Container {
/**
* Creates a new subscription to events fired from this Container to the handler provided, along
* with options to control the behavior of the subscription.
* A dedicated Function App is created behind the scenes with a single Azure Function in it.
* Use [getEventFunction] if you want to compose multiple Functions into the same App manually.
*/
onBlobEvent(name: string, args: BlobCallback | BlobEventSubscriptionArgs, opts?: pulumi.ComponentResourceOptions): BlobEventSubscription;
/**
* Creates a new Function triggered by events in the given Container using the callback provided.
* [getEventFunction] creates no Azure resources automatically: the returned Function should be used as part of
* a [MultiCallbackFunctionApp]. Use [onEvent] if you want to create a Function App with a single Function.
*/
getEventFunction(name: string, args: BlobCallback | GetBlobFunctionArgs): BlobFunction;
/**
* Creates an input binding linked to the given Blob Container to be used for an Azure Function.
*/
input(name: string, args: BlobInputBindingArgs): appservice.InputBindingSettings;
}
}
export declare class BlobEventSubscription extends appservice.EventSubscription {
constructor(name: string, container: storage.Container, args: BlobEventSubscriptionArgs, opts?: pulumi.ComponentResourceOptions);
}
/**
* Azure Function triggered by changes in a Storage Blob Container.
*/
export declare class BlobFunction extends appservice.Function {
constructor(name: string, args: BlobFunctionArgs);
}
export interface BlobInputBindingArgs {
/**
* Blob name to retrieve. May contain a binding expression to bind to a value from a trigger.
*/
readonly blobName: pulumi.Input;
}
export declare class BlobInputBinding implements appservice.InputBindingSettings {
readonly binding: pulumi.Input;
readonly settings: pulumi.Input<{
[key: string]: any;
}>;
constructor(name: string, container: Container, args: BlobInputBindingArgs);
}
interface QueueBindingDefinition extends appservice.BindingDefinition {
/**
* The name of the property in the context object to bind the actual queue message to. Not really
* important in our implementation as the queue message will be passed as the second argument to
* the callback function.
*/
name: string;
/**
* The name of the storage queue to listen to.
*/
queueName: pulumi.Input;
/**
* The storage connection string for the storage account containing the queue.
*/
connection: pulumi.Input;
}
interface QueueOutputBindingDefinition extends QueueBindingDefinition {
/**
* The type of a queue binding. Must be 'queue'.
*/
type: "queue";
/**
* The direction of the binding. Output bindings must have 'out'.
*/
direction: "out";
}
/**
* Data that will be passed along in the context object to the QueueContext.
*/
export interface QueueContext extends appservice.Context {
executionContext: {
invocationId: string;
functionName: string;
functionDirectory: string;
};
bindingData: {
queueTrigger: string;
dequeueCount: number;
expirationTime: string;
id: string;
insertionTime: string;
nextVisibleTime: string;
popReceipt: string;
sys: {
methodName: string;
utcNow: string;
};
invocationId: string;
};
}
/**
* Host settings specific to the Storage Queue plugin.
*
* For more details see
* https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue#host-json
*/
export interface QueueHostExtensions {
/** The maximum interval between queue polls. Minimum is 00:00:00.100 (100 ms). */
maxPollingInterval?: string;
/** The time interval between retries when processing of a message fails. */
visibilityTimeout?: string;
/** The number of queue messages that the Functions runtime retrieves simultaneously and processes in parallel. */
batchSize?: number;
/** The number of times to try processing a message before moving it to the poison queue. */
maxDequeueCount?: number;
/**
* Whenever the number of messages being processed concurrently gets down to this number, the runtime
* retrieves another batch.
*/
newBatchThreshold?: number;
}
export interface QueueHostSettings extends appservice.HostSettings {
extensions?: {
queues: QueueHostExtensions;
};
}
/**
* Signature of the callback that can receive queue notifications.
*/
export type QueueCallback = appservice.Callback;
export interface QueueFunctionArgs extends appservice.CallbackFunctionArgs {
/**
* Defines the queue to trigger the function.
*/
queue: Queue;
/**
* Specify 'string' to get messages as a string, or a parsed object if the message is a valid JSON literal.
* Specify 'binary' for all data to be passed in as a Buffer.
* Default is 'string'.
*/
dataType?: "binary" | "string";
}
export interface QueueEventSubscriptionArgs extends appservice.CallbackFunctionAppArgs {
/**
* The resource group in which to create the event subscription. If not supplied, the
* Queue's resource group will be used.
*/
resourceGroup?: core.ResourceGroup;
/**
* The name of the resource group in which to create the event subscription. [resourceGroup] takes precedence
* over [resourceGroupName]. If none of the two is supplied, the resource group of the Storage Account will be used.
*/
resourceGroupName?: pulumi.Input;
/**
* Host settings specific to the Storage Queue plugin. These values can be provided here, or defaults will
* be used in their place.
*/
hostSettings?: QueueHostSettings;
/**
* Specify 'string' to get messages as a string, or a parsed object if the message is a valid JSON literal.
* Specify 'binary' for all data to be passed in as a Buffer.
* Default is 'string'.
*/
dataType?: "binary" | "string";
}
declare module "./queue" {
interface Queue {
/**
* Creates a new subscription to the given queue using the callback provided, along with
* optional options to control the behavior of the subscription.
* A dedicated Function App is created behind the scenes with a single Azure Function in it.
* Use [getEventFunction] if you want to compose multiple Functions into the same App manually.
*/
onEvent(name: string, args: QueueCallback | QueueEventSubscriptionArgs, opts?: pulumi.ComponentResourceOptions): QueueEventSubscription;
/**
* Creates a new Function triggered by messages in the given queue using the callback provided.
* [getEventFunction] creates no Azure resources automatically: the returned Function should be used as part of
* a [MultiCallbackFunctionApp]. Use [onEvent] if you want to create a Function App with a single Function.
*/
getEventFunction(name: string, args: QueueCallback | appservice.CallbackFunctionArgs): QueueFunction;
/**
* Creates an output binding linked to the given queue to be used for an Azure Function.
*/
output(name: string): appservice.OutputBindingSettings;
}
}
export declare class QueueEventSubscription extends appservice.EventSubscription {
constructor(name: string, queue: Queue, args: QueueEventSubscriptionArgs, opts?: pulumi.ComponentResourceOptions);
}
/**
* Azure Function triggered by a Storage Queue.
*/
export declare class QueueFunction extends appservice.Function {
constructor(name: string, args: QueueFunctionArgs);
}
/**
* Azure Function's output binding that sends messages to a Storage Queue.
*/
export declare class QueueOutputBinding implements appservice.OutputBindingSettings {
readonly binding: pulumi.Input;
readonly settings: pulumi.Input<{
[key: string]: any;
}>;
constructor(name: string, queue: Queue);
}
interface TableBindingDefinition extends appservice.BindingDefinition {
/**
* The name of the property in the context object to bind the actual table rows to.
*/
name: string;
/**
* The type of a table binding. Must be 'table'.
*/
type: "table";
/**
* The name of the table.
*/
tableName: pulumi.Input;
/**
* The storage connection string for the storage account containing the blob.
*/
connection: pulumi.Input;
/**
* The partition key of the table entity.
*/
partitionKey?: string;
/**
* The row key of the table entity.
*/
rowKey?: string;
}
interface TableInputBindingDefinition extends TableBindingDefinition {
/**
* The direction of the binding. Must be 'in' for an input binding.
*/
direction: "in";
/**
* An OData filter expression for table input.
*/
filter?: pulumi.Input;
/**
* The maximum number of entities to read.
*/
take?: pulumi.Input;
}
interface TableOutputBindingDefinition extends TableBindingDefinition {
/**
* The direction of the binding. Must be 'out' for an output binding.
*/
direction: "out";
}
export interface TableInputBindingArgs {
/**
* The partition key of the table entity.
*/
partitionKey?: string;
/**
* The row key of the table entity.
*/
rowKey?: string;
/**
* An OData filter expression for table input.
*/
filter?: pulumi.Input;
/**
* The maximum number of entities to read.
*/
take?: pulumi.Input;
}
export declare class TableInputBinding implements appservice.InputBindingSettings {
readonly binding: pulumi.Input;
readonly settings: pulumi.Input<{
[key: string]: any;
}>;
constructor(name: string, table: Table, args?: TableInputBindingArgs);
}
export declare class TableOutputBinding implements appservice.OutputBindingSettings {
readonly binding: pulumi.Input;
readonly settings: pulumi.Input<{
[key: string]: any;
}>;
constructor(name: string, table: Table);
}
declare module "./table" {
interface Table {
/**
* Creates an input binding linked to the given table to be used for an Azure Function.
*/
input(name: string, args?: TableInputBindingArgs): appservice.InputBindingSettings;
/**
* Creates an output binding linked to the given table to be used for an Azure Function.
*/
output(name: string): appservice.OutputBindingSettings;
}
}
export {};