All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.storage.kotlin.StorageFunctions.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 6.14.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.storage.kotlin

import com.pulumi.azure.storage.StorageFunctions.getAccountBlobContainerSASPlain
import com.pulumi.azure.storage.StorageFunctions.getAccountPlain
import com.pulumi.azure.storage.StorageFunctions.getAccountSASPlain
import com.pulumi.azure.storage.StorageFunctions.getBlobPlain
import com.pulumi.azure.storage.StorageFunctions.getContainersPlain
import com.pulumi.azure.storage.StorageFunctions.getEncryptionScopePlain
import com.pulumi.azure.storage.StorageFunctions.getPolicyPlain
import com.pulumi.azure.storage.StorageFunctions.getSharePlain
import com.pulumi.azure.storage.StorageFunctions.getStorageContainerPlain
import com.pulumi.azure.storage.StorageFunctions.getSyncGroupPlain
import com.pulumi.azure.storage.StorageFunctions.getSyncPlain
import com.pulumi.azure.storage.StorageFunctions.getTableEntitiesPlain
import com.pulumi.azure.storage.StorageFunctions.getTableEntityPlain
import com.pulumi.azure.storage.kotlin.inputs.GetAccountBlobContainerSASPermissions
import com.pulumi.azure.storage.kotlin.inputs.GetAccountBlobContainerSASPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetAccountBlobContainerSASPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetAccountPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetAccountPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetAccountSASPermissions
import com.pulumi.azure.storage.kotlin.inputs.GetAccountSASPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetAccountSASPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetAccountSASResourceTypes
import com.pulumi.azure.storage.kotlin.inputs.GetAccountSASServices
import com.pulumi.azure.storage.kotlin.inputs.GetBlobPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetBlobPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetContainersPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetContainersPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetEncryptionScopePlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetEncryptionScopePlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetPolicyPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetPolicyPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetShareAcl
import com.pulumi.azure.storage.kotlin.inputs.GetSharePlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetSharePlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetStorageContainerPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetStorageContainerPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetSyncGroupPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetSyncGroupPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetSyncPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetSyncPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetTableEntitiesPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetTableEntitiesPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.inputs.GetTableEntityPlainArgs
import com.pulumi.azure.storage.kotlin.inputs.GetTableEntityPlainArgsBuilder
import com.pulumi.azure.storage.kotlin.outputs.GetAccountBlobContainerSASResult
import com.pulumi.azure.storage.kotlin.outputs.GetAccountResult
import com.pulumi.azure.storage.kotlin.outputs.GetAccountSASResult
import com.pulumi.azure.storage.kotlin.outputs.GetBlobResult
import com.pulumi.azure.storage.kotlin.outputs.GetContainersResult
import com.pulumi.azure.storage.kotlin.outputs.GetEncryptionScopeResult
import com.pulumi.azure.storage.kotlin.outputs.GetPolicyResult
import com.pulumi.azure.storage.kotlin.outputs.GetShareResult
import com.pulumi.azure.storage.kotlin.outputs.GetStorageContainerResult
import com.pulumi.azure.storage.kotlin.outputs.GetSyncGroupResult
import com.pulumi.azure.storage.kotlin.outputs.GetSyncResult
import com.pulumi.azure.storage.kotlin.outputs.GetTableEntitiesResult
import com.pulumi.azure.storage.kotlin.outputs.GetTableEntityResult
import kotlinx.coroutines.future.await
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import com.pulumi.azure.storage.kotlin.outputs.GetAccountBlobContainerSASResult.Companion.toKotlin as getAccountBlobContainerSASResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetAccountResult.Companion.toKotlin as getAccountResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetAccountSASResult.Companion.toKotlin as getAccountSASResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetBlobResult.Companion.toKotlin as getBlobResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetContainersResult.Companion.toKotlin as getContainersResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetEncryptionScopeResult.Companion.toKotlin as getEncryptionScopeResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetPolicyResult.Companion.toKotlin as getPolicyResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetShareResult.Companion.toKotlin as getShareResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetStorageContainerResult.Companion.toKotlin as getStorageContainerResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetSyncGroupResult.Companion.toKotlin as getSyncGroupResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetSyncResult.Companion.toKotlin as getSyncResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetTableEntitiesResult.Companion.toKotlin as getTableEntitiesResultToKotlin
import com.pulumi.azure.storage.kotlin.outputs.GetTableEntityResult.Companion.toKotlin as getTableEntityResultToKotlin

public object StorageFunctions {
    /**
     * Use this data source to access information about an existing Storage Account.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getAccount({
     *     name: "packerimages",
     *     resourceGroupName: "packer-storage",
     * });
     * export const storageAccountTier = example.then(example => example.accountTier);
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_account(name="packerimages",
     *     resource_group_name="packer-storage")
     * pulumi.export("storageAccountTier", example.account_tier)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetAccount.Invoke(new()
     *     {
     *         Name = "packerimages",
     *         ResourceGroupName = "packer-storage",
     *     });
     *     return new Dictionary
     *     {
     *         ["storageAccountTier"] = example.Apply(getAccountResult => getAccountResult.AccountTier),
     *     };
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		example, err := storage.LookupAccount(ctx, &storage.LookupAccountArgs{
     * 			Name:              "packerimages",
     * 			ResourceGroupName: pulumi.StringRef("packer-storage"),
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		ctx.Export("storageAccountTier", example.AccountTier)
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetAccountArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getAccount(GetAccountArgs.builder()
     *             .name("packerimages")
     *             .resourceGroupName("packer-storage")
     *             .build());
     *         ctx.export("storageAccountTier", example.applyValue(getAccountResult -> getAccountResult.accountTier()));
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getAccount
     *       Arguments:
     *         name: packerimages
     *         resourceGroupName: packer-storage
     * outputs:
     *   storageAccountTier: ${example.accountTier}
     * ```
     * 
     * @param argument A collection of arguments for invoking getAccount.
     * @return A collection of values returned by getAccount.
     */
    public suspend fun getAccount(argument: GetAccountPlainArgs): GetAccountResult =
        getAccountResultToKotlin(getAccountPlain(argument.toJava()).await())

    /**
     * @see [getAccount].
     * @param minTlsVersion The minimum supported TLS version for this storage account.
     * @param name Specifies the name of the Storage Account
     * @param resourceGroupName Specifies the name of the resource group the Storage Account is located in.
     * @return A collection of values returned by getAccount.
     */
    public suspend fun getAccount(
        minTlsVersion: String? = null,
        name: String,
        resourceGroupName: String? = null,
    ): GetAccountResult {
        val argument = GetAccountPlainArgs(
            minTlsVersion = minTlsVersion,
            name = name,
            resourceGroupName = resourceGroupName,
        )
        return getAccountResultToKotlin(getAccountPlain(argument.toJava()).await())
    }

