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

Lindorm:非Java言語向けAmazon S3 APIを用いたアプリケーション開発

最終更新日:Mar 28, 2026

LindormTable は Amazon S3 プロトコルをサポートしているため、LindormTable 固有のクライアントライブラリを導入せずに、任意の S3 互換 SDK を使用して接続できます。本トピックでは、AWS SDK for Go および Python 向け boto3 を用いた接続方法と基本操作の実行手順を説明します。

前提条件

開始する前に、以下の準備を行ってください。

  • Lindorm コンソールの [ワイドテーブルエンジン] タブにある S3 互換アドレスエンドポイント。詳細については、「エンドポイントの確認」をご参照ください。接続アドレスの確認

  • ご利用のクライアント IP アドレスが Lindorm インスタンスのホワイトリストに登録済みであること。詳細については、「ホワイトリストの設定」をご参照ください。

  • AccessKey ID および AccessKey Secret を環境変数として設定済みであること。

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<your-access-key-id>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your-access-key-secret>

Go を使用した接続

SDK のインストール

go get github.com/aws/aws-sdk-go

クライアントの設定

LindormTable では、以下の 3 つのパラメーターにデフォルト値以外の設定が必要です。

パラメーター理由
Region"lindorm"SDK が必須とする値であり、LindormTable ではルーティングには使用されません
S3ForcePathStyletrueLindormTable はパススタイルアドレッシングを要します
EndpointLindorm コンソールから取得した S3 互換アドレスリクエストをご利用の LindormTable インスタンスにルーティングします
package main

import (
    "log"
    "os"
    "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 (
    // Lindorm コンソールの [ワイドテーブルエンジン] タブから取得した S3 互換アドレスに置き換えてください。
    s3endpoint = "http://ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com:9053"
)

func main() {
    conf := &aws.Config{
        Credentials: credentials.NewStaticCredentials(
            os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),     // AccessKey ID
            os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // AccessKey Secret
            "",
        ),
        Region:           aws.String("lindorm"),  // SDK が必須とする値であり、LindormTable ではルーティングには使用されません
        Endpoint:         aws.String(s3endpoint),
        S3ForcePathStyle: aws.Bool(true),         // LindormTable はパススタイルアドレッシングを要します
    }

    sess, err := session.NewSession(conf)
    if err != nil {
        log.Fatal("セッションの作成に失敗しました:", err)
    }
    svc := s3.New(sess)

すべてのバケットの一覧表示

    input := &s3.ListBucketsInput{}
    result, err := svc.ListBuckets(input)
    if err != nil {
        log.Fatal("バケットの一覧表示に失敗しました:", err)
    }
    println(result.String())

バケットの作成

    bucket := "testbucketgo"

    out, err := svc.CreateBucket(&s3.CreateBucketInput{Bucket: &bucket})
    log.Println(out)
    if err != nil {
        log.Fatal("バケットの作成に失敗しました:", err)
    }

    if err = svc.WaitUntilBucketExists(&s3.HeadBucketInput{Bucket: &bucket}); err != nil {
        log.Fatalf("バケット %s の作成完了を待機中に失敗しました: %s\n", bucket, err)
    }

オブジェクトの書き込み

    key := "testObjectGo"

    _, err = svc.PutObject(&s3.PutObjectInput{
        Body:   strings.NewReader("Hello World!"),
        Bucket: &bucket,
        Key:    &key,
    })
    if err != nil {
        log.Fatalf("オブジェクトのアップロードに失敗しました (%s/%s): %s\n", bucket, key, err)
    }
}

Python を使用した接続

SDK のインストール

pip install boto3

クライアントの設定

addressing_style: 'path' の設定により、LindormTable が要するパススタイルアドレッシングが有効になります。

import os
import boto3
from botocore.client import Config

# Lindorm コンソールの [ワイドテーブルエンジン] タブから取得した S3 互換アドレスに置き換えてください。
s3endpoint = 'http://ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com:9053'

s3client = boto3.client(
    's3',
    aws_access_key_id=os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_ID"),       # AccessKey ID
    aws_secret_access_key=os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), # AccessKey Secret
    endpoint_url=s3endpoint,
    config=Config(s3={'addressing_style': 'path'})  # LindormTable はパススタイルアドレッシングを要します
)

すべてのバケットの一覧表示

buckets = s3client.list_buckets()
for bucket in buckets['Buckets']:
    print(bucket["Name"])

正常な応答では、バケット名が 1 行ずつ出力されます。

testbucketpython

バケットの作成

s3client.create_bucket(Bucket="testbucketpython")

オブジェクトのアップロード

s3client.upload_file("demo.py", "testbucketpython", "demo.py")

オブジェクトのダウンロード

s3client.download_file('testbucketpython', 'demo.py', 'demo.py.download')

次のステップ

  • LindormTable でサポートされるその他の S3 互換操作について詳しくは、AWS SDK for Go ドキュメントおよびboto3 ドキュメントをご参照ください。

  • アクセスの制御および使用量のモニターについては、Lindorm コンソールをご利用ください。