私は現在ServiceBustriggerバインディングを使用してAzure機能を持っています
[ServiceBusTrigger("%TopicName%", "%SubscripionName%", Connection = "MyConnection")]
string catclogueEventMsgs, ILogger log, ExecutionContext context)
_
これはこのlocal.settings.jsonファイルを使用しています
"Values": {
…
"MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
"SubscriptionName": "testsubscriptionName"
"TopicName": "testtopicName",
}
_
これをappsettings.jsonファイルに代表する方法を教えてください。それは以下のようになりますか?
"Values": {
"MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
"SubscriptionName": "testsubscriptionName"
"TopicName": "testtopicName",
}
_
「値」オブジェクトを使用する代わりに、次のように "mysubs"オブジェクトが使用できますか?
"MySubs": {
"MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
"SubscriptionName": "testsubscriptionName"
"TopicName": "testtopicName",
}
_
上記の設定を使用することが可能な場合は、ServiceBustriggerバインディングでこれをどのように表しますか。これに変更しますか?
[ServiceBusTrigger("%MySubs.TopicName%", "%MySubs.SubscripionName%", Connection = "MySubs.MyConnection")]
string catclogueEventMsgs, ILogger log, ExecutionContext context)
_
私はそれが不可能であるのを恐れています。ローカルにAzure関数が_local.settings.json
_ファイルを読んで、バインディングに関連する設定を取得するようにValues
を読み取るデザインです。
Values
in local.settings.json の説明を確認してください。
ローカルに実行するときに使用されるアプリケーション設定と接続文字列のコレクション。これらの値は、AzureWebJobsStorageやAzureWebJobsDashboardなど、Azureの機能アプリのアプリ設定に対応しています。
多くのトリガとバインディングには、BLOBストレージトリガの接続など、接続文字列APP設定を参照するプロパティがあります。そのようなプロパティの場合は、値配列に定義されているアプリケーション設定が必要です。
生産のために、すなわちAzureサイトでは、 アプリケーション設定 バインディングに関連する設定を取得することができます。
ジェイソンのハイブリッドと幼児/リアムが正しいようです。
私が知ることができるものから、 "%thequeuename%"のように展開され、関数構成 - >アプリケーション設定に入力されたときにlocal.settings.jsontings.jsontings.jsontings.jsonから来る必要があります。紺碧。
実際の機能自体では、startup.csを介してJSONファイル注入を活用してから機能自体に値を含めることができます。
これは完全に別々のブログ投稿に値する(そして似ていますが、それでもまだ洗練された設定は言及されていませんが、ここで私がやったことで、年間プラス後に考え出しました。そして幻想的に動作します。
ファイル設定:
設定設定: startup.cs.
(/ home/site/wwwrootと言うにもかかわらず、ファイルはプロジェクトのルートから始まります。
public override void Configure(IFunctionsHostBuilder builder)
{
var currentDirectory = "/home/site/wwwroot";
var config = new ConfigurationBuilder()
.SetBasePath(currentDirectory)
.AddJsonFile("local.settings.json", optional: false, reloadOnChange: true)
.AddJsonFile("Config/xyz.settings.json", optional: false, reloadOnChange: true)
.AddJsonFile("Config/xyz.settings.dev.json", optional: true, reloadOnChange: true)
.AddJsonFile("Config/secret.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
builder.Services.Configure<XyzSettings>(config.GetSection("XyzSettings"));
_
これがどのようにして動作しているか
秘密と言えば:
ローカルの秘密は、公開に設定されていない限り、secrets.jsonに保存できます。
Azureでは、Azure Key Vaultに手を差し伸べる機能アプリの設定に値を保存することをお勧めします。
それはどのように構成されているかの鮮やかです。関数アプリの設定ですることは、XYZSettings:SettingNameなどの設定内の変数に名前を付けることです。次のようにして、キーボルトの場所を参照してください。
@ Microsoft.KeyVault(SecretURI = https://yourvalutname.vault.azure.net/secrets/secret-name/auto-generated-keyVaultGuid)
関数ファイル:(例としてキューのトリガーを使用するが同じように動作させる)
namespace Xyz.Functions
{
public class Azure_Queue_Add_Xyz
{
private readonly XyzSettings _xyzSettings = null;
public Azure_Queue_Add_Xyz(IOptions<AzureSettings> Azure_settings)
{
_azureSettings = Azure_settings.Value;
}
[FunctionName("Azure_Queue_Add_Xyz")]
public void Run(
[HttpTrigger(AuthorizationLevel.Function, "post",
Route = "HttpTrigger/Azure_Queue_Add_Xyz")] xyzConfig input,
[Queue("%TheQueueName%"), StorageAccount("StorageAccount")] ICollector<string> msgOutput,
ILogger logger,
ExecutionContext context)
{
logger.LogError("{0} is processing a request", context.FunctionName);
logger.LogError("{0} - Queue: {1}", context.FunctionName, _xyzSettings.TheQueueName);
logger.LogError("{0} - CloudQueueMessage: {1}", context.FunctionName, JsonConvert.SerializeObject(input));
msgOutput.Add(JsonConvert.SerializeObject(input));
}
}
}
_