    /**
     * @see [getAccount].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetAccountPlainArgs].
     * @return A collection of values returned by getAccount.
     */
    public suspend fun getAccount(argument: suspend GetAccountPlainArgsBuilder.() -> Unit):
        GetAccountResult {
        val builder = GetAccountPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getAccountResultToKotlin(getAccountPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to obtain a Shared Access Signature (SAS Token) for an existing Storage Account Blob Container.
     * Shared access signatures allow fine-grained, ephemeral access control to various aspects of an Azure Storage Account Blob Container.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const rg = new azure.core.ResourceGroup("rg", {
     *     name: "resourceGroupName",
     *     location: "West Europe",
     * });
     * const storage = new azure.storage.Account("storage", {
     *     name: "storageaccountname",
     *     resourceGroupName: rg.name,
     *     location: rg.location,
     *     accountTier: "Standard",
     *     accountReplicationType: "LRS",
     * });
     * const container = new azure.storage.Container("container", {
     *     name: "mycontainer",
     *     storageAccountName: storage.name,
     *     containerAccessType: "private",
     * });
     * const example = azure.storage.getAccountBlobContainerSASOutput({
     *     connectionString: storage.primaryConnectionString,
     *     containerName: container.name,
     *     httpsOnly: true,
     *     ipAddress: "168.1.5.65",
     *     start: "2018-03-21",
     *     expiry: "2018-03-21",
     *     permissions: {
     *         read: true,
     *         add: true,
     *         create: false,
     *         write: false,
     *         "delete": true,
     *         list: true,
     *     },
     *     cacheControl: "max-age=5",
     *     contentDisposition: "inline",
     *     contentEncoding: "deflate",
     *     contentLanguage: "en-US",
     *     contentType: "application/json",
     * });
     * export const sasUrlQueryString = example.apply(example => example.sas);
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * rg = azure.core.ResourceGroup("rg",
     *     name="resourceGroupName",
     *     location="West Europe")
     * storage = azure.storage.Account("storage",
     *     name="storageaccountname",
     *     resource_group_name=rg.name,
     *     location=rg.location,
     *     account_tier="Standard",
     *     account_replication_type="LRS")
     * container = azure.storage.Container("container",
     *     name="mycontainer",
     *     storage_account_name=storage.name,
     *     container_access_type="private")
     * example = azure.storage.get_account_blob_container_sas_output(connection_string=storage.primary_connection_string,
     *     container_name=container.name,
     *     https_only=True,
     *     ip_address="168.1.5.65",
     *     start="2018-03-21",
     *     expiry="2018-03-21",
     *     permissions=azure.storage.GetAccountBlobContainerSASPermissionsArgs(
     *         read=True,
     *         add=True,
     *         create=False,
     *         write=False,
     *         delete=True,
     *         list=True,
     *     ),
     *     cache_control="max-age=5",
     *     content_disposition="inline",
     *     content_encoding="deflate",
     *     content_language="en-US",
     *     content_type="application/json")
     * pulumi.export("sasUrlQueryString", example.sas)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var rg = new Azure.Core.ResourceGroup("rg", new()
     *     {
     *         Name = "resourceGroupName",
     *         Location = "West Europe",
     *     });
     *     var storage = new Azure.Storage.Account("storage", new()
     *     {
     *         Name = "storageaccountname",
     *         ResourceGroupName = rg.Name,
     *         Location = rg.Location,
     *         AccountTier = "Standard",
     *         AccountReplicationType = "LRS",
     *     });
     *     var container = new Azure.Storage.Container("container", new()
     *     {
     *         Name = "mycontainer",
     *         StorageAccountName = storage.Name,
     *         ContainerAccessType = "private",
     *     });
     *     var example = Azure.Storage.GetAccountBlobContainerSAS.Invoke(new()
     *     {
     *         ConnectionString = storage.PrimaryConnectionString,
     *         ContainerName = container.Name,
     *         HttpsOnly = true,
     *         IpAddress = "168.1.5.65",
     *         Start = "2018-03-21",
     *         Expiry = "2018-03-21",
     *         Permissions = new Azure.Storage.Inputs.GetAccountBlobContainerSASPermissionsInputArgs
     *         {
     *             Read = true,
     *             Add = true,
     *             Create = false,
     *             Write = false,
     *             Delete = true,
     *             List = true,
     *         },
     *         CacheControl = "max-age=5",
     *         ContentDisposition = "inline",
     *         ContentEncoding = "deflate",
     *         ContentLanguage = "en-US",
     *         ContentType = "application/json",
     *     });
     *     return new Dictionary
     *     {
     *         ["sasUrlQueryString"] = example.Apply(getAccountBlobContainerSASResult => getAccountBlobContainerSASResult.Sas),
     *     };
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		rg, err := core.NewResourceGroup(ctx, "rg", &core.ResourceGroupArgs{
     * 			Name:     pulumi.String("resourceGroupName"),
     * 			Location: pulumi.String("West Europe"),
     * 		})
     * 		if err != nil {
     * 			return err
     * 		}
     * 		storage, err := storage.NewAccount(ctx, "storage", &storage.AccountArgs{
     * 			Name:                   pulumi.String("storageaccountname"),
     * 			ResourceGroupName:      rg.Name,
     * 			Location:               rg.Location,
     * 			AccountTier:            pulumi.String("Standard"),
     * 			AccountReplicationType: pulumi.String("LRS"),
     * 		})
     * 		if err != nil {
     * 			return err
     * 		}
     * 		container, err := storage.NewContainer(ctx, "container", &storage.ContainerArgs{
     * 			Name:                pulumi.String("mycontainer"),
     * 			StorageAccountName:  storage.Name,
     * 			ContainerAccessType: pulumi.String("private"),
     * 		})
     * 		if err != nil {
     * 			return err
     * 		}
     * 		example := storage.GetAccountBlobContainerSASOutput(ctx, storage.GetAccountBlobContainerSASOutputArgs{
     * 			ConnectionString: storage.PrimaryConnectionString,
     * 			ContainerName:    container.Name,
     * 			HttpsOnly:        pulumi.Bool(true),
     * 			IpAddress:        pulumi.String("168.1.5.65"),
     * 			Start:            pulumi.String("2018-03-21"),
     * 			Expiry:           pulumi.String("2018-03-21"),
     * 			Permissions: &storage.GetAccountBlobContainerSASPermissionsArgs{
     * 				Read:   pulumi.Bool(true),
     * 				Add:    pulumi.Bool(true),
     * 				Create: pulumi.Bool(false),
     * 				Write:  pulumi.Bool(false),
     * 				Delete: pulumi.Bool(true),
     * 				List:   pulumi.Bool(true),
     * 			},
     * 			CacheControl:       pulumi.String("max-age=5"),
     * 			ContentDisposition: pulumi.String("inline"),
     * 			ContentEncoding:    pulumi.String("deflate"),
     * 			ContentLanguage:    pulumi.String("en-US"),
     * 			ContentType:        pulumi.String("application/json"),
     * 		}, nil)
     * 		ctx.Export("sasUrlQueryString", example.ApplyT(func(example storage.GetAccountBlobContainerSASResult) (*string, error) {
     * 			return &example.Sas, nil
     * 		}).(pulumi.StringPtrOutput))
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.core.ResourceGroup;
     * import com.pulumi.azure.core.ResourceGroupArgs;
     * import com.pulumi.azure.storage.Account;
     * import com.pulumi.azure.storage.AccountArgs;
     * import com.pulumi.azure.storage.Container;
     * import com.pulumi.azure.storage.ContainerArgs;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetAccountBlobContainerSASArgs;
     * import com.pulumi.azure.storage.inputs.GetAccountBlobContainerSASPermissionsArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         var rg = new ResourceGroup("rg", ResourceGroupArgs.builder()
     *             .name("resourceGroupName")
     *             .location("West Europe")
     *             .build());
     *         var storage = new Account("storage", AccountArgs.builder()
     *             .name("storageaccountname")
     *             .resourceGroupName(rg.name())
     *             .location(rg.location())
     *             .accountTier("Standard")
     *             .accountReplicationType("LRS")
     *             .build());
     *         var container = new Container("container", ContainerArgs.builder()
     *             .name("mycontainer")
     *             .storageAccountName(storage.name())
     *             .containerAccessType("private")
     *             .build());
     *         final var example = StorageFunctions.getAccountBlobContainerSAS(GetAccountBlobContainerSASArgs.builder()
     *             .connectionString(storage.primaryConnectionString())
     *             .containerName(container.name())
     *             .httpsOnly(true)
     *             .ipAddress("168.1.5.65")
     *             .start("2018-03-21")
     *             .expiry("2018-03-21")
     *             .permissions(GetAccountBlobContainerSASPermissionsArgs.builder()
     *                 .read(true)
     *                 .add(true)
     *                 .create(false)
     *                 .write(false)
     *                 .delete(true)
     *                 .list(true)
     *                 .build())
     *             .cacheControl("max-age=5")
     *             .contentDisposition("inline")
     *             .contentEncoding("deflate")
     *             .contentLanguage("en-US")
     *             .contentType("application/json")
     *             .build());
     *         ctx.export("sasUrlQueryString", example.applyValue(getAccountBlobContainerSASResult -> getAccountBlobContainerSASResult).applyValue(example -> example.applyValue(getAccountBlobContainerSASResult -> getAccountBlobContainerSASResult.sas())));
     *     }
     * }
     * ```
     * ```yaml
     * resources:
     *   rg:
     *     type: azure:core:ResourceGroup
     *     properties:
     *       name: resourceGroupName
     *       location: West Europe
     *   storage:
     *     type: azure:storage:Account
     *     properties:
     *       name: storageaccountname
     *       resourceGroupName: ${rg.name}
     *       location: ${rg.location}
     *       accountTier: Standard
     *       accountReplicationType: LRS
     *   container:
     *     type: azure:storage:Container
     *     properties:
     *       name: mycontainer
     *       storageAccountName: ${storage.name}
     *       containerAccessType: private
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getAccountBlobContainerSAS
     *       Arguments:
     *         connectionString: ${storage.primaryConnectionString}
     *         containerName: ${container.name}
     *         httpsOnly: true
     *         ipAddress: 168.1.5.65
     *         start: 2018-03-21
     *         expiry: 2018-03-21
     *         permissions:
     *           read: true
     *           add: true
     *           create: false
     *           write: false
     *           delete: true
     *           list: true
     *         cacheControl: max-age=5
     *         contentDisposition: inline
     *         contentEncoding: deflate
     *         contentLanguage: en-US
     *         contentType: application/json
     * outputs:
     *   sasUrlQueryString: ${example.sas}
     * ```
     * 
     * @param argument A collection of arguments for invoking getAccountBlobContainerSAS.
     * @return A collection of values returned by getAccountBlobContainerSAS.
     */
    public suspend fun getAccountBlobContainerSAS(argument: GetAccountBlobContainerSASPlainArgs):
        GetAccountBlobContainerSASResult =
        getAccountBlobContainerSASResultToKotlin(getAccountBlobContainerSASPlain(argument.toJava()).await())

    /**
     * @see [getAccountBlobContainerSAS].
     * @param cacheControl The `Cache-Control` response header that is sent when this SAS token is used.
     * @param connectionString The connection string for the storage account to which this SAS applies. Typically directly from the `primary_connection_string` attribute of an `azure.storage.Account` resource.
     * @param containerName Name of the container.
     * @param contentDisposition The `Content-Disposition` response header that is sent when this SAS token is used.
     * @param contentEncoding The `Content-Encoding` response header that is sent when this SAS token is used.
     * @param contentLanguage The `Content-Language` response header that is sent when this SAS token is used.
     * @param contentType The `Content-Type` response header that is sent when this SAS token is used.
     * @param expiry The expiration time and date of this SAS. Must be a valid ISO-8601 format time/date string.
     * > **NOTE:** The [ISO-8601 Time offset from UTC](https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC) is currently not supported by the service, which will result into 409 error.
     * @param httpsOnly Only permit `https` access. If `false`, both `http` and `https` are permitted. Defaults to `true`.
     * @param ipAddress Single IPv4 address or range (connected with a dash) of IPv4 addresses.
     * @param permissions A `permissions` block as defined below.
     * @param start The starting time and date of validity of this SAS. Must be a valid ISO-8601 format time/date string.
     * @return A collection of values returned by getAccountBlobContainerSAS.
     */
    public suspend fun getAccountBlobContainerSAS(
        cacheControl: String? = null,
        connectionString: String,
        containerName: String,
        contentDisposition: String? = null,
        contentEncoding: String? = null,
        contentLanguage: String? = null,
        contentType: String? = null,
        expiry: String,
        httpsOnly: Boolean? = null,
        ipAddress: String? = null,
        permissions: GetAccountBlobContainerSASPermissions,
        start: String,
    ): GetAccountBlobContainerSASResult {
        val argument = GetAccountBlobContainerSASPlainArgs(
            cacheControl = cacheControl,
            connectionString = connectionString,
            containerName = containerName,
            contentDisposition = contentDisposition,
            contentEncoding = contentEncoding,
            contentLanguage = contentLanguage,
            contentType = contentType,
            expiry = expiry,
            httpsOnly = httpsOnly,
            ipAddress = ipAddress,
            permissions = permissions,
            start = start,
        )
        return getAccountBlobContainerSASResultToKotlin(getAccountBlobContainerSASPlain(argument.toJava()).await())
    }

    /**
     * @see [getAccountBlobContainerSAS].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetAccountBlobContainerSASPlainArgs].
     * @return A collection of values returned by getAccountBlobContainerSAS.
     */
    public suspend
    fun getAccountBlobContainerSAS(argument: suspend GetAccountBlobContainerSASPlainArgsBuilder.() -> Unit):
        GetAccountBlobContainerSASResult {
        val builder = GetAccountBlobContainerSASPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getAccountBlobContainerSASResultToKotlin(getAccountBlobContainerSASPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to obtain a Shared Access Signature (SAS Token) for an existing Storage Account.
     * Shared access signatures allow fine-grained, ephemeral access control to various aspects of an Azure Storage Account.
     * Note that this is an [Account SAS](https://docs.microsoft.com/rest/api/storageservices/constructing-an-account-sas)
     * and *not* a [Service SAS](https://docs.microsoft.com/rest/api/storageservices/constructing-a-service-sas).
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const exampleResourceGroup = new azure.core.ResourceGroup("example", {
     *     name: "resourceGroupName",
     *     location: "West Europe",
     * });
     * const exampleAccount = new azure.storage.Account("example", {
     *     name: "storageaccountname",
     *     resourceGroupName: exampleResourceGroup.name,
     *     location: exampleResourceGroup.location,
     *     accountTier: "Standard",
     *     accountReplicationType: "GRS",
     *     tags: {
     *         environment: "staging",
     *     },
     * });
     * const example = azure.storage.getAccountSASOutput({
     *     connectionString: exampleAccount.primaryConnectionString,
     *     httpsOnly: true,
     *     signedVersion: "2017-07-29",
     *     resourceTypes: {
     *         service: true,
     *         container: false,
     *         object: false,
     *     },
     *     services: {
     *         blob: true,
     *         queue: false,
     *         table: false,
     *         file: false,
     *     },
     *     start: "2018-03-21T00:00:00Z",
     *     expiry: "2020-03-21T00:00:00Z",
     *     permissions: {
     *         read: true,
     *         write: true,
     *         "delete": false,
     *         list: false,
     *         add: true,
     *         create: true,
     *         update: false,
     *         process: false,
     *         tag: false,
     *         filter: false,
     *     },
     * });
     * export const sasUrlQueryString = example.apply(example => example.sas);
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example_resource_group = azure.core.ResourceGroup("example",
     *     name="resourceGroupName",
     *     location="West Europe")
     * example_account = azure.storage.Account("example",
     *     name="storageaccountname",
     *     resource_group_name=example_resource_group.name,
     *     location=example_resource_group.location,
     *     account_tier="Standard",
     *     account_replication_type="GRS",
     *     tags={
     *         "environment": "staging",
     *     })
     * example = azure.storage.get_account_sas_output(connection_string=example_account.primary_connection_string,
     *     https_only=True,
     *     signed_version="2017-07-29",
     *     resource_types=azure.storage.GetAccountSASResourceTypesArgs(
     *         service=True,
     *         container=False,
     *         object=False,
     *     ),
     *     services=azure.storage.GetAccountSASServicesArgs(
     *         blob=True,
     *         queue=False,
     *         table=False,
     *         file=False,
     *     ),
     *     start="2018-03-21T00:00:00Z",
     *     expiry="2020-03-21T00:00:00Z",
     *     permissions=azure.storage.GetAccountSASPermissionsArgs(
     *         read=True,
     *         write=True,
     *         delete=False,
     *         list=False,
     *         add=True,
     *         create=True,
     *         update=False,
     *         process=False,
     *         tag=False,
     *         filter=False,
     *     ))
     * pulumi.export("sasUrlQueryString", example.sas)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var exampleResourceGroup = new Azure.Core.ResourceGroup("example", new()
     *     {
     *         Name = "resourceGroupName",
     *         Location = "West Europe",
     *     });
     *     var exampleAccount = new Azure.Storage.Account("example", new()
     *     {
     *         Name = "storageaccountname",
     *         ResourceGroupName = exampleResourceGroup.Name,
     *         Location = exampleResourceGroup.Location,
     *         AccountTier = "Standard",
     *         AccountReplicationType = "GRS",
     *         Tags =
     *         {
     *             { "environment", "staging" },
     *         },
     *     });
     *     var example = Azure.Storage.GetAccountSAS.Invoke(new()
     *     {
     *         ConnectionString = exampleAccount.PrimaryConnectionString,
     *         HttpsOnly = true,
     *         SignedVersion = "2017-07-29",
     *         ResourceTypes = new Azure.Storage.Inputs.GetAccountSASResourceTypesInputArgs
     *         {
     *             Service = true,
     *             Container = false,
     *             Object = false,
     *         },
     *         Services = new Azure.Storage.Inputs.GetAccountSASServicesInputArgs
     *         {
     *             Blob = true,
     *             Queue = false,
     *             Table = false,
     *             File = false,
     *         },
     *         Start = "2018-03-21T00:00:00Z",
     *         Expiry = "2020-03-21T00:00:00Z",
     *         Permissions = new Azure.Storage.Inputs.GetAccountSASPermissionsInputArgs
     *         {
     *             Read = true,
     *             Write = true,
     *             Delete = false,
     *             List = false,
     *             Add = true,
     *             Create = true,
     *             Update = false,
     *             Process = false,
     *             Tag = false,
     *             Filter = false,
     *         },
     *     });
     *     return new Dictionary
     *     {
     *         ["sasUrlQueryString"] = example.Apply(getAccountSASResult => getAccountSASResult.Sas),
     *     };
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		exampleResourceGroup, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
     * 			Name:     pulumi.String("resourceGroupName"),
     * 			Location: pulumi.String("West Europe"),
     * 		})
     * 		if err != nil {
     * 			return err
     * 		}
     * 		exampleAccount, err := storage.NewAccount(ctx, "example", &storage.AccountArgs{
     * 			Name:                   pulumi.String("storageaccountname"),
     * 			ResourceGroupName:      exampleResourceGroup.Name,
     * 			Location:               exampleResourceGroup.Location,
     * 			AccountTier:            pulumi.String("Standard"),
     * 			AccountReplicationType: pulumi.String("GRS"),
     * 			Tags: pulumi.StringMap{
     * 				"environment": pulumi.String("staging"),
     * 			},
     * 		})
     * 		if err != nil {
     * 			return err
     * 		}
     * 		example := storage.GetAccountSASOutput(ctx, storage.GetAccountSASOutputArgs{
     * 			ConnectionString: exampleAccount.PrimaryConnectionString,
     * 			HttpsOnly:        pulumi.Bool(true),
     * 			SignedVersion:    pulumi.String("2017-07-29"),
     * 			ResourceTypes: &storage.GetAccountSASResourceTypesArgs{
     * 				Service:   pulumi.Bool(true),
     * 				Container: pulumi.Bool(false),
     * 				Object:    pulumi.Bool(false),
     * 			},
     * 			Services: &storage.GetAccountSASServicesArgs{
     * 				Blob:  pulumi.Bool(true),
     * 				Queue: pulumi.Bool(false),
     * 				Table: pulumi.Bool(false),
     * 				File:  pulumi.Bool(false),
     * 			},
     * 			Start:  pulumi.String("2018-03-21T00:00:00Z"),
     * 			Expiry: pulumi.String("2020-03-21T00:00:00Z"),
     * 			Permissions: &storage.GetAccountSASPermissionsArgs{
     * 				Read:    pulumi.Bool(true),
     * 				Write:   pulumi.Bool(true),
     * 				Delete:  pulumi.Bool(false),
     * 				List:    pulumi.Bool(false),
     * 				Add:     pulumi.Bool(true),
     * 				Create:  pulumi.Bool(true),
     * 				Update:  pulumi.Bool(false),
     * 				Process: pulumi.Bool(false),
     * 				Tag:     pulumi.Bool(false),
     * 				Filter:  pulumi.Bool(false),
     * 			},
     * 		}, nil)
     * 		ctx.Export("sasUrlQueryString", example.ApplyT(func(example storage.GetAccountSASResult) (*string, error) {
     * 			return &example.Sas, nil
     * 		}).(pulumi.StringPtrOutput))
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.core.ResourceGroup;
     * import com.pulumi.azure.core.ResourceGroupArgs;
     * import com.pulumi.azure.storage.Account;
     * import com.pulumi.azure.storage.AccountArgs;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetAccountSASArgs;
     * import com.pulumi.azure.storage.inputs.GetAccountSASResourceTypesArgs;
     * import com.pulumi.azure.storage.inputs.GetAccountSASServicesArgs;
     * import com.pulumi.azure.storage.inputs.GetAccountSASPermissionsArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         var exampleResourceGroup = new ResourceGroup("exampleResourceGroup", ResourceGroupArgs.builder()
     *             .name("resourceGroupName")
     *             .location("West Europe")
     *             .build());
     *         var exampleAccount = new Account("exampleAccount", AccountArgs.builder()
     *             .name("storageaccountname")
     *             .resourceGroupName(exampleResourceGroup.name())
     *             .location(exampleResourceGroup.location())
     *             .accountTier("Standard")
     *             .accountReplicationType("GRS")
     *             .tags(Map.of("environment", "staging"))
     *             .build());
     *         final var example = StorageFunctions.getAccountSAS(GetAccountSASArgs.builder()
     *             .connectionString(exampleAccount.primaryConnectionString())
     *             .httpsOnly(true)
     *             .signedVersion("2017-07-29")
     *             .resourceTypes(GetAccountSASResourceTypesArgs.builder()
     *                 .service(true)
     *                 .container(false)
     *                 .object(false)
     *                 .build())
     *             .services(GetAccountSASServicesArgs.builder()
     *                 .blob(true)
     *                 .queue(false)
     *                 .table(false)
     *                 .file(false)
     *                 .build())
     *             .start("2018-03-21T00:00:00Z")
     *             .expiry("2020-03-21T00:00:00Z")
     *             .permissions(GetAccountSASPermissionsArgs.builder()
     *                 .read(true)
     *                 .write(true)
     *                 .delete(false)
     *                 .list(false)
     *                 .add(true)
     *                 .create(true)
     *                 .update(false)
     *                 .process(false)
     *                 .tag(false)
     *                 .filter(false)
     *                 .build())
     *             .build());
     *         ctx.export("sasUrlQueryString", example.applyValue(getAccountSASResult -> getAccountSASResult).applyValue(example -> example.applyValue(getAccountSASResult -> getAccountSASResult.sas())));
     *     }
     * }
     * ```
     * ```yaml
     * resources:
     *   exampleResourceGroup:
     *     type: azure:core:ResourceGroup
     *     name: example
     *     properties:
     *       name: resourceGroupName
     *       location: West Europe
     *   exampleAccount:
     *     type: azure:storage:Account
     *     name: example
     *     properties:
     *       name: storageaccountname
     *       resourceGroupName: ${exampleResourceGroup.name}
     *       location: ${exampleResourceGroup.location}
     *       accountTier: Standard
     *       accountReplicationType: GRS
     *       tags:
     *         environment: staging
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getAccountSAS
     *       Arguments:
     *         connectionString: ${exampleAccount.primaryConnectionString}
     *         httpsOnly: true
     *         signedVersion: 2017-07-29
     *         resourceTypes:
     *           service: true
     *           container: false
     *           object: false
     *         services:
     *           blob: true
     *           queue: false
     *           table: false
     *           file: false
     *         start: 2018-03-21T00:00:00Z
     *         expiry: 2020-03-21T00:00:00Z
     *         permissions:
     *           read: true
     *           write: true
     *           delete: false
     *           list: false
     *           add: true
     *           create: true
     *           update: false
     *           process: false
     *           tag: false
     *           filter: false
     * outputs:
     *   sasUrlQueryString: ${example.sas}
     * ```
     * 
     * @param argument A collection of arguments for invoking getAccountSAS.
     * @return A collection of values returned by getAccountSAS.
     */
    public suspend fun getAccountSAS(argument: GetAccountSASPlainArgs): GetAccountSASResult =
        getAccountSASResultToKotlin(getAccountSASPlain(argument.toJava()).await())

