Powiązanie wyjściowe usługi Azure Blob Storage dla usługi Azure Functions
Powiązanie wyjściowe umożliwia modyfikowanie i usuwanie danych magazynu obiektów blob w funkcji platformy Azure.
Aby uzyskać informacje na temat konfiguracji i konfiguracji, zobacz omówienie.
Ważne
W tym artykule są używane karty do obsługi wielu wersji modelu programowania Node.js. Model w wersji 4 jest ogólnie dostępny i ma bardziej elastyczne i intuicyjne środowisko dla deweloperów języka JavaScript i Języka TypeScript. Aby uzyskać więcej informacji na temat sposobu działania modelu w wersji 4, zapoznaj się z przewodnikiem dewelopera dotyczącym usługi Azure Functions Node.js. Aby dowiedzieć się więcej o różnicach między wersjami 3 i v4, zapoznaj się z przewodnikiem migracji.
Usługa Azure Functions obsługuje dwa modele programowania dla języka Python. Sposób definiowania powiązań zależy od wybranego modelu programowania.
Model programowania w języku Python w wersji 2 umożliwia definiowanie powiązań przy użyciu dekoratorów bezpośrednio w kodzie funkcji języka Python. Aby uzyskać więcej informacji, zobacz przewodnik dla deweloperów języka Python.
Ten artykuł obsługuje oba modele programowania.
Przykład
Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:
- Model izolowanego procesu roboczego: skompilowana funkcja języka C#, która jest uruchamiana w procesie roboczym izolowanym od środowiska uruchomieniowego. Proces izolowanego procesu roboczego jest wymagany do obsługi funkcji języka C# uruchomionych w wersjach LTS i innych niż LTS platformy .NET oraz programu .NET Framework. Rozszerzenia dla izolowanych funkcji procesu roboczego używają
Microsoft.Azure.Functions.Worker.Extensions.*
przestrzeni nazw. - Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi Functions. W odmianie tego modelu funkcje można uruchamiać przy użyciu skryptów języka C#, które są obsługiwane głównie w przypadku edytowania portalu języka C#. Rozszerzenia dla funkcji przetwarzania używają
Microsoft.Azure.WebJobs.Extensions.*
przestrzeni nazw.
Ważne
Wsparcie zostanie zakończone dla modelu procesu 10 listopada 2026 r. Zdecydowanie zalecamy przeprowadzenie migracji aplikacji do izolowanego modelu procesu roboczego w celu uzyskania pełnej obsługi.
Poniższy przykład to funkcja języka C#, która jest uruchamiana w izolowanym procesie roboczym i używa wyzwalacza obiektu blob z powiązaniami wejściowymi obiektów blob i wyjściowymi obiektów blob. Funkcja jest wyzwalana przez utworzenie obiektu blob w kontenerze test-samples-trigger . Odczytuje on plik tekstowy z kontenera test-samples-input i tworzy nowy plik tekstowy w kontenerze wyjściowym na podstawie nazwy wyzwalanego pliku.
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace SampleApp
{
public static class BlobFunction
{
[Function(nameof(BlobFunction))]
[BlobOutput("test-samples-output/{name}-output.txt")]
public static string Run(
[BlobTrigger("test-samples-trigger/{name}")] string myTriggerItem,
[BlobInput("test-samples-input/sample1.txt")] string myBlob,
FunctionContext context)
{
var logger = context.GetLogger("BlobFunction");
logger.LogInformation("Triggered Item = {myTriggerItem}", myTriggerItem);
logger.LogInformation("Input Item = {myBlob}", myBlob);
// Blob Output
return "blob-output content";
}
}
}
Ta sekcja zawiera następujące przykłady:
- Wyzwalacz HTTP przy użyciu elementu OutputBinding
- Wyzwalacz kolejki przy użyciu wartości zwracanej przez funkcję
Wyzwalacz HTTP przy użyciu elementu OutputBinding (Java)
W poniższym przykładzie pokazano funkcję Języka Java, która używa HttpTrigger
adnotacji do odbierania parametru zawierającego nazwę pliku w kontenerze magazynu obiektów blob. Adnotacja BlobInput
odczytuje następnie plik i przekazuje jego zawartość do funkcji jako byte[]
. Adnotacja BlobOutput
wiąże się OutputBinding outputItem
z elementem , który jest następnie używany przez funkcję do zapisywania zawartości wejściowego obiektu blob do skonfigurowanego kontenera magazynu.
@FunctionName("copyBlobHttp")
@StorageAccount("Storage_Account_Connection_String")
public HttpResponseMessage copyBlobHttp(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@BlobInput(
name = "file",
dataType = "binary",
path = "samples-workitems/{Query.file}")
byte[] content,
@BlobOutput(
name = "target",
path = "myblob/{Query.file}-CopyViaHttp")
OutputBinding<String> outputItem,
final ExecutionContext context) {
// Save blob to outputItem
outputItem.setValue(new String(content, StandardCharsets.UTF_8));
// build HTTP response with size of requested blob
return request.createResponseBuilder(HttpStatus.OK)
.body("The size of \"" + request.getQueryParameters().get("file") + "\" is: " + content.length + " bytes")
.build();
}
Wyzwalacz kolejki przy użyciu wartości zwracanej funkcji (Java)
W poniższym przykładzie pokazano funkcję Języka Java, która używa QueueTrigger
adnotacji do odbierania komunikatu zawierającego nazwę pliku w kontenerze magazynu obiektów blob. Adnotacja BlobInput
odczytuje następnie plik i przekazuje jego zawartość do funkcji jako byte[]
. Adnotacja BlobOutput
wiąże się z wartością zwracaną przez funkcję, która jest następnie używana przez środowisko uruchomieniowe do zapisywania zawartości wejściowego obiektu blob do skonfigurowanego kontenera magazynu.
@FunctionName("copyBlobQueueTrigger")
@StorageAccount("Storage_Account_Connection_String")
@BlobOutput(
name = "target",
path = "myblob/{queueTrigger}-Copy")
public String copyBlobQueue(
@QueueTrigger(
name = "filename",
dataType = "string",
queueName = "myqueue-items")
String filename,
@BlobInput(
name = "file",
path = "samples-workitems/{queueTrigger}")
String content,
final ExecutionContext context) {
context.getLogger().info("The content of \"" + filename + "\" is: " + content);
return content;
}
W bibliotece środowiska uruchomieniowego funkcji Języka Java użyj @BlobOutput
adnotacji parametrów funkcji, których wartość zostanie zapisana w obiekcie w magazynie obiektów blob. Typ parametru powinien mieć OutputBinding<T>
wartość , gdzie T
jest dowolnym natywnym typem Java lub poJO.
W poniższym przykładzie przedstawiono funkcję TypeScript wyzwalaną przez kolejkę, która tworzy kopię obiektu blob. Funkcja jest wyzwalana przez komunikat kolejki zawierający nazwę obiektu blob do skopiowania. Nowy obiekt blob nosi nazwę {originalblobname}-Copy.
import { app, input, InvocationContext, output } from '@azure/functions';
const blobInput = input.storageBlob({
path: 'samples-workitems/{queueTrigger}',
connection: 'MyStorageConnectionAppSetting',
});
const blobOutput = output.storageBlob({
path: 'samples-workitems/{queueTrigger}-Copy',
connection: 'MyStorageConnectionAppSetting',
});
export async function storageQueueTrigger1(queueItem: unknown, context: InvocationContext): Promise<unknown> {
return context.extraInputs.get(blobInput);
}
app.storageQueue('storageQueueTrigger1', {
queueName: 'myqueue-items',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [blobInput],
return: blobOutput,
handler: storageQueueTrigger1,
});
Poniższy przykład przedstawia funkcję JavaScript wyzwalaną przez kolejkę, która tworzy kopię obiektu blob. Funkcja jest wyzwalana przez komunikat kolejki zawierający nazwę obiektu blob do skopiowania. Nowy obiekt blob nosi nazwę {originalblobname}-Copy.
const { app, input, output } = require('@azure/functions');
const blobInput = input.storageBlob({
path: 'samples-workitems/{queueTrigger}',
connection: 'MyStorageConnectionAppSetting',
});
const blobOutput = output.storageBlob({
path: 'samples-workitems/{queueTrigger}-Copy',
connection: 'MyStorageConnectionAppSetting',
});
app.storageQueue('storageQueueTrigger1', {
queueName: 'myqueue-items',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [blobInput],
return: blobOutput,
handler: (queueItem, context) => {
return context.extraInputs.get(blobInput);
},
});
W poniższym przykładzie pokazano, jak utworzyć kopię przychodzącego obiektu blob jako dane wyjściowe z funkcji programu PowerShell.
W pliku konfiguracji funkcji (function.json) trigger
właściwość metadanych jest używana do określania nazwy wyjściowego obiektu blob we właściwościach path
.
Uwaga
Aby uniknąć nieskończonych pętli, upewnij się, że ścieżki wejściowe i wyjściowe są różne.
{
"bindings": [
{
"name": "myInputBlob",
"path": "data/{trigger}",
"connection": "MyStorageConnectionAppSetting",
"direction": "in",
"type": "blobTrigger"
},
{
"name": "myOutputBlob",
"type": "blob",
"path": "data/copy/{trigger}",
"connection": "MyStorageConnectionAppSetting",
"direction": "out"
}
],
"disabled": false
}
Oto kod programu PowerShell:
# Input bindings are passed in via param block.
param([byte[]] $myInputBlob, $TriggerMetadata)
Write-Host "PowerShell Blob trigger function Processed blob Name: $($TriggerMetadata.Name)"
Push-OutputBinding -Name myOutputBlob -Value $myInputBlob
W poniższym przykładzie przedstawiono powiązania wejściowe i wyjściowe obiektu blob. Przykład zależy od tego, czy używasz modelu programowania w wersji 1, czy w wersji 2 języka Python.
Kod tworzy kopię obiektu blob.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="BlobOutput1")
@app.route(route="file")
@app.blob_input(arg_name="inputblob",
path="sample-workitems/test.txt",
connection="<BLOB_CONNECTION_SETTING>")
@app.blob_output(arg_name="outputblob",
path="newblob/test.txt",
connection="<BLOB_CONNECTION_SETTING>")
def main(req: func.HttpRequest, inputblob: str, outputblob: func.Out[str]):
logging.info(f'Python Queue trigger function processed {len(inputblob)} bytes')
outputblob.set(inputblob)
return "ok"
Atrybuty
Zarówno w procesie przetwarzania, jak i izolowanym procesie roboczym biblioteki języka C# używają atrybutu do zdefiniowania funkcji. Zamiast tego skrypt języka C# używa pliku konfiguracji function.json zgodnie z opisem w przewodniku obsługi skryptów języka C#.
Konstruktor BlobOutputAttribute
przyjmuje następujące parametry:
Parametr | Opis |
---|---|
Ścieżka obiektu blob | Ścieżka do obiektu blob. |
Połączenie | Nazwa ustawienia aplikacji lub kolekcji ustawień, która określa sposób nawiązywania połączenia z obiektami blob platformy Azure. Zobacz Połączenia. |
Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values
.
Dekoratory
Dotyczy tylko modelu programowania w wersji 2 języka Python.
W przypadku funkcji języka Python w wersji 2 zdefiniowanych przy użyciu dekoratorów następujące właściwości w blob_input
elementach i blob_output
definiują wyzwalacze usługi Blob Storage:
Właściwości | opis |
---|---|
arg_name |
Nazwa zmiennej reprezentującej obiekt blob w kodzie funkcji. |
path |
Ścieżka do obiektu blob Dla blob_input dekoratora to odczyt obiektu blob. W przypadku dekoratora blob_output jest to dane wyjściowe lub kopia wejściowego obiektu blob. |
connection |
Parametry połączenia konta magazynu. |
dataType |
W przypadku dynamicznie typiowanych języków określa bazowy typ danych. Możliwe wartości to string , binary lub stream . Aby uzyskać więcej informacji, zapoznaj się z pojęciami dotyczącymi wyzwalaczy i powiązań. |
Aby zapoznać się z funkcjami języka Python zdefiniowanymi przy użyciu function.json, zobacz sekcję Konfiguracja .
Adnotacje
Atrybut @BlobOutput
zapewnia dostęp do obiektu blob, który wyzwolił funkcję. Jeśli używasz tablicy bajtów z atrybutem , ustaw wartość dataType
binary
. Szczegółowe informacje można znaleźć w przykładzie danych wyjściowych.
Konfigurowanie
Dotyczy tylko modelu programowania języka Python w wersji 1.
W poniższej tabeli opisano właściwości, które można ustawić dla options
obiektu przekazanego output.storageBlob()
do metody .
Właściwości | opis |
---|---|
path | Ścieżka do kontenera obiektów blob. |
połączenie | Nazwa ustawienia aplikacji lub kolekcji ustawień, która określa sposób nawiązywania połączenia z obiektami blob platformy Azure. Zobacz Połączenia. |
W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json .
Właściwości | Opis |
---|---|
type | Musi być ustawiona wartość blob . |
direction | Musi być ustawiona na out wartość dla powiązania wyjściowego. Wyjątki są zanotowane w sekcji użycia . |
name | Nazwa zmiennej reprezentującej obiekt blob w kodzie funkcji. Ustaw wartość na , aby $return odwoływać się do wartości zwracanej przez funkcję. |
path | Ścieżka do kontenera obiektów blob. |
połączenie | Nazwa ustawienia aplikacji lub kolekcji ustawień, która określa sposób nawiązywania połączenia z obiektami blob platformy Azure. Zobacz Połączenia. |
Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.
Użycie
Typy powiązań obsługiwane przez dane wyjściowe obiektu blob zależą od wersji pakietu rozszerzenia i modalności języka C# używanej w aplikacji funkcji.
Jeśli chcesz, aby funkcja zapisywała w jednym obiekcie blob, powiązanie wyjściowe obiektu blob może wiązać się z następującymi typami:
Type | Opis |
---|---|
string |
Zawartość obiektu blob jako ciąg. Użyj polecenia , gdy zawartość obiektu blob jest prostym tekstem. |
byte[] |
Bajty zawartości obiektu blob. |
Typy serializowalne w formacie JSON | Obiekt reprezentujący zawartość obiektu blob JSON. Funkcje próbują serializować zwykły typ obiektu CLR (POCO) do danych JSON. |
Jeśli chcesz, aby funkcja zapisywała w wielu obiektach blob, powiązanie wyjściowe obiektu blob może wiązać się z następującymi typami:
Type | Opis |
---|---|
T[] gdzie T jest jednym z typów powiązań wyjściowych pojedynczego obiektu blob |
Tablica zawierająca zawartość dla wielu obiektów blob. Każdy wpis reprezentuje zawartość jednego obiektu blob. |
W przypadku innych scenariuszy wyjściowych utwórz obiekt BlobClient lub BlobContainerClient z innymi typami bezpośrednio z usługi Azure.Storage.Blobs. Zobacz Rejestrowanie klientów platformy Azure, aby zapoznać się z przykładem użycia wstrzykiwania zależności w celu utworzenia typu klienta z zestawu Azure SDK.
Powiązanie z elementem string
lub Byte[]
jest zalecane tylko wtedy, gdy rozmiar obiektu blob jest niewielki. Jest to zalecane, ponieważ cała zawartość obiektu blob jest ładowana do pamięci. W przypadku większości obiektów blob użyj Stream
typu lub BlobClient
. Aby uzyskać więcej informacji, zobacz Współbieżność i użycie pamięci.
Jeśli podczas próby powiązania z jednym z typów zestawu STORAGE SDK zostanie wyświetlony komunikat o błędzie, upewnij się, że masz odwołanie do odpowiedniej wersji zestawu SDK usługi Storage.
Możesz również użyć atrybutu StorageAccountAttribute , aby określić konto magazynu do użycia. Można to zrobić, gdy musisz użyć innego konta magazynu niż inne funkcje w bibliotece. Konstruktor przyjmuje nazwę ustawienia aplikacji, które zawiera parametry połączenia magazynu. Atrybut można zastosować na poziomie parametru, metody lub klasy. W poniższym przykładzie przedstawiono poziom klasy i poziom metody:
[StorageAccount("ClassLevelStorageAppSetting")]
public static class AzureFunctions
{
[FunctionName("BlobTrigger")]
[StorageAccount("FunctionLevelStorageAppSetting")]
public static void Run( //...
{
....
}
Konto magazynu do użycia jest określane w następującej kolejności:
BlobTrigger
Właściwość atrybutuConnection
.- Atrybut
StorageAccount
zastosowany do tego samego parametruBlobTrigger
co atrybut. - Atrybut
StorageAccount
zastosowany do funkcji. - Atrybut
StorageAccount
zastosowany do klasy. - Domyślne konto magazynu aplikacji funkcji, które jest zdefiniowane w ustawieniu
AzureWebJobsStorage
aplikacji.
Atrybut @BlobOutput
zapewnia dostęp do obiektu blob, który wyzwolił funkcję. Jeśli używasz tablicy bajtów z atrybutem , ustaw wartość dataType
binary
. Szczegółowe informacje można znaleźć w przykładzie danych wyjściowych.
Uzyskaj dostęp do danych obiektu blob, zwracając wartość bezpośrednio lub przy użyciu polecenia context.extraOutputs.set()
.
Uzyskaj dostęp do danych obiektu blob za pośrednictwem parametru zgodnego z nazwą wyznaczoną przez parametr name powiązania w pliku function.json .
Parametry funkcji można zadeklarować jako następujące typy, aby zapisywać dane w magazynie obiektów blob:
- Ciągi jako
func.Out[str]
- Strumienie jako
func.Out[func.InputStream]
Szczegółowe informacje można znaleźć w przykładzie danych wyjściowych.
Połączenia
Właściwość connection
jest odwołaniem do konfiguracji środowiska, która określa sposób łączenia aplikacji z obiektami blob platformy Azure. Może to określać:
- Nazwa ustawienia aplikacji zawierającego parametry połączenia
- Nazwa udostępnionego prefiksu dla wielu ustawień aplikacji, definiująca połączenie oparte na tożsamościach.
Jeśli skonfigurowana wartość jest dokładnie zgodna z pojedynczym ustawieniem i dopasowaniem prefiksu dla innych ustawień, zostanie użyte dokładne dopasowanie.
Connection string
Aby uzyskać parametry połączenia, wykonaj kroki opisane w temacie Zarządzanie kluczami dostępu do konta magazynu. Parametry połączenia musi być kontem magazynu ogólnego przeznaczenia, a nie kontem usługi Blob Storage.
Ta parametry połączenia powinna być przechowywana w ustawieniu aplikacji z nazwą zgodną z wartością określoną przez connection
właściwość konfiguracji powiązania.
Jeśli nazwa ustawienia aplikacji zaczyna się od "AzureWebJobs", możesz określić tylko pozostałą część nazwy w tym miejscu. Jeśli na przykład ustawiono connection
wartość "MyStorage", środowisko uruchomieniowe usługi Functions wyszukuje ustawienie aplikacji o nazwie "AzureWebJobsMyStorage". W przypadku pozostawienia connection
pustego środowisko uruchomieniowe usługi Functions używa domyślnej parametry połączenia Storage w ustawieniu aplikacji o nazwie AzureWebJobsStorage
.
Połączenia oparte na tożsamościach
Jeśli używasz wersji 5.x lub nowszej rozszerzenia (pakietu 3.x lub nowszego dla stosów języka non-.NET), zamiast używać parametry połączenia z wpisem tajnym, możesz mieć aplikację korzystającą z tożsamości Microsoft Entra. Aby użyć tożsamości, należy zdefiniować ustawienia w ramach wspólnego prefiksu, który mapuje na connection
właściwość w konfiguracji wyzwalacza i powiązania.
Jeśli ustawisz wartość connection
"AzureWebJobsStorage", zobacz Nawiązywanie połączenia z magazynem hostów przy użyciu tożsamości. W przypadku wszystkich innych połączeń rozszerzenie wymaga następujących właściwości:
Właściwości | Szablon zmiennej środowiskowej | opis | Przykładowa wartość |
---|---|---|---|
Blob Service URI | <CONNECTION_NAME_PREFIX>__serviceUri 1 |
Identyfikator URI płaszczyzny danych usługi obiektów blob, z którą nawiązujesz połączenie, przy użyciu schematu HTTPS. | <https:// storage_account_name.blob.core.windows.net> |
1 <CONNECTION_NAME_PREFIX>__blobServiceUri
może służyć jako alias. Jeśli konfiguracja połączenia będzie używana przez wyzwalacz obiektu blob, blobServiceUri
musi również towarzyszyć queueServiceUri
element . Zobacz poniżej.
Nie serviceUri
można użyć formularza, gdy ogólna konfiguracja połączenia ma być używana w obiektach blob, kolejkach i/lub tabelach. Identyfikator URI może wyznaczyć tylko usługę obiektów blob. Alternatywnie możesz podać identyfikator URI przeznaczony specjalnie dla każdej usługi, co pozwala na użycie jednego połączenia. Jeśli podano obie wersje, zostanie użyty formularz z wieloma usługami. Aby skonfigurować połączenie dla wielu usług, zamiast <CONNECTION_NAME_PREFIX>__serviceUri
, ustaw:
Właściwości | Szablon zmiennej środowiskowej | opis | Przykładowa wartość |
---|---|---|---|
Blob Service URI | <CONNECTION_NAME_PREFIX>__blobServiceUri |
Identyfikator URI płaszczyzny danych usługi obiektów blob, z którą nawiązujesz połączenie, przy użyciu schematu HTTPS. | <https:// storage_account_name.blob.core.windows.net> |
Identyfikator URI usługi Queue Service (wymagany dla wyzwalaczyobiektów blob 2) | <CONNECTION_NAME_PREFIX>__queueServiceUri |
Identyfikator URI płaszczyzny danych usługi kolejki przy użyciu schematu HTTPS. Ta wartość jest wymagana tylko w przypadku wyzwalaczy obiektów blob. | <https:// storage_account_name.queue.core.windows.net> |
2 Wyzwalacz obiektu blob obsługuje błąd w wielu ponownych próbach, zapisując do kolejki zatrute obiekty blob. W formularzu serviceUri
AzureWebJobsStorage
jest używane połączenie. Jednak podczas określania blobServiceUri
identyfikatora URI usługi kolejki należy również podać element queueServiceUri
. Zaleca się używanie usługi z tego samego konta magazynu co usługa blob. Należy również upewnić się, że wyzwalacz może odczytywać i zapisywać komunikaty w skonfigurowanej usłudze kolejki, przypisując rolę, na przykład Współautor danych kolejki magazynu.
Inne właściwości można ustawić, aby dostosować połączenie. Zobacz Typowe właściwości połączeń opartych na tożsamościach.
W przypadku hostowania w usłudze Azure Functions połączenia oparte na tożsamościach używają tożsamości zarządzanej. Tożsamość przypisana przez system jest używana domyślnie, chociaż tożsamości przypisanej przez użytkownika można określić za credential
pomocą właściwości i clientID
. Należy pamiętać, że konfigurowanie tożsamości przypisanej przez użytkownika przy użyciu identyfikatora zasobu nie jest obsługiwane. W przypadku uruchamiania w innych kontekstach, takich jak programowanie lokalne, tożsamość dewelopera jest używana, chociaż można to dostosować. Zobacz Programowanie lokalne z połączeniami opartymi na tożsamościach.
Udzielanie uprawnień tożsamości
Niezależnie od używanej tożsamości musi mieć uprawnienia do wykonywania zamierzonych akcji. W przypadku większości usług platformy Azure oznacza to, że musisz przypisać rolę w kontroli dostępu opartej na rolach platformy Azure przy użyciu wbudowanych lub niestandardowych ról, które zapewniają te uprawnienia.
Ważne
Niektóre uprawnienia mogą być uwidocznione przez usługę docelową, które nie są niezbędne dla wszystkich kontekstów. Jeśli to możliwe, przestrzegaj zasady najniższych uprawnień, udzielając tożsamości tylko wymaganych uprawnień. Jeśli na przykład aplikacja musi mieć możliwość odczytu tylko ze źródła danych, użyj roli, która ma uprawnienia tylko do odczytu. Niewłaściwe byłoby przypisanie roli, która umożliwia również zapisywanie w tej usłudze, ponieważ byłoby to nadmierne uprawnienie do operacji odczytu. Podobnie należy upewnić się, że przypisanie roli jest ograniczone tylko do zasobów, które należy odczytać.
Musisz utworzyć przypisanie roli, które zapewnia dostęp do kontenera obiektów blob w czasie wykonywania. Role zarządzania, takie jak Właściciel , nie są wystarczające. W poniższej tabeli przedstawiono wbudowane role, które są zalecane podczas korzystania z rozszerzenia usługi Blob Storage w normalnej operacji. Aplikacja może wymagać dalszych uprawnień na podstawie zapisanego kodu.
Typ powiązania | Przykładowe role wbudowane |
---|---|
Wyzwalacz | Właściciel danych obiektu blob usługi Storage i współautordanych kolejki magazynu 1 Dodatkowe uprawnienia muszą być również przyznane połączeniu AzureWebJobsStorage.2 |
Powiązanie wejściowe | Czytelnik danych obiektu blob usługi Storage |
Powiązanie wyjściowe | Właściciel danych obiektu blob usługi Storage |
1 Wyzwalacz obiektu blob obsługuje błąd w wielu ponownych próbach, zapisując zatrute obiekty blob do kolejki na koncie magazynu określonym przez połączenie.
2 Połączenie AzureWebJobsStorage jest używane wewnętrznie dla obiektów blob i kolejek, które umożliwiają wyzwalacz. Jeśli jest skonfigurowany do korzystania z połączenia opartego na tożsamościach, wymaga dodatkowych uprawnień poza domyślnym wymaganiem. Wymagane uprawnienia są objęte rolami Właściciel danych obiektu blob usługi Storage, Współautor danych kolejki usługi Storage i Współautor konta magazynu. Aby dowiedzieć się więcej, zobacz Nawiązywanie połączenia z magazynem hostów przy użyciu tożsamości.
Wyjątki i kody powrotne
Wiązanie | Odwołanie |
---|---|
Obiekt blob | Kody błędów obiektu blob |
Obiekt blob, tabela, kolejka | Kody błędów magazynu |
Obiekt blob, tabela, kolejka | Rozwiązywanie problemów |