ここでは、Azure関数を使用してイベントハブからJSON文字列メッセージを取り出し、AWSのPostgres RDSに挿入しようとしています。残念ながら、当面はデータを保持するためにPostgres RDSを使用する必要がありますが、将来Azure技術に変更される可能性があります。Azure関数 - イベントハブをAWS RDS Postgres
イベントハブにバインドされた関数を取得でき、正常にメッセージを受信できます。
run.csx
#r "System.Data"
using System;
using System.Data;
using Npgsql;
public static void Run(string myEventHubMessage, TraceWriter log)
{
log.Info($"C# Event Hub trigger function processed a message:
{myEventHubMessage}");
using (NpgsqlConnection connection = new NpgsqlConnection(
"Host=host;Port=5432;Database=database;Username=username;Password=password;Timeout=300"))
{
try
{
log.Info("Opening connection to Postgres...");
connection.Open();
log.Info("Connection open.");
}
catch (Exception ex)
{
log.Info($"Failed to open connection to Postgres. EXCEPTION:
{ex.Message}");
throw;
}
}
}
project.json
{
"frameworks": {
"net46":{
"dependencies": {
"Npgsql": "3.2.2",
}
}
}
}
私はPostgresのに接続するために、ログに次のエラーを与えて接続することができないようしようとするNpgsqlのを使用しています:
2017-04-27T09:58:30.710 Failed to open connection to Postgres. EXCEPTION: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
私はこのデータベースが利用可能であることを知っており、タイムアウトなどを接続文字列は運がありません。
これは実際には可能ですか?
多くのありがとうございます。
Azureは発信接続を制限してはいけません... AWSにはネットワーク制限が設定されていますか?コンソールアプリを作って、オフィス、家庭、Azure Web Jobなどのさまざまな場所から実行して、どこにでも動作するかどうかを確認してください。 – Mikhail
@Mikhailは返信Mikhailに感謝します。あなたが言及したことは実際には問題であるかもしれません。私は、データベースにアクセスできるIP範囲に制限されていると思います。私はこれを回避して、あなたに戻ることができるかどうかがわかります。 – Chris
Azureでは、SQL Serverへの外部接続を制限するファイアウォール設定がありますが、IPを追加してSQL Serverに接続できるようにすることができます。AWSにはこのような設定がいくつかあります。 –