Biblioteka klienta tabel usługi Azure WebJobs dla platformy .NET — wersja 1.1.0
To rozszerzenie zapewnia funkcjonalność uzyskiwania dostępu do tabel platformy Azure w Azure Functions.
Wprowadzenie
Instalowanie pakietu
Zainstaluj rozszerzenie Tables za pomocą narzędzia NuGet:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables
Wymagania wstępne
Do korzystania z tego pakietu potrzebna jest subskrypcja platformy Azure oraz konto magazynu lub konto tabel usługi Cosmos .
Korzystanie z tabel magazynu
Aby utworzyć nowe konto magazynu, możesz użyć witryny Azure Portal, Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Oto przykład użycia interfejsu wiersza polecenia platformy Azure:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Korzystanie z tabel cosmos
Aby utworzyć nowe tabele usługi Cosmos, możesz użyć witryny Azure Portal, Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.
Uwierzytelnianie klienta
Połączenie reprezentuje zestaw informacji wymaganych do nawiązania połączenia z usługą tabel. Może zawierać parametry połączenia, punkt końcowy, poświadczenia tokenu lub klucz wspólny.
Właściwość Connection
definiuje TableAttribute
, które połączenie jest używane do uzyskiwania dostępu do usługi Table Service. Na przykład [Tables(Connection="MyTableService")]
użyje MyTableService
połączenia.
Informacje o połączeniu można ustawić w local.settings.json
ustawieniach aplikacji lub w Azure Portal.
Podczas dodawania ustawienia do pliku local.settings.json umieść je w Values
właściwości :
{
"IsEncrypted": false,
"Values": {
"MyTableService": "..."
}
}
Podczas dodawania ustawienia do ustawień aplikacji w Azure Portal użyj podanej nazwy bezpośrednio:
MyTableService = ...
Rozszerzenie Tabel domyślnie używa AzureWebJobsStorage
nazwy połączenia.
Parametry połączenia
Aby użyć uwierzytelniania parametrów połączenia, przypisz wartość parametrów połączenia bezpośrednio do ustawienia połączenia.
<ConnectionName>
= DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net
Używanie poświadczeń punktu końcowego i tokenu
UWAGA: uwierzytelnianie poświadczeń tokenu jest obsługiwane tylko w przypadku tabel magazynu.
<ConnectionName>__endpoint
= https://...table.core.windows.net
Jeśli nie podano żadnych informacji o poświadczeniach DefaultAzureCredential
, są używane.
W przypadku korzystania z tożsamości clientId
zarządzanej przez użytkownika należy podać ustawienia i credential
:
<ConnectionName>__credential
= managedidentity
<ConnectionName>__clientId
= <user-assigned client id>
Używanie poświadczeń klucza współdzielonego
W przypadku korzystania z uwierzytelniania endpoint
accountKey
za pomocą klucza współdzielonego należy podać element .accountName
<ConnectionName>__endpoint
= https://...table.core.windows.net
<ConnectionName>__credential__accountName
= <account name>
<ConnectionName>__credential__accountKey
= <account key>
Kluczowe pojęcia
Powiązanie wejściowe umożliwia odczytywanie tabeli jako danych wejściowych funkcji platformy Azure. Powiązanie danych wyjściowych umożliwia modyfikowanie i usuwanie wierszy tabeli w funkcji platformy Azure.
Postępuj zgodnie z samouczkiem dotyczącym powiązania wejściowego i powiązaniem danych wyjściowych , aby dowiedzieć się więcej o korzystaniu z tego rozszerzenia na potrzeby uzyskiwania dostępu do usługi tabel.
Przykłady
Rozszerzenia tabel udostępniają tylko powiązania. Powiązania same w sobie nie mogą wyzwalać funkcji. Może tylko odczytywać lub zapisywać wpisy w tabeli.
W poniższym przykładzie używamy wyzwalacza HTTP do wywołania funkcji.
Wiązanie z pojedynczą jednostką
public class InputSingle
{
[FunctionName("InputSingle")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable", "<PartitionKey>", "<RowKey>")] TableEntity entity, ILogger log)
{
log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity["Text"]}");
}
}
Wiązanie z pojedynczą jednostką przy użyciu typu modelu
public class MyEntity
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
public class InputSingleModel
{
[FunctionName("InputSingleModel")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable", "<PartitionKey>", "<RowKey>")] MyEntity entity, ILogger log)
{
log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity.Text}");
}
}
Wiązanie z wieloma jednostkami za pomocą filtru
public class InputMultipleEntitiesFilter
{
[FunctionName("InputMultipleEntitiesFilter")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable", "<PartitionKey>", Filter = "Text ne ''")] IEnumerable<TableEntity> entities, ILogger log)
{
foreach (var entity in entities)
{
log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity["Text"]}");
}
}
}
Tworzenie pojedynczej jednostki
public class OutputSingle
{
[FunctionName("OutputSingle")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable")] out TableEntity entity)
{
entity = new TableEntity("<PartitionKey>", "<RowKey>")
{
["Text"] = "Hello"
};
}
}
Tworzenie pojedynczej jednostki przy użyciu modelu
public class MyEntity
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
public class OutputSingleModel
{
[FunctionName("OutputSingleModel")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
[Table("MyTable")] out MyEntity entity)
{
entity = new MyEntity()
{
PartitionKey = "<PartitionKey>",
RowKey = "<RowKey>",
Text = "Hello"
};
}
}
Tworzenie wielu jednostek
public class OutputMultiple
{
[FunctionName("OutputMultiple")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
[Table("MyTable")] IAsyncCollector<TableEntity> collector)
{
for (int i = 0; i < 10; i++)
{
collector.AddAsync(new TableEntity("<PartitionKey>", i.ToString())
{
["Text"] = i.ToString()
});
}
}
}
Tworzenie wielu jednostek przy użyciu modelu
public class MyEntity
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
public class OutputMultipleModel
{
[FunctionName("OutputMultipleModel")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
[Table("MyTable")] IAsyncCollector<MyEntity> collector)
{
for (int i = 0; i < 10; i++)
{
collector.AddAsync(new MyEntity()
{
PartitionKey = "<PartitionKey>",
RowKey = i.ToString(),
Text = i.ToString()
});
}
}
}
Powiązanie z typem TableClient zestawu SDK
Użyj parametru metody TableClient, aby uzyskać dostęp do tabeli przy użyciu zestawu AZURE Tables SDK.
public class BindTableClient
{
[FunctionName("BindTableClient")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
[Table("MyTable")] TableClient client)
{
await client.AddEntityAsync(new TableEntity("<PartitionKey>", "<RowKey>")
{
["Text"] = request.GetEncodedPathAndQuery()
});
}
}
Rozwiązywanie problemów
Zapoznaj się z tematem Monitorowanie Azure Functions, aby uzyskać wskazówki dotyczące rozwiązywania problemów.
Następne kroki
Przeczytaj wprowadzenie do funkcji platformy Azure lub przewodnik tworzenia funkcji platformy Azure.
Współtworzenie
Zobacz CONTRIBUTING.md , aby uzyskać szczegółowe informacje na temat kompilowania, testowania i współtworzenia tej biblioteki.
W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę cla.microsoft.com.
W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z opencode@microsoft.com dodatkowymi pytaniami lub komentarzami.