このトピックでは、Go や Python などの非 Java 言語向け Amazon S3 SDK を使用して、Amazon S3 プロトコルに基づいて LindormTable に接続し、使用する方法を、対応する例とともに説明します。
前提条件
-
Lindorm LindormTable エンジンの S3 互換性アドレスを取得していること。詳細については、「エンドポイントの確認」をご参照ください。S3 互換性アドレスは、Lindorm インスタンスの VPC エンドポイントです。エンドポイントは、[エンドポイント] ページの [LindormTable] タブの [S3互換性アドレス] セクションで確認できます。エンドポイントの形式は
ld-bp<インスタンス ID>:9053です。デフォルトのユーザー名とパスワードはいずれもrootです。 -
Lindorm インスタンスのホワイトリストにクライアントの IP アドレスを追加していること。詳細については、「ホワイトリストの設定」をご参照ください。
操作手順
Amazon S3 SDK for Go による LindormTable への接続と使用
Amazon S3 SDK for Go をインストールします。
go get github.com/aws/aws-sdk-go-
Amazon S3 SDK for Go を使用して LindormTable に接続し、使用します。
package main import ( "log" "strings" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) const ( s3endpoint = "http://ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com:9053" // LindormTable エンジンの S3 互換性アドレス。 ) func main() { conf := &aws.Config{ Credentials: credentials.NewStaticCredentials("AK", "SK", ""), Region: aws.String("lindorm"), Endpoint: aws.String(s3endpoint), S3ForcePathStyle: aws.Bool(true), } sess, err := session.NewSession(conf) // 接続を作成します。 svc := s3.New(sess) // すべてのバケットを一覧表示します。 input := &s3.ListBucketsInput{} result, err := svc.ListBuckets(input) if err != nil { panic(err.Error()) } println(result.String()) bucket := "testbucketgo" key := "testObjectGo" // バケットを作成します。 out, err := svc.CreateBucket(&s3.CreateBucketInput{Bucket: &bucket}) log.Println(out) if err != nil { log.Println("Failed to create bucket", err) return } if err = svc.WaitUntilBucketExists(&s3.HeadBucketInput{Bucket: &bucket}); err != nil { log.Printf("Failed to wait for bucket to exist %s, %s\n", bucket, err) return } // オブジェクトをアップロードします。 _, err = svc.PutObject(&s3.PutObjectInput{ Body: strings.NewReader("Hello World!"), Bucket: &bucket, Key: &key, }) if err != nil { log.Printf("Failed to upload data to %s/%s, %s\n", bucket, key, err) return } }説明サンプルコードの AK フィールドと SK フィールドは、LindormTable への接続に実際に使用する AccessKey ID と AccessKey シークレットに置き換えてください。AccessKey ID と AccessKey シークレットは、ハードコーディングではなく、環境変数として設定するか、設定ファイルで指定することを推奨します。
Amazon S3 SDK for Python による LindormTable への接続と使用
Amazon S3 SDK for Python をインストールします。
pip install boto3-
Amazon S3 SDK for Python を使用して LindormTable に接続し、使用します。
import boto3 from botocore.client import Config s3endpoint = 'http://ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com:9053' # LindormTable エンジンの S3 互換性アドレス。 # 接続を作成します。 s3client = boto3.client( 's3', aws_access_key_id="AK", aws_secret_access_key="SK", endpoint_url = s3endpoint, config=Config(s3={'addressing_style': 'path'}) ) # バケットを作成します。 s3client.create_bucket(Bucket="testbucketpython") # バケットを一覧表示します。 buckets = s3client.list_buckets() # すべてのバケットを出力します。 for bucket in buckets['Buckets']: print(bucket["Name"]) # オブジェクトをアップロードします。 response = s3client.upload_file("demo.py", "testbucketpython", "demo.py") # オブジェクトをダウンロードします。 s3client.download_file('testbucketpython', 'demo.py', 'demo.py.download')説明サンプルコードの AK フィールドと SK フィールドは、LindormTable への接続に実際に使用する AccessKey ID と AccessKey シークレットに置き換えてください。AccessKey ID と AccessKey シークレットは、ハードコーディングではなく、環境変数として設定するか、設定ファイルで指定することを推奨します。