導入
AWS SDK for .NETは、C#からAWSの各種サービス(ストレージ・DB・メッセージング等)を操作するためのライブラリ群です。サービスごとにAWSSDK.S3のようなNuGetパッケージが分かれています。最初の関門である認証の仕組みを理解しましょう。
図解
flowchart LR
APP["C♯アプリ<br/>AWSSDK.* を利用"] -->|アクセスキー / IAMロールで認証| AWS["AWS<br/>S3 / DynamoDB / SQS / Lambda ..."]
CFG["認証情報<br/>~/.aws/credentials or 環境変数 or IAMロール"] -.->|資格情報を提供| APP
style AWS fill:#fff3e0
セットアップ手順
- AWSアカウントを用意し、IAMで最小権限のユーザー(またはロール)を作成する
- Visual Studioでプロジェクトを作り、使うサービスのNuGetを追加する(例:
dotnet add package AWSSDK.S3) - 認証情報を設定する(直書きは厳禁。優先度の高い順に自動探索される):
認証情報の与え方(読み物)
using Amazon;
using Amazon.S3;
// 推奨: 認証情報はコードに書かず、SDKの既定の探索に任せる
// 探索順: 環境変数 → ~/.aws/credentials(プロファイル)→ IAMロール(EC2/Lambda上)
var s3 = new AmazonS3Client(RegionEndpoint.APNortheast1); // 東京リージョン
// アクセスキーの直書きは絶対にしない(漏洩=重大インシデント):
// new AmazonS3Client("AKIA...", "secret..."); ← ダメ
- 認証情報は環境変数 /
~/.aws/credentials/ IAMロールのいずれかから自動的に読まれる(コード直書き厳禁) - 各サービスに
AmazonXxxClientがあり、リージョン(RegionEndpoint)を指定して生成する - 本番(EC2/ECS/Lambda上)ではIAMロールを使い、鍵を持ち歩かないのがベストプラクティス
- クライアントは使い回す(
HttpClientと同じく、毎回生成しない)
まとめ
- AWS SDK for .NETはサービスごとのNuGet(
AWSSDK.*)で提供される - 認証情報は環境変数/プロファイル/IAMロールから自動取得(直書き厳禁)
AmazonXxxClientにリージョンを指定して生成する
次回: ファイルを保管するストレージAmazon S3です。
テンプレート構成(教材制作用メモ)
143-aws-intro/
└── starter.zip # AWSSDK.Core導入済み / 認証設定手順README(IAM/プロファイル)/ スクショ位置