S3Class 説明書

[Home]
第 1 版 2016/03/30

概要

S3Class は Amazon Web Service (AWS) の Simple Storage Service (S3) を簡単に使用するためのクラスです。


動作条件


コンストラクタ

Public Sub New(Optional ByVal bucketName As String = Nothing)


プロパティ

名前ReadOnly機能
AWSRegionStringAWS リージョン
ProfileNameStringプロファイル名
S3BucketsS3Bucket()バケットオブジェクトの配列

メソッド

名前機能
CopyObjectオブジェクトを他のオブジェクトにコピーする。
DeleteObjectオブジェクトを削除する、
Downloadオブジェクトをダウンロードしてローカルファイルに保存する。
GetGrantsオブジェクトの許可条件を取得する。
GetKeysバケット内のオブジェクト名一覧を得る。
GetLastModifiedオブジェクトの更新日時を得る。
GetLengthオブジェクトの長さを得る。
GetObjectキーで指定したオブジェクトの情報を得る。
GetObjectsバケット内のオブジェクト一覧を得る。
GetUrlオブジェクトの URL を得る。
IsPrivateオブジェクトが所有者以外からアクセスできないかを調べる。
IsPublicReadオブジェクトが誰からも読めるかを調べる。
SelectBucket現在のバケットを選択する。
SetPrivateオブジェクトを所有者以外からアクセスできないようにする。
SetPublicReadオブジェクトを誰からも読めるようにする。
Uploadローカルファイルを現在のバケットにアップロードする。

 

詳細

コンストラクタ

Public Sub New(Optional ByVal bucketName As String = Nothing)

機能AWS S3 クライアントをインスタンス化する。
引数
  • bucketName: 使用するバケットの名前
特記事項bucketName を省略した場合は、SelectBucket メソッドを実行する必要がある。

プロパティ

Public ReadOnly Property AWSRegion As String

機能AWS リージョンID を返す。
戻り値(例) us-west-2

Public ReadOnly Property ProfileName As String

機能AWS プロファイル名を返す。これはアクセスキーの所有者 ID である。
戻り値AWS プロファイル名

Public ReadOnly Property S3Buckets As S3Bucket()

機能バケットオブジェクトの配列を返す。
戻り値Amazon.S3.Model.S3Bucket の配列

メソッド

Public Sub CopyObject(ByVal srcKey As String, ByVal destKey As String, Optional ByVal destBucket As String = Nothing)

機能オブジェクトをコピーする。
引数
  • srcKey: コピー元のオブジェクトのキー
  • destKey: コピー先のオブジェクトのキー
  • destBucket: コピー先のバケット名。省略したときは現在のバケット内でコピーする。

Public Sub DeleteObject(ByVal keyName As String)

機能 キーに対応するオブジェクトを削除する。
引数
    • keyName: キーの名前

Public Sub Download(ByVal fileName As String, ByVal key As String)

機能ファイルをダウンロードする。
引数
  • fileName: 保存先のローカルファイルのパス
  • key: ダウンロードするオブジェクトのキー

Public Function GetGrants(ByVal key As String) As S3Grant()

機能指定したキーに対応するオブジェクトの許可項目一覧を得る。
引数
  • key: キー
戻り値許可項目一覧 (Amazon.S3.Model.S3Grant の配列)

Public Function GetKeys(Optional ByVal prefix As String = Nothing, Optional ByVal extension As String = Nothing) As String()

機能現在のバケット内のキー一覧を得る。
引数
  • key: キー
戻り値キー (System.String) の配列
特記事項取得できるオブジェクトの最大個数は 1000 個まで。

Public Function GetLastModified(ByVal key As String) As DateTime

機能指定したキーに対応するオブジェクトの最終更新日時を得る。
引数
  • key: キー
戻り値最終更新日時 (System.DateTime)

Public Function GetLength(ByVal key As String) As Long

機能指定したキーに対応するオブジェクト(ファイル)の長さを得る。
引数
  • key: キー
戻り値ファイルの長さ(バイト数)

Public Function GetObject(ByVal key As String) As GetObjectResponse

機能キーで指定したオブジェクトの情報を得る。
引数
  • key: キー
戻り値GetObjectResponse オブジェクト。このクラスにはオブジェクトに関する各種情報が含まれている。

Public Function GetObjects(Optional ByVal prefix As String = Nothing) As S3Object()

機能現在のバケット内のオブジェクト一覧を得る。(最大個数の制限なし。1000 個以上も可能)
引数
  • key: キー
戻り値Amazon.S3.Model.S3Object の配列
特記事項取得できるオブジェクトの最大個数の制限なし。

Public Function GetUrl(ByVal key As String, Optional ByVal fshort As Boolean = False) As String

