ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →無償トライアル:
無償トライアルへ製品の情報と無償トライアルへ:
Amazon S3 ファイルストレージデータに連携する.NET アプリケーションを素早く、簡単に開発できる便利なドライバー。
加藤龍彦
ウェブデベロッパー
ADO.NET Adapter
Entity Framework はobject-relational mapping フレームワークで、データをオブジェクトとして扱うために使われます。Visual Studio のADO.NET Entity Data Model ウィザードを実行するとEntity Model を作成できますが、このモデルファーストアプローチでは、データソースに変更があった場合やエンティティ操作をより制御したい場合は不都合があります。この記事では、CData ADO.NET Provider を使いコードファーストアプローチでAmazon S3 にアクセスします。
Amazon S3 リクエストを認可するには、管理者アカウントまたはカスタム権限を持つIAM ユーザーの認証情報を入力します。AccessKey をアクセスキーID に設定します。SecretKey をシークレットアクセスキーに設定します。
Note: AWS アカウント管理者として接続できますが、AWS サービスにアクセスするにはIAM ユーザー認証情報を使用することをお勧めします。
尚、本製品はAmazon S3 のファイルの一覧表示やユーザー管理情報の取得用です。S3 に保管されているExcel、CSV、JSON などのファイル内のデータを読み込みたい場合には、Excel Driver、CSV Driver、JSON Driver をご利用ください。
IAM ユーザーの資格情報を取得するには:
AWS ルートアカウントの資格情報を取得するには:
多くの場合、認証にはAWS ルートユーザーのダイレクトなセキュリティ認証情報ではなく、IAM ロールを使用することをお勧めします。RoleARN を指定することでAWS ロールを代わりに使用できます。これにより、本製品は指定されたロールの資格情報を取得しようと試みます。
(すでにEC2 インスタンスなどで接続されているのではなく)AWS に接続している場合は、ロールを引き受けるIAM ユーザーのAccessKey とSecretKey を追加で指定する必要があります。AWS ルートユーザーのAccessKey および SecretKey を指定する場合、ロールは使用できません。
SSO 認証を必要とするユーザーおよびロールには、RoleARN およびPrincipalArn 接続プロパティを指定してください。各Identity Provider に固有のSSOProperties を指定し、AccessKey とSecretKey を空のままにする必要があります。これにより、本製品は一時的な認証資格情報を取得するために、リクエストでSSO 認証情報を送信します。
<configuration>
... <connectionStrings>
<add name="AmazonS3Context" connectionString="Offline=False;AccessKey=a123;SecretKey=s123;" providerName="System.Data.CData.AmazonS3" />
</connectionStrings>
<entityFramework>
<providers>
... <provider invariantName="System.Data.CData.AmazonS3" type="System.Data.CData.AmazonS3.AmazonS3ProviderServices, System.Data.CData.AmazonS3.Entities.EF6" />
</providers>
<entityFramework>
</configuration>
</code>
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
class AmazonS3Context :DbContext {
public AmazonS3Context() { }
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // To remove the requests to the Migration History table
Database.SetInitializer<AmazonS3Context>(null); // To remove the plural names modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;
public class ObjectsACL {
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public System.String Id { get; set; }
public System.String Name { get; set; }
}
public class ObjectsACLMap :EntityTypeConfiguration<ObjectsACL> {
public ObjectsACLMap() {
this.ToTable("ObjectsACL");
this.HasKey(ObjectsACL => ObjectsACL.Id);
this.Property(ObjectsACL => ObjectsACL.Name);
}
}
public DbSet<ObjectsACL> ObjectsACL { set; get; }
AmazonS3Context context = new AmazonS3Context();
context.Configuration.UseDatabaseNullSemantics = true;
var query = from line in context.ObjectsACL select line;