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

Object Storage Service:Amazon S3 SDKを使用したOSSへのアクセス

最終更新日:May 06, 2024

Object Storage Service (OSS) は、Amazon Simple Storage Service (Amazon S3) と互換性のあるAPI操作を提供します。 Amazon S3からOSSにデータを移行した後、簡単な設定を使用して、クライアントアプリケーションをOSSと互換性のあるものにすることができます。 このトピックでは、さまざまな開発プラットフォームでAmazon S3 SDKを使用して構成を初期化し、Amazon S3 SDK API操作を使用してOSSリソースにアクセスする方法について説明します。

前提条件

  • RAMユーザーが作成され、AccessKeyペアが取得されます。 詳細については、「RAM ユーザーの作成」をご参照ください。

  • システム権限またはカスタム権限がRAMユーザーに付与されます。

    • システム権限

      AliyunOSSFullAccessポリシーまたはAliyunOSSReadOnlyAccessポリシーをRAMユーザーにアタッチできます。

    • カスタム権限

      カスタムRAMポリシーをRAMユーザーにアタッチして、ビジネスシナリオに基づいてきめ細かいOSS権限制御を実装できます。 詳細については、「RAMポリシーの一般的な例」をご参照ください。

  • Amazon S3 SDKを統合するクライアントアプリケーションが作成され、期待どおりに実行されます。

制限

Amazon S3 SDKを使用してOSSバケットにアクセスできるのは、Amazon S3 SDKと互換性のあるパブリックエンドポイントと内部エンドポイントのみです。

背景情報

この例では、中国 (香港) リージョンが使用されています。 S3-compatibleのパブリックエンドポイントがs3.oss-cn-hongkong.aliyuncs.comされ、内部エンドポイントがs3.oss-cn-hongkong-internal.aliyuncs.comされます。 別のリージョンのエンドポイントを使用する場合は、エンドポイントのリージョンIDを置き換えます。 リージョンとそのエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

Amazon S3 SDK for Java

  • バージョン1.x

    次の例では、Amazon S3 SDK for Java 1.11.609が使用されています。 次のサンプルコードは、設定を初期化する方法の例を示しています。

    • AccessKeyペアをコードに埋め込む

      AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
              . withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKeyId, accessKeySecret)))
              . withEndpointConfiguration (新しいAwsClientBuilder.EndpointConfiguration ()
                      "https://oss-cn-hongkong.aliyuncs.com" 、
                      ""))
              . withPathStyleAccessEnabled(false)
              . withChunkedEncodingDisabled(true)
              . build(); 
    • 設定ファイルでAccessKeyペアを指定する

      1. ~/.aws/credentialsに格納されている証明書ファイルでAccessKeyペアを指定します。

        [デフォルト]
        aws_access_key_id = [OSS_AccessKeyId]
        aws_secret_access_key = [OSS_AccessKeySecret] 
      2. エンドポイントを指定します。

        AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                . withEndpointConfiguration (新しいAwsClientBuilder.EndpointConfiguration ()
                        "https://oss-cn-hongkong.aliyuncs.com" 、
                        ""))
                . withPathStyleAccessEnabled(false)
                . withChunkedEncodingDisabled(true)
                . build(); 
  • バージョン2.x

    次の例では、Amazon S3 SDK for Java 2.17.201が使用されています。 次のサンプルコードは、設定を初期化する方法の例を示しています。

    AccessKeyペアをコードに埋め込む

    S3Client s3 = S3Client.builder()
            . credentialsProvider (StaticCredialsProvider. create(AwsBasicCredentials.create(accessKeyId, accessKeySecret)))
            . リージョン (region. AWS_GLOBAL)
            . endpointOverride(URI.create("https://s3.oss-cn-hongkong.aliyuncs.com"))
            . serviceConfiguration(S3Configuration.builder()
                    . pathStyleAccessEnabled(false)
                    . chunkedEncodingEnabled(false)
                    .build())
            . build(); 

Python向けAmazon S3 SDK

次の例では、Python 1.9.205用のAWS S3 SDKが使用されています。 次のサンプルコードは、設定を初期化する方法の例を示しています。

インポートboto3
osのインポート
botocore.config import Configから

endpoint = 'https:// oss-cn-hongkong.aliyuncs.com'
access_key_id = os.getenv('OSS_AccessKeyId')
secret_access_key = os.getenv('OSS_AccessKeySecret')