    /**
     * @see [getAccountSAS].
     * @param connectionString The connection string for the storage account to which this SAS applies. Typically directly from the `primary_connection_string` attribute of a `azure.storage.Account` resource.
     * @param expiry The expiration time and date of this SAS. Must be a valid ISO-8601 format time/date string.
     * > **NOTE:** The [ISO-8601 Time offset from UTC](https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC) is currently not supported by the service, which will result into 409 error.
     * @param httpsOnly Only permit `https` access. If `false`, both `http` and `https` are permitted. Defaults to `true`.
     * @param ipAddresses IP address, or a range of IP addresses, from which to accept requests. When specifying a range, note that the range is inclusive.
     * @param permissions A `permissions` block as defined below.
     * @param resourceTypes A `resource_types` block as defined below.
     * @param services A `services` block as defined below.
     * @param signedVersion Specifies the signed storage service version to use to authorize requests made with this account SAS. Defaults to `2017-07-29`.
     * @param start The starting time and date of validity of this SAS. Must be a valid ISO-8601 format time/date string.
     * @return A collection of values returned by getAccountSAS.
     */
    public suspend fun getAccountSAS(
        connectionString: String,
        expiry: String,
        httpsOnly: Boolean? = null,
        ipAddresses: String? = null,
        permissions: GetAccountSASPermissions,
        resourceTypes: GetAccountSASResourceTypes,
        services: GetAccountSASServices,
        signedVersion: String? = null,
        start: String,
    ): GetAccountSASResult {
        val argument = GetAccountSASPlainArgs(
            connectionString = connectionString,
            expiry = expiry,
            httpsOnly = httpsOnly,
            ipAddresses = ipAddresses,
            permissions = permissions,
            resourceTypes = resourceTypes,
            services = services,
            signedVersion = signedVersion,
            start = start,
        )
        return getAccountSASResultToKotlin(getAccountSASPlain(argument.toJava()).await())
    }

