Visual Studio 2022 + Windows フォームアプリで AWSSDK.DynamoDBv2 を使い、C# (.NET 8) からAWS DynamoDB にデータを書き込む実装例を紹介します。
💡 AWS_ACCESS_KEY_ID などの認証情報をアプリ内でユーザー入力するケースを想定
🔰 前提条件
以下の環境を想定しています:
- Windows 11 / 10
- Visual Studio 2022
- .NET 8(Windows Forms アプリ)
- AWS IAM ユーザーのアクセスキー保有済み
- DynamoDB テーブルが作成済み(例:
MySampleTable)
🛠 NuGet パッケージのインストール
まずは必要な AWS SDK パッケージをインストールしましょう。
1. AWSSDK.DynamoDBv2 の追加
Visual Studio の「ソリューションエクスプローラー」→「NuGet パッケージの管理」→「参照」タブで、以下のパッケージをインストールします:
AWSSDK.DynamoDBv2
またはパッケージマネージャーコンソールで:
Install-Package AWSSDK.DynamoDBv2
🖼 フォームのUI想定
フォームに以下の UI を設置します:
| コントロール | Name | 備考 |
|---|
| TextBox | txtAccessKey | AWS_ACCESS_KEY_ID |
| TextBox | txtSecretKey | AWS_SECRET_ACCESS_KEY |
| TextBox | txtSessionToken | AWS_SESSION_TOKEN(省略可) |
| TextBox | txtRegion | AWS_DEFAULT_REGION |
| Button | btnRun | 書き込み実行ボタン |
※ セキュリティ上、UseSystemPasswordChar = true 推奨
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html
💻 実装コード例
ボタンクリックで DynamoDB に書き込む処理
using Amazon;
using Amazon.Runtime;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
private async void btnRun_Click(object sender, EventArgs e)
{
var accessKey = txtAccessKey.Text.Trim();
var secretKey = txtSecretKey.Text.Trim();
var sessionToken = txtSessionToken.Text.Trim();
var regionString = txtRegion.Text.Trim();
if (string.IsNullOrEmpty(accessKey) || string.IsNullOrEmpty(secretKey) || string.IsNullOrEmpty(regionString))
{
MessageBox.Show("必要な情報が入力されていません。");
return;
}
RegionEndpoint region;
try
{
region = RegionEndpoint.GetBySystemName(regionString);
}
catch
{
MessageBox.Show("リージョン名が不正です。例: ap-northeast-1");
return;
}
AWSCredentials credentials = string.IsNullOrEmpty(sessionToken)
? new BasicAWSCredentials(accessKey, secretKey)
: new SessionAWSCredentials(accessKey, secretKey, sessionToken);
using var client = new AmazonDynamoDBClient(credentials, region);
var request = new PutItemRequest
{
TableName = "MySampleTable",
Item = new Dictionary
{
{ "Id", new AttributeValue { S = Guid.NewGuid().ToString() } },
{ "Name", new AttributeValue { S = "テストユーザー" } }
}
};
try
{
var response = await client.PutItemAsync(request);
MessageBox.Show("DynamoDB に書き込み成功!");
}
catch (Exception ex)
{
MessageBox.Show("書き込みエラー: " + ex.Message);
}
}
AWS_ACCESS_KEY_ID 保存場所
今回の例では環境変数を使わずにアプリ内で直接渡しています。
そのため .aws/credentials や OSの環境変数には保存されません。
DynamoDB テーブルが存在しないときは?
PutItemAsync 実行時に「ResourceNotFoundException」が発生します。
テーブルが存在することを事前に確認しましょう(または CreateTableAsync を使って自動作成も可能です)。
🔐 セキュリティに関しての注意
この実装では AWS 認証情報を直接テキストボックスから入力しています。本番利用時には認証情報をハードコードしたりログに出力したりしないよう注意してください。
✅ まとめ
C# (.NET 8) + Windows Forms アプリケーションから AWS DynamoDB にデータを書き込むのは、AWSSDK.DynamoDBv2 と適切なクレデンシャルクラスを使うことで簡単に実現できます。
改行・カンマを含むCSVを正しく読み込む2つの方法
DateTimeを日本時間でISO 8601形式に変換する方法
ファイルから重複行を削除する2つの方法