s3 = boto3.client (
    's3' 、
    aws_access_key_id=access_key_id、
    aws_secret_access_key=secret_access_key、
    endpoint_url=エンドポイント、
    config=Config(s3={"addressing_style": "virtual", "signature_version": 's3v4'}))

PHP向けAmazon S3 SDK

次の例では、AWS S3 SDK for PHP 3.109.3が使用されています。 次のサンプルコードは、設定を初期化する方法の例を示しています。

  1. AWS設定ファイルと証明書ファイルを変更します。

    次の例は、Linuxで構成を初期化する方法を示しています。

    1. 次の構成情報を ~/.aws/configの構成ファイルに追加します。

      [デフォルト]
      s3=
      addressing_style=仮想 
    2. ~/.aws/credentialsに格納されている証明書ファイルでAccessKeyペアを指定します。

      [デフォルト]
      aws_access_key_id = [OSS_AccessKeyId]
      aws_secret_access_key = [OSS_AccessKeySecret] 
  2. エンドポイントを指定します。

    $S3Client = new S3Client([
      'region' => 'oss-cn-hongkong' 、
      'version' => '2006-03-01 '、
      'endpoint' => 'https:// oss-cn-hongkong.aliyuncs.com'
    ]); 

Node.js用のAmazon S3 SDK

次の例では、AWS S3 SDK for Node.js 2.509.0が使用されています。 次のサンプルコードは、インスタンスの初期化時にOSS AccessKeyペアとエンドポイントを指定する方法の例を示しています。

const AWS = require("aws-sdk");

AWS.config.update({
  accessKeyId: process.env.AWS_ACCESS_KEY_ID、
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY、
  リージョン: "oss-cn-hongkong" 、
  エンドポイント: "https://oss-cn-hongkong.aliyuncs.com" 、
  apiVersion: "2006-03-01" 、});

Amazon S3 SDK用。NET

次の例では、AWS S3 SDK forです。NET 3.3.104.12が使用されます。 次のサンプルコードは、インスタンスの初期化時にOSS AccessKeyペアとエンドポイントを指定する方法の例を示しています。

文字列sAccessKeyId = Environment.GetEnvironmentVariable("OSS_AccessKeyId");
文字列sAccessKeySecret = Environment.GetEnvironmentVariable("OSS_AccessKeySecret");
stringendpoint="https://oss-cn-hongkong.aliyuncs.com";

var config = newAmazonS3Config(){ServiceURL=endpoint};
var client = new AmazonS3Client(sAccessKeyId、sAccessKeySecret、config); 

Android向けAmazon S3 SDK

重要

モバイルデバイスは、様々な環境で使用される。 リクエストに署名するためにモバイルデバイスに永続的に有効なAccessKeyペアを保存することは非常に危険です。 STSを使用して一時的なアクセス資格情報を取得することを推奨します。 詳細については、「STSが提供する一時的な資格情報を使用したOSSへのアクセス」をご参照ください。

次の例では、Android 2.14.2用のAWS S3 SDKが使用されています。 次のサンプルコードでは、インスタンスの初期化時に一時的なアクセス資格情報とエンドポイントを指定する方法の例を示します。

AmazonS3Client s3 = new AmazonS3Client(new AWSCredentialsProvider() {
    @オーバーライド
    public AWSCredentials getCredentials() {
         // STSから一時的なアクセス資格情報を取得します。 
        新しいBasicSessionCredentialsを返します (
                "StsToken.AccessKeyId" 、"StsToken.SecretKeyId" 、"StsToken.SecurityToken"
        );
    }

    @オーバーライド
    public void refresh() {
        //
    }
});
// エンドポイントを指定します。 
s3.setEndpoint("oss-cn-hongkong.aliyuncs.com"); 

iOS用Amazon S3 SDK

重要

モバイルデバイスは、様々な環境で使用される。 リクエストに署名するためにモバイルデバイスに永続的に有効なAccessKeyペアを保存することは非常に危険です。 STSを使用して一時的なアクセス資格情報を取得することを推奨します。 詳細については、「STSが提供する一時的な資格情報を使用したOSSへのアクセス」をご参照ください。