機能オブジェクトの URL を得る。
引数
  • key: キー
  • fshort: True ならドメイン名を含まない短い URL、False ならドメイン名を含む長い URL を返す。
戻り値オブジェクトの URL。(例) (fshort=False) https://s3-us-west-2.Mydomain.amazonaws.com/images/Home.png あるいは (fshort=True) https://Mydomain.s3.amazonaws.com/images/Home.png

Public Function IsPrivate(ByVal key As String, Optional ByVal user As String = Nothing) As Boolean

機能キーで指定したオブジェクトが PRIVATE かどうかを得る。
引数
  • key: キー
戻り値オブジェクトが PUBLIC でない場合 True を返す。誰でも READ 可能な場合は False を返す。

Public Function IsPublicRead(ByVal key As String) As Boolean

機能キーで指定したオブジェクトが PUBLIC READ かどうかを得る。
引数
  • key: キー
戻り値PUBLIC READ なら True、そうでないなら False

Public Sub SelectBucket(ByVal bucketName As String)

機能現在のバケットを変更する。
引数
  • bucketName: バケットの名前
特記事項コンストラクタで引数を省略した場合、このメソッドを必ず実行する必要がある。

Public Sub SetPrivate(ByVal key As String)

機能指定したキーのオブジェクトの ACL を PRIVATE に設定する。
引数
  • key: キー

Public Sub SetPublicRead(ByVal key As String)

機能指定したキーのオブジェクトの ACL を PUBLIC READ に設定する。
引数
  • key: キー

Public Function Upload(ByVal fileName As String, ByVal key As String) As PutObjectResponse

機能ファイルをアップロードする。
引数
  • fileName: ローカスファイルのパス名
  • key: アップロード先のキー
特記事項アップロード先のバケットは現在のものとする。

 

サンプル

Imports Amazon.S3.Model
Imports AWSClasses

Module Sample
    Dim s3 As S3Class

    ''' <summary>
    ''' メインプログラム
    ''' </summary>
    Sub Main(ByVal args() As String)
        Dim members As S3Object()

        If args.Length = 0 Then
            Console.WriteLine("コマンドパラメータを指定してください。")
#If DEBUG Then
            Console.ReadKey()
#End If
            Exit Sub
        End If

        Try
            ' S3Class をインスタンス化する。
            Console.WriteLine("バケットを取得中 ..")
            If args.Length > 1 Then
                s3 = New S3Class(args(1))
            Else
                s3 = New S3Class("tiny10be")
            End If
            For Each b In s3.S3Buckets
                Console.WriteLine(b.BucketName)
            Next

            ' パラメータ項目ごとの処理
            '   1 : s3://tiny10be/data のオブジェクト一覧取得
            '   2 : s3://tiny10be/data の最初のオブジェクトの属性を表示
            '   3 : s3://tiny10be/index.html の許可情報 (S3Grant) を表示
            '   4 : s3://tiny10be/index.html が PUBLIC READ か調べる。
            Select Case args(0)
                Case "1"
                    Console.WriteLine("s3://tiny10be/data でオブジェクト一覧を取得中 ..")
                    members = s3.GetObjects("data/")
                    For Each m In members
                        Console.WriteLine(m.Key)
                    Next

                Case "2"
                    Console.WriteLine("s3://tiny10be/data でオブジェクト一覧を取得中 ..")
                    members = s3.GetObjects("data/")
                    If members.Length > 0 Then
                        Dim file0 As S3Object = members(0)
                        Console.Write("{0} ", file0.Key)
                        Console.Write("{0} ", file0.LastModified)
                        Console.Write("{0} ", file0.Size, " - ")
                        Console.Write("{0} ", file0.Owner.DisplayName)
                        Console.WriteLine(file0.StorageClass.Value)
                    Else
                        Console.WriteLine("s3://tiny10be/data にオブジェクトが見つかりません。")
                    End If

                Case "3"
                    Dim grants() As S3Grant = s3.GetGrants("data/apps.db")
                    ' Dim grants() As S3Grant = s3.GetGrants("index.html")
                    For Each g In grants
                        Console.Write("{0} ", g.Grantee.DisplayName)
                        Console.Write("{0} ", g.Permission.HeaderName)
                        Console.WriteLine("{0}", g.Permission.Value)
                    Next

                Case "4"
                    'If s3.IsPublicRead("data/dvd.db") Then
                    If s3.IsPublicRead("index.html") Then
                        Console.WriteLine("PUBLIC_READ")
                    Else
                        Console.WriteLine("Not PUBLIC_READ")
                    End If

                Case Else

            End Select
        Catch ex As Exception
            Console.WriteLine("例外を検出。" & ex.Message)
        End Try

        Console.WriteLine(vbCrLf & "終わり。")
#If DEBUG Then
        Console.ReadKey()
#End If
    End Sub

End Module