すべてのプロダクト
Search
ドキュメントセンター

Lindorm:Java以外の言語でAmazon S3 APIを使用してアプリケーションを開発する

最終更新日:Jan 14, 2025

このトピックでは、GoやPythonなどのJava以外の言語用のAmazon S3 SDKを使用して、Amazon S3プロトコルに基づいてLindormTableに接続して使用する方法について説明し、対応する例を示します。

前提条件

  • LindormコンソールのワイドテーブルエンジンタブにあるS3互換アドレスに対応するエンドポイントを取得します。 詳細については、「エンドポイントの表示」をご参照ください。查看连接地址

  • クライアントのIPアドレスがLindormインスタンスのホワイトリストに追加されていること。 詳細については、「ホワイトリストの設定」をご参照ください。

手順

Go用Amazon S3 SDKを使用してLindormTableに接続して使用する

  1. Go用Amazon S3 SDKをインストールします。

    go get github.com/aws/aws-sdk-go
  2. Go用Amazon S3 SDKを使用して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" // ワイドテーブルエンジンタブの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) // %s/%sへのデータのアップロードに失敗しました
      return
     }
    }
    説明

    サンプルコードのAKフィールドとSKフィールドを、LindormTableへの接続に実際に使用するAccessKey IDとAccessKeyシークレットに置き換えてください。 AccessKey IDとAccessKeyシークレットは、ハードコーディングするのではなく、環境変数として設定するか、構成ファイルで指定することをお勧めします。

Python用Amazon S3 SDKを使用してLindormTableに接続して使用する

  1. Python用Amazon S3 SDKをインストールします。

    pip install boto3
  2. Python用Amazon S3 SDKを使用してLindormTableに接続して使用します。

    import boto3
    from botocore.client import Config
    s3endpoint = 'http://ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com:9053' # ワイドテーブルエンジンタブの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シークレットは、ハードコーディングするのではなく、環境変数として設定するか、構成ファイルで指定することをお勧めします。