2025年7月25日金曜日

AWS DynamoDBを.NET Core(.NET9)で読み込む

AWS DynamoDBが現在 本番DBとして稼働している

上記DBのレコードを出力して次期システムのDBにデータをロードしたい

nugetから  AWSSDK.DynamoDBv2 を インストールします

サンプルソースを実行したが

AWSに接続するにはアクセスキーIDとシークレットキーが必要 

基本的なことを知らなくて、接続出来なくて右往左往しました。

実行エラーを Copilot君に読ませたら、教えてくれました

 

アクセスキーIDとシークレットキーを設定するソース

using Amazon;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.DataModel;
using System.Threading.Tasks;
//using AWStoSQL.Models;  テーブルをクラス化
using System.Text;
using System.IO;
using System.Reflection;

//アクセスキーIDとシークレットキーをセット
string accessKeyId = "あくせすきー";
string secretAccessKey = "しーくれっときー";

// DynamoDBクライアントを初期化
var config = new AmazonDynamoDBConfig
{
    RegionEndpoint = Amazon.RegionEndpoint.APNortheast1 // 例: us-east-1
};
var client = new AmazonDynamoDBClient(accessKeyId, secretAccessKey, config);

// DynamoDBから全件取得
var context = new DynamoDBContext(client);
var items = await context.ScanAsync<テーブルクラス>(new List<ScanCondition>()).GetRemainingAsync();

// CSV出力処理
var csvPath = "d:\\temp\\output.csv";
var properties = typeof(テーブルクラス).GetProperties(BindingFlags.Public | BindingFlags.Instance);

// ヘッダー作成
var sb = new StringBuilder();
sb.AppendLine(string.Join(",", properties.Select(p => p.Name)));

// データ行作成
foreach (var item in items)
{
    var values = properties.Select(p => {
        var value = p.GetValue(item, null);
        return value != null ? value.ToString().Replace(",", " ") : "";
    });
    sb.AppendLine(string.Join(",", values));
}

// ファイル書き込み
File.WriteAllText(csvPath, sb.ToString(), Encoding.UTF8);

Console.WriteLine($"CSVファイルを出力しました: {csvPath}");


ここからテーブルクラス

 using Amazon;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.DataModel;
using System.Threading.Tasks;
namespace AWStoSQL.Models;

[DynamoDBTable("AWSのテーブル名")]

internal class Z_Committee
{
        [DynamoDBHashKey("id")]
        public double id { get; set; }

        [DynamoDBRangeKey("bookId")]
        public string bookId { get; set; }

        public int user_Id { get; set; }
        public string title { get; set; }
        public string? created_at { get; set; }
        public string? updated_at { get; set; }
}


2025年7月7日月曜日

インプロセス ホスティングは AspNetCoreModule ではサポートされていません。

MVC C俺Projectを公開時にエラー発生

インプロセス ホスティングは AspNetCoreModule ではサポートされていません。 

 

上記のエラーが発生したら Web.configの設定を変更 

<system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>



modules="AspNetCoreModule" -> "AspNetCoreModuleV2"

 

2025年6月15日日曜日

「Web発行」でWebアプリケーションを発行する で発行出来なかった理由

 「Web発行」でWebアプリケーションを発行する

 Visual StudioからIISのWeb発行よりWebアプリを配布していたが

とある理由でweb siteを再構築することになり

IIS上にWeb配布設定を一旦削除した。

後日、web配布の設定を行い、配布すると配布出来ない。

ログを見ると、サーバ側の委譲とxxxを確認して下さい。 

※xxxは忘れました。

 

Visual Studioからの認証ボタンで認証はOK

配布先のフォルダ権限がNGかな? OKでした。

前の設定と同じにしているのに何故? 半日悩んで結果が設定ミス1か所 

Web展開の発行サーバに接続するためのURLを指定します

 

 

 

Web展開の発行サーバに接続するためのURLを指定します

今回はAzure上のサーバだったので、外部サーバ名を指定する必要があった

初期値では内部サーバ名が設定されているので、Visual Studioから

Web配布した時に発行サーバが内部名なので、配布出来なかったのでした。

サーバ設定は難しい(勘違いと思い込み)