You are currently viewing ConoHaでS3用クレデンシャルを取得する

ConoHaでS3用クレデンシャルを取得する

ConoHaオブジェクトストレージが2025年8月にS3 APIに対応しました
ということで、個人開発WebアプリもS3準拠に対応させるため、まずはアクセス用のクレデンシャルを作成することにしました

手順1:トークンを取得

まずは認証用のトークンを取得します
取得方法についてはこちら

パラメータに必要なConoHaコントロールパネルのAPIから取得できます

実際のCurlコマンドやレスポンス形式はConoHaページに記載されているため、必要事項変更後に実行してください

レスポンスヘッダの「x-subject-token」がトークンなので控えておきます

S3 API用のクレデンシャルを作成する

トークンが取得できたら、次はS3 API用のクレデンシャルを登録します

こちらも、ConoHaのドキュメントにサンプルリクエストとレスポンスがありますので、必要事項を変更するだけで簡単に利用できます
サンプルリクエストとレスポンスはこちら

レスポンス内にアクセスキー、シークレットキーが含まれているので確認しておきます

プログラム内での設定例

アクセスキー、シークレットキーが分かれば、プログラム内に設定を行い接続が可能になります
自分が作製しているアプリの場合、以下のように設定しています

.envのサンプル
S3_ENDPOINT=https://s3.c3j1.conoha.io
S3_REGION=conoha
S3_ACCESS_KEY=アクセスキー
S3_SECRET_KEY=シークレットキー

goでの接続例は以下になります

必要なimport
	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/credentials"
	"github.com/aws/aws-sdk-go-v2/service/s3"

s3クライアント作成のサンプル
	endpoint := S3_ENDPOINT
	region := S3_REGION
	accessKey := S3_ACCESS_KEY
	secretKey := S3_SECRET_KEY

	cfg, err := config.LoadDefaultConfig(ctx,
		config.WithRegion(region),
		config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(accessKey, secretKey, "")),
	)

	client := s3.NewFromConfig(cfg, func(o *s3.Options) {
		o.BaseEndpoint = aws.String(endpoint)
		o.UsePathStyle = true // S3互換ストレージ(MinIOなど)ではパスベースのアクセスにするために必要
	})

o.UsePathStyle = trueはパスベースでファイルにアクセスするために設定しています
localhost(テスト環境)ではサブドメインで指定できない、ConoHa側でサブドメイン形式に対応しているか不明(見つけられなかった)などの理由です

Amazon S3ではサブドメイン形式(https://バケット名.s3.amazonaws.com/ファイルキー)のような形式が主流のようですが、今回はパス形式のためhttp://localhost:9000/static/〜/image.jpgのような形式でアクセスできます

created by Rinker
¥3,630 (2026/5/21 9:13:38時点 楽天市場調べ-詳細)

コメントを残す