本文へスキップ
BecomeCoder

C#実践コース · 第9章 AWS SDK for .NET · レッスン51

AWS SDK for .NETとは ― 認証とセットアップ

ローカル実施

導入

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

セットアップ手順

  1. AWSアカウントを用意し、IAMで最小権限のユーザー(またはロール)を作成する
  2. Visual Studioでプロジェクトを作り、使うサービスのNuGetを追加する(例: dotnet add package AWSSDK.S3
  3. 認証情報を設定する(直書きは厳禁。優先度の高い順に自動探索される):
AWS IAMコンソールでアクセスキーを発行し、プログラム用ユーザーを作成している画面
IAMでプログラム用ユーザー/アクセスキーを発行

認証情報の与え方(読み物)

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/プロファイル)/ スクショ位置