次の例では、AWS S3 SDK for iOS 2.10.2を使用して、設定を初期化する方法を説明します。

  1. AWSCredentialsProviderプロトコルを実装します。

    -(AWSTask<AWSCredentials *> *) 資格情報 {
        // STSから一時的なアクセス資格情報を取得します。 
        AWSCredentials * credential = [[AWSCredentials alloc]initWithAccessKey:@ "StsToken.AccessKeyId" secretKey:@ "StsToken.SecretKeyId" sessionKey:@ "StsToken.SecurityToken" 有効期限:[NSDate dateWithTimeIntervalSince1970:1565770577]]];
    
        リターン [AWSTask taskWithResult: 資格情報];
    
    }
    
    - (void)invalidateCachedTemporaryCredentials {
    
    } 
  2. インスタンスを初期化します。

    NSURL * bucketURL = [NSURL URLWithString:@ "https://oss-cn-hongkong.aliyuncs.com"];
    
    AWSEndpoint * endpoint = [[AWSEndpoint alloc] initWithRegion:AWSRegionUnknown service:AWSServiceS3 URL:bucketURL];
    AWSServiceConfiguration * configuration = [[AWSServiceConfiguration alloc]
        initWithRegion:AWSRegionUSEast2エンドポイント: エンドポイント
        credentialsProvider:[MyCredentialProvider new]];
    
    [[AWSServiceManager defaultServiceManager] setDefaultServiceConfiguration:configuration]; 

Amazon S3 SDK for Go

  • バージョン1.x

    次の例では、Go 1.21.9用のAWS S3 SDKが使用されています。 次のサンプルコードは、設定を初期化する方法の例を示しています。

    func newSession() (* session.Session, error) {
        accessKeyID := os.Getenv("OSS_AccessKeyId")
        accessKeySecret := os.Getenv("OSS_AccessKeySecret")
        creds := credentials.NewStaticCredentials(accessKeyID, accessKeySecret, "")
        リージョン:= "oss-cn-hongkong"
        endpoint := "https://oss-cn-hongkong.aliyuncs.com"
        config := &aws.Config {
            リージョン: aws.String (Region) 、
            エンドポイント:&Endpoint、
            S3ForcePathStyle: aws.Bool(false) 、
            資格情報: creds、
            // DisableSSL: &disableSSL、
        }
        return session.NewSession(config)
    }
    
    sess, _ := newSession()
    サービス:= s3.New(sess) 
  • バージョン2.x

    次の例では、AWS S3 SDK for Go 2.xが使用されています。 次のサンプルコードは、設定を初期化する方法の例を示しています。

    customResolver := aws.EndpointResolverWithOptionsFunc(func(service、region string、options)) 。..int erface{}) (aws.Endpoint, error) {
    awsを返します。Endpoint {
    PartitionID: "oss" 、URL: "https://oss-cn-hongkong.aliyuncs.com" 、SigningRegion: "cn-hongkong" 、}, nil
    })
    accessKeyID := os.Getenv("OSS_AccessKeyId")
    accessKeySecret := os.Getenv("OSS_AccessKeySecret")
    creds := credentials.NewStaticCredentialsProvider(accessKeyID, accessKeySecret, "")
    cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithCredentialsProvider(creds), config.WithEndpointResolverWithOptions(customResolver))
    if err! =nil {
    log.Printf("error: % v", err)
    リターン
    }
    awsS3Client := s3.NewFromConfig(cfg) 

Amazon S3 SDK for C ++

次の例では、AWS S3 SDK for C ++ 1.7.68が使用されています。 次のサンプルコードは、設定を初期化する方法の例を示しています。

  1. AWS設定ファイルと証明書ファイルを変更します。

    次の例は、Linuxで構成を初期化する方法を示しています。

    1. 次の構成情報を ~/.aws/configの構成ファイルに追加します。

      [デフォルト]
      s3=
      addressing_style=仮想 
    2. ~/.aws/credentialsに格納されている証明書ファイルでAccessKeyペアを指定します。

      [デフォルト]
      aws_access_key_id = [OSS_AccessKeyId]
      aws_secret_access_key = [OSS_AccessKeySecret] 
  2. エンドポイントを指定します。

    Aws:: クライアント::ClientConfiguration awsCC;
    awsCC.scheme = Aws::Http::Scheme::HTTP;
    awsCC.region = "oss-cn-hongkong";
    awsCC.endpointOverride = "oss-cn-hongkong.aliyuncs.com";
    Aws::S3::S3Client s3_client(awsCC);