    /**
     * @see [getAccountSAS].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetAccountSASPlainArgs].
     * @return A collection of values returned by getAccountSAS.
     */
    public suspend fun getAccountSAS(argument: suspend GetAccountSASPlainArgsBuilder.() -> Unit):
        GetAccountSASResult {
        val builder = GetAccountSASPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getAccountSASResultToKotlin(getAccountSASPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing Storage Blob.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getBlob({
     *     name: "example-blob-name",
     *     storageAccountName: "example-storage-account-name",
     *     storageContainerName: "example-storage-container-name",
     * });
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_blob(name="example-blob-name",
     *     storage_account_name="example-storage-account-name",
     *     storage_container_name="example-storage-container-name")
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetBlob.Invoke(new()
     *     {
     *         Name = "example-blob-name",
     *         StorageAccountName = "example-storage-account-name",
     *         StorageContainerName = "example-storage-container-name",
     *     });
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		_, err := storage.LookupBlob(ctx, &storage.LookupBlobArgs{
     * 			Name:                 "example-blob-name",
     * 			StorageAccountName:   "example-storage-account-name",
     * 			StorageContainerName: "example-storage-container-name",
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetBlobArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getBlob(GetBlobArgs.builder()
     *             .name("example-blob-name")
     *             .storageAccountName("example-storage-account-name")
     *             .storageContainerName("example-storage-container-name")
     *             .build());
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getBlob
     *       Arguments:
     *         name: example-blob-name
     *         storageAccountName: example-storage-account-name
     *         storageContainerName: example-storage-container-name
     * ```
     * 
     * @param argument A collection of arguments for invoking getBlob.
     * @return A collection of values returned by getBlob.
     */
    public suspend fun getBlob(argument: GetBlobPlainArgs): GetBlobResult =
        getBlobResultToKotlin(getBlobPlain(argument.toJava()).await())

    /**
     * @see [getBlob].
     * @param metadata A map of custom blob metadata.
     * @param name The name of the Blob.
     * @param storageAccountName The name of the Storage Account where the Container exists.
     * @param storageContainerName The name of the Storage Container where the Blob exists.
     * @return A collection of values returned by getBlob.
     */
    public suspend fun getBlob(
        metadata: Map? = null,
        name: String,
        storageAccountName: String,
        storageContainerName: String,
    ): GetBlobResult {
        val argument = GetBlobPlainArgs(
            metadata = metadata,
            name = name,
            storageAccountName = storageAccountName,
            storageContainerName = storageContainerName,
        )
        return getBlobResultToKotlin(getBlobPlain(argument.toJava()).await())
    }

    /**
     * @see [getBlob].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetBlobPlainArgs].
     * @return A collection of values returned by getBlob.
     */
    public suspend fun getBlob(argument: suspend GetBlobPlainArgsBuilder.() -> Unit): GetBlobResult {
        val builder = GetBlobPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getBlobResultToKotlin(getBlobPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about the existing Storage Containers within a Storage Account.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getContainers({
     *     storageAccountId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Storage/storageAccounts/sa1",
     * });
     * export const containerId = example.then(example => example.containers?.[0]?.resourceManagerId);
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_containers(storage_account_id="/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Storage/storageAccounts/sa1")
     * pulumi.export("containerId", example.containers[0].resource_manager_id)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetContainers.Invoke(new()
     *     {
     *         StorageAccountId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Storage/storageAccounts/sa1",
     *     });
     *     return new Dictionary
     *     {
     *         ["containerId"] = example.Apply(getContainersResult => getContainersResult.Containers[0]?.ResourceManagerId),
     *     };
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		example, err := storage.GetContainers(ctx, &storage.GetContainersArgs{
     * 			StorageAccountId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Storage/storageAccounts/sa1",
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		ctx.Export("containerId", example.Containers[0].ResourceManagerId)
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetContainersArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getContainers(GetContainersArgs.builder()
     *             .storageAccountId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Storage/storageAccounts/sa1")
     *             .build());
     *         ctx.export("containerId", example.applyValue(getContainersResult -> getContainersResult.containers()[0].resourceManagerId()));
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getContainers
     *       Arguments:
     *         storageAccountId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Storage/storageAccounts/sa1
     * outputs:
     *   containerId: ${example.containers[0].resourceManagerId}
     * ```
     * 
     * @param argument A collection of arguments for invoking getContainers.
     * @return A collection of values returned by getContainers.
     */
    public suspend fun getContainers(argument: GetContainersPlainArgs): GetContainersResult =
        getContainersResultToKotlin(getContainersPlain(argument.toJava()).await())

    /**
     * @see [getContainers].
     * @param namePrefix A prefix match used for the Storage Container `name` field.
     * @param storageAccountId The ID of the Storage Account that the Storage Containers reside in.
     * @return A collection of values returned by getContainers.
     */
    public suspend fun getContainers(namePrefix: String? = null, storageAccountId: String):
        GetContainersResult {
        val argument = GetContainersPlainArgs(
            namePrefix = namePrefix,
            storageAccountId = storageAccountId,
        )
        return getContainersResultToKotlin(getContainersPlain(argument.toJava()).await())
    }

    /**
     * @see [getContainers].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetContainersPlainArgs].
     * @return A collection of values returned by getContainers.
     */
    public suspend fun getContainers(argument: suspend GetContainersPlainArgsBuilder.() -> Unit):
        GetContainersResult {
        val builder = GetContainersPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getContainersResultToKotlin(getContainersPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing Storage Encryption Scope.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getAccount({
     *     name: "storageaccountname",
     *     resourceGroupName: "resourcegroupname",
     * });
     * const exampleGetEncryptionScope = example.then(example => azure.storage.getEncryptionScope({
     *     name: "existingStorageES",
     *     storageAccountId: example.id,
     * }));
     * export const id = exampleGetEncryptionScope.then(exampleGetEncryptionScope => exampleGetEncryptionScope.id);
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_account(name="storageaccountname",
     *     resource_group_name="resourcegroupname")
     * example_get_encryption_scope = azure.storage.get_encryption_scope(name="existingStorageES",
     *     storage_account_id=example.id)
     * pulumi.export("id", example_get_encryption_scope.id)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetAccount.Invoke(new()
     *     {
     *         Name = "storageaccountname",
     *         ResourceGroupName = "resourcegroupname",
     *     });
     *     var exampleGetEncryptionScope = Azure.Storage.GetEncryptionScope.Invoke(new()
     *     {
     *         Name = "existingStorageES",
     *         StorageAccountId = example.Apply(getAccountResult => getAccountResult.Id),
     *     });
     *     return new Dictionary
     *     {
     *         ["id"] = exampleGetEncryptionScope.Apply(getEncryptionScopeResult => getEncryptionScopeResult.Id),
     *     };
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		example, err := storage.LookupAccount(ctx, &storage.LookupAccountArgs{
     * 			Name:              "storageaccountname",
     * 			ResourceGroupName: pulumi.StringRef("resourcegroupname"),
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		exampleGetEncryptionScope, err := storage.LookupEncryptionScope(ctx, &storage.LookupEncryptionScopeArgs{
     * 			Name:             "existingStorageES",
     * 			StorageAccountId: example.Id,
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		ctx.Export("id", exampleGetEncryptionScope.Id)
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetAccountArgs;
     * import com.pulumi.azure.storage.inputs.GetEncryptionScopeArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getAccount(GetAccountArgs.builder()
     *             .name("storageaccountname")
     *             .resourceGroupName("resourcegroupname")
     *             .build());
     *         final var exampleGetEncryptionScope = StorageFunctions.getEncryptionScope(GetEncryptionScopeArgs.builder()
     *             .name("existingStorageES")
     *             .storageAccountId(example.applyValue(getAccountResult -> getAccountResult.id()))
     *             .build());
     *         ctx.export("id", exampleGetEncryptionScope.applyValue(getEncryptionScopeResult -> getEncryptionScopeResult.id()));
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getAccount
     *       Arguments:
     *         name: storageaccountname
     *         resourceGroupName: resourcegroupname
     *   exampleGetEncryptionScope:
     *     fn::invoke:
     *       Function: azure:storage:getEncryptionScope
     *       Arguments:
     *         name: existingStorageES
     *         storageAccountId: ${example.id}
     * outputs:
     *   id: ${exampleGetEncryptionScope.id}
     * ```
     * 
     * @param argument A collection of arguments for invoking getEncryptionScope.
     * @return A collection of values returned by getEncryptionScope.
     */
    public suspend fun getEncryptionScope(argument: GetEncryptionScopePlainArgs):
        GetEncryptionScopeResult =
        getEncryptionScopeResultToKotlin(getEncryptionScopePlain(argument.toJava()).await())

    /**
     * @see [getEncryptionScope].
     * @param name The name of this Storage Encryption Scope.
     * @param storageAccountId The ID of the Storage Account where this Storage Encryption Scope exists.
     * @return A collection of values returned by getEncryptionScope.
     */
    public suspend fun getEncryptionScope(name: String, storageAccountId: String):
        GetEncryptionScopeResult {
        val argument = GetEncryptionScopePlainArgs(
            name = name,
            storageAccountId = storageAccountId,
        )
        return getEncryptionScopeResultToKotlin(getEncryptionScopePlain(argument.toJava()).await())
    }

    /**
     * @see [getEncryptionScope].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetEncryptionScopePlainArgs].
     * @return A collection of values returned by getEncryptionScope.
     */
    public suspend
    fun getEncryptionScope(argument: suspend GetEncryptionScopePlainArgsBuilder.() -> Unit):
        GetEncryptionScopeResult {
        val builder = GetEncryptionScopePlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getEncryptionScopeResultToKotlin(getEncryptionScopePlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing Storage Management Policy.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getAccount({
     *     name: "storageaccountname",
     *     resourceGroupName: "resourcegroupname",
     * });
     * const exampleGetPolicy = example.then(example => azure.storage.getPolicy({
     *     storageAccountId: example.id,
     * }));
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_account(name="storageaccountname",
     *     resource_group_name="resourcegroupname")
     * example_get_policy = azure.storage.get_policy(storage_account_id=example.id)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetAccount.Invoke(new()
     *     {
     *         Name = "storageaccountname",
     *         ResourceGroupName = "resourcegroupname",
     *     });
     *     var exampleGetPolicy = Azure.Storage.GetPolicy.Invoke(new()
     *     {
     *         StorageAccountId = example.Apply(getAccountResult => getAccountResult.Id),
     *     });
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		example, err := storage.LookupAccount(ctx, &storage.LookupAccountArgs{
     * 			Name:              "storageaccountname",
     * 			ResourceGroupName: pulumi.StringRef("resourcegroupname"),
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		_, err = storage.GetPolicy(ctx, &storage.GetPolicyArgs{
     * 			StorageAccountId: example.Id,
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetAccountArgs;
     * import com.pulumi.azure.storage.inputs.GetPolicyArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getAccount(GetAccountArgs.builder()
     *             .name("storageaccountname")
     *             .resourceGroupName("resourcegroupname")
     *             .build());
     *         final var exampleGetPolicy = StorageFunctions.getPolicy(GetPolicyArgs.builder()
     *             .storageAccountId(example.applyValue(getAccountResult -> getAccountResult.id()))
     *             .build());
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getAccount
     *       Arguments:
     *         name: storageaccountname
     *         resourceGroupName: resourcegroupname
     *   exampleGetPolicy:
     *     fn::invoke:
     *       Function: azure:storage:getPolicy
     *       Arguments:
     *         storageAccountId: ${example.id}
     * ```
     * 
     * @param argument A collection of arguments for invoking getPolicy.
     * @return A collection of values returned by getPolicy.
     */
    public suspend fun getPolicy(argument: GetPolicyPlainArgs): GetPolicyResult =
        getPolicyResultToKotlin(getPolicyPlain(argument.toJava()).await())

    /**
     * @see [getPolicy].
     * @param storageAccountId Specifies the id of the storage account to retrieve the management policy for.
     * @return A collection of values returned by getPolicy.
     */
    public suspend fun getPolicy(storageAccountId: String): GetPolicyResult {
        val argument = GetPolicyPlainArgs(
            storageAccountId = storageAccountId,
        )
        return getPolicyResultToKotlin(getPolicyPlain(argument.toJava()).await())
    }

    /**
     * @see [getPolicy].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetPolicyPlainArgs].
     * @return A collection of values returned by getPolicy.
     */
    public suspend fun getPolicy(argument: suspend GetPolicyPlainArgsBuilder.() -> Unit):
        GetPolicyResult {
        val builder = GetPolicyPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getPolicyResultToKotlin(getPolicyPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing File Share.
     * > **Note on Authentication** Shared Key authentication will always be used for this data source, as AzureAD authentication is not supported by the Storage API for files.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getShare({
     *     name: "existing",
     *     storageAccountName: "existing",
     * });
     * export const id = example.then(example => example.id);
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_share(name="existing",
     *     storage_account_name="existing")
     * pulumi.export("id", example.id)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetShare.Invoke(new()
     *     {
     *         Name = "existing",
     *         StorageAccountName = "existing",
     *     });
     *     return new Dictionary
     *     {
     *         ["id"] = example.Apply(getShareResult => getShareResult.Id),
     *     };
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		example, err := storage.LookupShare(ctx, &storage.LookupShareArgs{
     * 			Name:               "existing",
     * 			StorageAccountName: "existing",
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		ctx.Export("id", example.Id)
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetShareArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getShare(GetShareArgs.builder()
     *             .name("existing")
     *             .storageAccountName("existing")
     *             .build());
     *         ctx.export("id", example.applyValue(getShareResult -> getShareResult.id()));
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getShare
     *       Arguments:
     *         name: existing
     *         storageAccountName: existing
     * outputs:
     *   id: ${example.id}
     * ```
     * 
     * @param argument A collection of arguments for invoking getShare.
     * @return A collection of values returned by getShare.
     */
    public suspend fun getShare(argument: GetSharePlainArgs): GetShareResult =
        getShareResultToKotlin(getSharePlain(argument.toJava()).await())

    /**
     * @see [getShare].
     * @param acls One or more acl blocks as defined below.
     * @param metadata A map of custom file share metadata.
     * @param name The name of the share.
     * @param storageAccountName The name of the storage account.
     * @return A collection of values returned by getShare.
     */
    public suspend fun getShare(
        acls: List? = null,
        metadata: Map? = null,
        name: String,
        storageAccountName: String,
    ): GetShareResult {
        val argument = GetSharePlainArgs(
            acls = acls,
            metadata = metadata,
            name = name,
            storageAccountName = storageAccountName,
        )
        return getShareResultToKotlin(getSharePlain(argument.toJava()).await())
    }

    /**
     * @see [getShare].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetSharePlainArgs].
     * @return A collection of values returned by getShare.
     */
    public suspend fun getShare(argument: suspend GetSharePlainArgsBuilder.() -> Unit):
        GetShareResult {
        val builder = GetSharePlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getShareResultToKotlin(getSharePlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing Storage Container.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getStorageContainer({
     *     name: "example-container-name",
     *     storageAccountName: "example-storage-account-name",
     * });
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_storage_container(name="example-container-name",
     *     storage_account_name="example-storage-account-name")
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetStorageContainer.Invoke(new()
     *     {
     *         Name = "example-container-name",
     *         StorageAccountName = "example-storage-account-name",
     *     });
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		_, err := storage.GetStorageContainer(ctx, &storage.GetStorageContainerArgs{
     * 			Name:               "example-container-name",
     * 			StorageAccountName: "example-storage-account-name",
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetStorageContainerArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getStorageContainer(GetStorageContainerArgs.builder()
     *             .name("example-container-name")
     *             .storageAccountName("example-storage-account-name")
     *             .build());
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getStorageContainer
     *       Arguments:
     *         name: example-container-name
     *         storageAccountName: example-storage-account-name
     * ```
     * 
     * @param argument A collection of arguments for invoking getStorageContainer.
     * @return A collection of values returned by getStorageContainer.
     */
    public suspend fun getStorageContainer(argument: GetStorageContainerPlainArgs):
        GetStorageContainerResult =
        getStorageContainerResultToKotlin(getStorageContainerPlain(argument.toJava()).await())

    /**
     * @see [getStorageContainer].
     * @param metadata A mapping of MetaData for this Container.
     * @param name The name of the Container.
     * @param storageAccountName The name of the Storage Account where the Container exists.
     * @return A collection of values returned by getStorageContainer.
     */
    public suspend fun getStorageContainer(
        metadata: Map? = null,
        name: String,
        storageAccountName: String,
    ): GetStorageContainerResult {
        val argument = GetStorageContainerPlainArgs(
            metadata = metadata,
            name = name,
            storageAccountName = storageAccountName,
        )
        return getStorageContainerResultToKotlin(getStorageContainerPlain(argument.toJava()).await())
    }

    /**
     * @see [getStorageContainer].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetStorageContainerPlainArgs].
     * @return A collection of values returned by getStorageContainer.
     */
    public suspend
    fun getStorageContainer(argument: suspend GetStorageContainerPlainArgsBuilder.() -> Unit):
        GetStorageContainerResult {
        val builder = GetStorageContainerPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getStorageContainerResultToKotlin(getStorageContainerPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing Storage Sync.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getSync({
     *     name: "existingStorageSyncName",
     *     resourceGroupName: "existingResGroup",
     * });
     * export const id = example.then(example => example.id);
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_sync(name="existingStorageSyncName",
     *     resource_group_name="existingResGroup")
     * pulumi.export("id", example.id)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetSync.Invoke(new()
     *     {
     *         Name = "existingStorageSyncName",
     *         ResourceGroupName = "existingResGroup",
     *     });
     *     return new Dictionary
     *     {
     *         ["id"] = example.Apply(getSyncResult => getSyncResult.Id),
     *     };
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		example, err := storage.LookupSync(ctx, &storage.LookupSyncArgs{
     * 			Name:              "existingStorageSyncName",
     * 			ResourceGroupName: "existingResGroup",
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		ctx.Export("id", example.Id)
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetSyncArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getSync(GetSyncArgs.builder()
     *             .name("existingStorageSyncName")
     *             .resourceGroupName("existingResGroup")
     *             .build());
     *         ctx.export("id", example.applyValue(getSyncResult -> getSyncResult.id()));
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getSync
     *       Arguments:
     *         name: existingStorageSyncName
     *         resourceGroupName: existingResGroup
     * outputs:
     *   id: ${example.id}
     * ```
     * 
     * @param argument A collection of arguments for invoking getSync.
     * @return A collection of values returned by getSync.
     */
    public suspend fun getSync(argument: GetSyncPlainArgs): GetSyncResult =
        getSyncResultToKotlin(getSyncPlain(argument.toJava()).await())

    /**
     * @see [getSync].
     * @param name The name of this Storage Sync.
     * @param resourceGroupName The name of the Resource Group where the Storage Sync exists.
     * @return A collection of values returned by getSync.
     */
    public suspend fun getSync(name: String, resourceGroupName: String): GetSyncResult {
        val argument = GetSyncPlainArgs(
            name = name,
            resourceGroupName = resourceGroupName,
        )
        return getSyncResultToKotlin(getSyncPlain(argument.toJava()).await())
    }

    /**
     * @see [getSync].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetSyncPlainArgs].
     * @return A collection of values returned by getSync.
     */
    public suspend fun getSync(argument: suspend GetSyncPlainArgsBuilder.() -> Unit): GetSyncResult {
        val builder = GetSyncPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getSyncResultToKotlin(getSyncPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing Storage Sync Group.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getSyncGroup({
     *     name: "existing-ss-group",
     *     storageSyncId: "existing-ss-id",
     * });
     * export const id = example.then(example => example.id);
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_sync_group(name="existing-ss-group",
     *     storage_sync_id="existing-ss-id")
     * pulumi.export("id", example.id)
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetSyncGroup.Invoke(new()
     *     {
     *         Name = "existing-ss-group",
     *         StorageSyncId = "existing-ss-id",
     *     });
     *     return new Dictionary
     *     {
     *         ["id"] = example.Apply(getSyncGroupResult => getSyncGroupResult.Id),
     *     };
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		example, err := storage.LookupSyncGroup(ctx, &storage.LookupSyncGroupArgs{
     * 			Name:          "existing-ss-group",
     * 			StorageSyncId: "existing-ss-id",
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		ctx.Export("id", example.Id)
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetSyncGroupArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getSyncGroup(GetSyncGroupArgs.builder()
     *             .name("existing-ss-group")
     *             .storageSyncId("existing-ss-id")
     *             .build());
     *         ctx.export("id", example.applyValue(getSyncGroupResult -> getSyncGroupResult.id()));
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getSyncGroup
     *       Arguments:
     *         name: existing-ss-group
     *         storageSyncId: existing-ss-id
     * outputs:
     *   id: ${example.id}
     * ```
     * 
     * @param argument A collection of arguments for invoking getSyncGroup.
     * @return A collection of values returned by getSyncGroup.
     */
    public suspend fun getSyncGroup(argument: GetSyncGroupPlainArgs): GetSyncGroupResult =
        getSyncGroupResultToKotlin(getSyncGroupPlain(argument.toJava()).await())

    /**
     * @see [getSyncGroup].
     * @param name The name of this Storage Sync Group.
     * @param storageSyncId The resource ID of the Storage Sync where this Storage Sync Group is.
     * @return A collection of values returned by getSyncGroup.
     */
    public suspend fun getSyncGroup(name: String, storageSyncId: String): GetSyncGroupResult {
        val argument = GetSyncGroupPlainArgs(
            name = name,
            storageSyncId = storageSyncId,
        )
        return getSyncGroupResultToKotlin(getSyncGroupPlain(argument.toJava()).await())
    }

    /**
     * @see [getSyncGroup].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetSyncGroupPlainArgs].
     * @return A collection of values returned by getSyncGroup.
     */
    public suspend fun getSyncGroup(argument: suspend GetSyncGroupPlainArgsBuilder.() -> Unit):
        GetSyncGroupResult {
        val builder = GetSyncGroupPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getSyncGroupResultToKotlin(getSyncGroupPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing Storage Table Entity.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getTableEntities({
     *     tableName: "example-table-name",
     *     storageAccountName: "example-storage-account-name",
     *     filter: "PartitionKey eq 'example'",
     * });
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_table_entities(table_name="example-table-name",
     *     storage_account_name="example-storage-account-name",
     *     filter="PartitionKey eq 'example'")
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetTableEntities.Invoke(new()
     *     {
     *         TableName = "example-table-name",
     *         StorageAccountName = "example-storage-account-name",
     *         Filter = "PartitionKey eq 'example'",
     *     });
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		_, err := storage.GetTableEntities(ctx, &storage.GetTableEntitiesArgs{
     * 			TableName:          "example-table-name",
     * 			StorageAccountName: "example-storage-account-name",
     * 			Filter:             "PartitionKey eq 'example'",
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetTableEntitiesArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getTableEntities(GetTableEntitiesArgs.builder()
     *             .tableName("example-table-name")
     *             .storageAccountName("example-storage-account-name")
     *             .filter("PartitionKey eq 'example'")
     *             .build());
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getTableEntities
     *       Arguments:
     *         tableName: example-table-name
     *         storageAccountName: example-storage-account-name
     *         filter: PartitionKey eq 'example'
     * ```
     * 
     * @param argument A collection of arguments for invoking getTableEntities.
     * @return A collection of values returned by getTableEntities.
     */
    public suspend fun getTableEntities(argument: GetTableEntitiesPlainArgs): GetTableEntitiesResult =
        getTableEntitiesResultToKotlin(getTableEntitiesPlain(argument.toJava()).await())

    /**
     * @see [getTableEntities].
     * @param filter The filter used to retrieve the entities.
     * @param selects A list of properties to select from the returned Storage Table Entities.
     * @param storageAccountName The name of the Storage Account where the Table exists.
     * @param tableName The name of the Table.
     * @return A collection of values returned by getTableEntities.
     */
    public suspend fun getTableEntities(
        filter: String,
        selects: List? = null,
        storageAccountName: String,
        tableName: String,
    ): GetTableEntitiesResult {
        val argument = GetTableEntitiesPlainArgs(
            filter = filter,
            selects = selects,
            storageAccountName = storageAccountName,
            tableName = tableName,
        )
        return getTableEntitiesResultToKotlin(getTableEntitiesPlain(argument.toJava()).await())
    }

    /**
     * @see [getTableEntities].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetTableEntitiesPlainArgs].
     * @return A collection of values returned by getTableEntities.
     */
    public suspend
    fun getTableEntities(argument: suspend GetTableEntitiesPlainArgsBuilder.() -> Unit):
        GetTableEntitiesResult {
        val builder = GetTableEntitiesPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getTableEntitiesResultToKotlin(getTableEntitiesPlain(builtArgument.toJava()).await())
    }

    /**
     * Use this data source to access information about an existing Storage Table Entity.
     * ## Example Usage
     * 
     * ```typescript
     * import * as pulumi from "@pulumi/pulumi";
     * import * as azure from "@pulumi/azure";
     * const example = azure.storage.getTableEntity({
     *     tableName: "example-table-name",
     *     storageAccountName: "example-storage-account-name",
     *     partitionKey: "example-partition-key",
     *     rowKey: "example-row-key",
     * });
     * ```
     * ```python
     * import pulumi
     * import pulumi_azure as azure
     * example = azure.storage.get_table_entity(table_name="example-table-name",
     *     storage_account_name="example-storage-account-name",
     *     partition_key="example-partition-key",
     *     row_key="example-row-key")
     * ```
     * ```csharp
     * using System.Collections.Generic;
     * using System.Linq;
     * using Pulumi;
     * using Azure = Pulumi.Azure;
     * return await Deployment.RunAsync(() =>
     * {
     *     var example = Azure.Storage.GetTableEntity.Invoke(new()
     *     {
     *         TableName = "example-table-name",
     *         StorageAccountName = "example-storage-account-name",
     *         PartitionKey = "example-partition-key",
     *         RowKey = "example-row-key",
     *     });
     * });
     * ```
     * ```go
     * package main
     * import (
     * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
     * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     * )
     * func main() {
     * 	pulumi.Run(func(ctx *pulumi.Context) error {
     * 		_, err := storage.LookupTableEntity(ctx, &storage.LookupTableEntityArgs{
     * 			TableName:          "example-table-name",
     * 			StorageAccountName: "example-storage-account-name",
     * 			PartitionKey:       "example-partition-key",
     * 			RowKey:             "example-row-key",
     * 		}, nil)
     * 		if err != nil {
     * 			return err
     * 		}
     * 		return nil
     * 	})
     * }
     * ```
     * ```java
     * package generated_program;
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.storage.StorageFunctions;
     * import com.pulumi.azure.storage.inputs.GetTableEntityArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     *     public static void stack(Context ctx) {
     *         final var example = StorageFunctions.getTableEntity(GetTableEntityArgs.builder()
     *             .tableName("example-table-name")
     *             .storageAccountName("example-storage-account-name")
     *             .partitionKey("example-partition-key")
     *             .rowKey("example-row-key")
     *             .build());
     *     }
     * }
     * ```
     * ```yaml
     * variables:
     *   example:
     *     fn::invoke:
     *       Function: azure:storage:getTableEntity
     *       Arguments:
     *         tableName: example-table-name
     *         storageAccountName: example-storage-account-name
     *         partitionKey: example-partition-key
     *         rowKey: example-row-key
     * ```
     * 
     * @param argument A collection of arguments for invoking getTableEntity.
     * @return A collection of values returned by getTableEntity.
     */
    public suspend fun getTableEntity(argument: GetTableEntityPlainArgs): GetTableEntityResult =
        getTableEntityResultToKotlin(getTableEntityPlain(argument.toJava()).await())

    /**
     * @see [getTableEntity].
     * @param partitionKey The key for the partition where the entity will be retrieved.
     * @param rowKey The key for the row where the entity will be retrieved.
     * @param storageAccountName The name of the Storage Account where the Table exists.
     * @param tableName The name of the Table.
     * @return A collection of values returned by getTableEntity.
     */
    public suspend fun getTableEntity(
        partitionKey: String,
        rowKey: String,
        storageAccountName: String,
        tableName: String,
    ): GetTableEntityResult {
        val argument = GetTableEntityPlainArgs(
            partitionKey = partitionKey,
            rowKey = rowKey,
            storageAccountName = storageAccountName,
            tableName = tableName,
        )
        return getTableEntityResultToKotlin(getTableEntityPlain(argument.toJava()).await())
    }

    /**
     * @see [getTableEntity].
     * @param argument Builder for [com.pulumi.azure.storage.kotlin.inputs.GetTableEntityPlainArgs].
     * @return A collection of values returned by getTableEntity.
     */
    public suspend fun getTableEntity(argument: suspend GetTableEntityPlainArgsBuilder.() -> Unit):
        GetTableEntityResult {
        val builder = GetTableEntityPlainArgsBuilder()
        builder.argument()
        val builtArgument = builder.build()
        return getTableEntityResultToKotlin(getTableEntityPlain(builtArgument.toJava()).await())
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy