tencent cloud

フィードバック

AWS S3 SDKを使用したCOSアクセス

最終更新日:2022-09-28 15:09:03

    概要

    Cloud Object Storage(COS)はAWS S3と互換性のあるAPIを提供しているため、データをS3からCOSに移行した後、簡単な設定変更を行うだけで、クライアントアプリケーションに簡単にCOSサービスとの互換性を持たせることができます。ここでは主に、各開発プラットフォームにおけるS3 SDKの適用の手順についてご説明します。適用手順の追加が完了すると、S3 SDKのインターフェースを使用してCOS上のファイルにアクセスできるようになります。

    準備作業

    1. Tencent Cloudアカウントの登録が完了しており、なおかつCAMコンソール上でTencent CloudキーのSecretIDとSecretKeyを取得済みであることとします。
    2. S3 SDKを統合済みで、正常に実行可能なクライアントアプリケーションがすでにあることとします。

    Android

    以下ではAWS Android SDK 2.14.2バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。端末からCOSへのアクセスについては、パーマネントキーをクライアントコード内に埋め込むと、開示されるリスクが極めて大きいため、STSサービスにアクセスして一時キーを取得することをお勧めします。詳細については、一時キーの生成および使用ガイドをご参照ください。

    初期化

    インスタンスを初期化する際、一時キープロバイダおよびEndpointを設定する必要があります。バケットの所在リージョンがap-guangzhouの場合を例にとります。

    AmazonS3Client s3 = new AmazonS3Client(new AWSCredentialsProvider() {
      @Override
      public AWSCredentials getCredentials() {
           // ここではバックエンドがSTSにリクエストし、一時キー情報を取得します
          return new BasicSessionCredentials(
                  "<TempSecretID>", "<TempSecretKey>", "<STSSessionToken>"
          );
      }
       @Override
      public void refresh() {
          //
      }
    });
    s3.setEndpoint("cos.ap-guangzhou.myqcloud.com"); 
    

    iOS

    AWS iOS SDK 2.10.2バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。端末からCOSへのアクセスについては、パーマネントキーをクライアントコード内に埋め込むと、開示されるリスクが極めて大きいため、STSサービスにアクセスして一時キーを取得することをお勧めします。詳細については、一時キーの生成および使用ガイドをご参照ください。

    1. AWSCredentialsProviderプロトコルの実装

    -(AWSTask<AWSCredentials *> *)credentials{
    // ここではバックエンドがSTSにリクエストし、一時キー情報を取得します
      AWSCredentials *credential = [[AWSCredentials alloc]initWithAccessKey:@"<TempSecretID>" secretKey:@"<TempSecretKey>" sessionKey:@"<STSSessionToken>" expiration:[NSDate dateWithTimeIntervalSince1970:1565770577]];
      
      return [AWSTask taskWithResult:credential];
      
    }
    - (void)invalidateCachedTemporaryCredentials{
      
    }
    

    2. 一時キープロバイダおよびEndpointの提供

    バケットの所在リージョンがap-guangzhouの場合を例にとります。

    NSURL* bucketURL = [NSURL URLWithString:@"http://cos.ap-guangzhou.myqcloud.com"];
      
    AWSEndpoint* endpoint = [[AWSEndpoint alloc] initWithRegion:AWSRegionUnknown service:AWSServiceS3 URL:bucketURL];
    AWSServiceConfiguration* configuration = [[AWSServiceConfiguration alloc] 
    initWithRegion:AWSRegionUSEast2 endpoint:endpoint 
    credentialsProvider:[MyCredentialProvider new]]; // MyCredentialProviderAWSCredentialsProviderプロトコルを実装しました
     
    [[AWSServiceManager defaultServiceManager] setDefaultServiceConfiguration:configuration];
    

    Node.js

    以下ではAWS JS SDK 2.509.0バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。

    初期化

    インスタンスを初期化する際にTencent CloudキーおよびEndpointを設定します。バケットの所在リージョンがap-guangzhouの場合のコードの例は次のようになります。

    var AWS = require('aws-sdk');
    AWS.config.update({
      accessKeyId: "COS_SECRETID",
      secretAccessKey: "COS_SECRETKEY",
      region: "ap-guangzhou",
      endpoint: 'https://cos.ap-guangzhou.myqcloud.com',
    });
    s3 = new AWS.S3({apiVersion: '2006-03-01'});
    

    Java

    以下ではAWS Java SDK 1.11.609バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。

    1. AWSの設定および証明書ファイルを変更する

    説明:

    以下ではLinuxを例に、AWSの設定および証明書ファイルの変更を行います。

    AWS SDKのデフォルトの設定ファイルは通常、ユーザーディレクトリ下にあります。設定および証明書ファイルをご参照ください。

    • 設定ファイル(ファイルの位置は~/.aws/config)に次の設定情報を追加します。

      [default]  
      s3 =  
      addressing_style = virtual 
      
    • 証明書ファイル(ファイルの位置は~/.aws/credentials)にTencent Cloudのキーを設定します。

      [default]  
      aws_access_key_id = [COS_SECRETID]  
      aws_secret_access_key = [COS_SECRETKEY] 
      

    2. コードにEndpointを設定する

    バケットの所在リージョンがap-guangzhouの場合のコードの例は次のようになります。

    AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
       .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(
               "http://cos.ap-guangzhou.myqcloud.com", 
               "ap-guangzhou"))
       .build();
    

    Python

    以下ではAWS Python SDK 1.9.205バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。

    1. AWSの設定および証明書ファイルを変更する

    説明:

    以下ではLinuxを例に、AWSの設定および証明書ファイルの変更を行います。

    AWS SDKのデフォルトの設定ファイルは通常、ユーザーディレクトリ下にあります。設定および証明書ファイルをご参照ください。

    • 設定ファイル(ファイルの位置は~/.aws/config)に次の設定を追加します。

      [default]  
      s3 =   
      signature_version = s3
      addressing_style = virtual
      
    • 証明書ファイル(ファイルの位置は~/.aws/credentials)にTencent Cloudのキーを設定します。

      [default]  
      aws_access_key_id = [COS_SECRETID]  
      aws_secret_access_key = [COS_SECRETKEY] 
      

    2. コードにEndpointを設定する

    バケットの所在リージョンがap-guangzhouの場合を例にとります。

    client = boto3.client('s3', endpoint_url='https://cos.ap-guangzhou.myqcloud.com')
    

    PHP

    以下ではAWS PHP SDK 3.109.3バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。

    1. AWSの設定および証明書ファイルを変更する

    説明:

    以下ではLinuxを例に、AWSの設定および証明書ファイルの変更を行います。

    AWS SDKのデフォルトの設定ファイルは通常、ユーザーディレクトリ下にあります。設定および証明書ファイルをご参照ください。

    • 設定ファイル(ファイルの位置は~/.aws/config)に次の設定を追加します。

      [default]  
      s3 =  
      addressing_style = virtual 
      
    • 証明書ファイル(ファイルの位置は~/.aws/credentials)にTencent Cloudのキーを設定します。

      [default]  
      aws_access_key_id = [COS_SECRETID]  
      aws_secret_access_key = [COS_SECRETKEY] 
      

    2. コードにEndpointを設定する

    バケットの所在リージョンがap-guangzhouの場合を例にとります。

    $S3Client = new S3Client([
     'region'          => 'ap-guangzhou',
     'version'         => '2006-03-01',
     'endpoint'        => 'https://cos.ap-guangzhou.myqcloud.com'
    ]);
    

    .NET

    以下ではAWS .NET SDK 3.3.104.12バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。

    初期化

    インスタンスを初期化する際にTencent CloudキーおよびEndpointを設定します。バケットの所在リージョンがap-guangzhouの場合を例にとります。

    string sAccessKeyId = "COS_SECRETID";
    string sAccessKeySecret = "COS_SECRETKEY";
    string region = "ap-guangzhou";
    
    var config = new AmazonS3Config() { ServiceURL = "https://cos." + region + ".myqcloud.com" };
    var client = new AmazonS3Client(sAccessKeyId, sAccessKeySecret, config);
    

    Go

    以下ではAWS Go SDK 1.21.9バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。

    1. キーによってsessionを作成する

    バケットの所在リージョンがap-guangzhouの場合を例にとります。

    func newSession() (*session.Session, error) {
    creds := credentials.NewStaticCredentials("COS_SECRETID", "COS_SECRETKEY", "")
    region := "ap-guangzhou"
    endpoint := "http://cos.ap-guangzhou.myqcloud.com"
    config := &aws.Config{
        Region:           aws.String(region),
        Endpoint:         &endpoint,
        S3ForcePathStyle: aws.Bool(true),
        Credentials:      creds,
        // DisableSSL:       &disableSSL,
    }
    return session.NewSession(config)
    }
    

    2. sessionによってserverを作成し、リクエストを送信する

    sess, _ := newSession()
    service := s3.New(sess)
    // ファイルのアップロードの例
    fp, _ := os.Open("yourLocalFilePath")
    defer fp.Close()
    ctx, cancel := context.WithTimeout(context.Background(), time.Duration(30)*time.Second)
    defer cancel()
    service.PutObjectWithContext(ctx, &s3.PutObjectInput{
    Bucket: aws.String("examplebucket-1250000000"),
    Key:    aws.String("exampleobject"),
    Body:   fp,
    })
    

    C++

    以下ではAWS C++ SDK 1.7.68バージョンを例に、COSサービスにアクセスできるように適用する方法についてご説明します。

    1. AWSの設定および証明書ファイルを変更する

    説明:

    以下ではLinuxを例に、AWSの設定および証明書ファイルの変更を行います。

    AWS SDKのデフォルトの設定ファイルは通常、ユーザーディレクトリ下にあります。設定および証明書ファイルをご参照ください。

    • 設定ファイル(ファイルの位置は~/.aws/config)に次の設定を追加します。

      [default]  
      s3 =  
      addressing_style = virtual 
      
    • 証明書ファイル(ファイルの位置は~/.aws/credentials)にTencent Cloudのキーを設定します。

      [default]  
      aws_access_key_id = [COS_SECRETID]  
      aws_secret_access_key = [COS_SECRETKEY] 
      

    2. コードにEndpointを設定する

    バケットの所在リージョンがap-guangzhouの場合のコードの例は次のようになります。

    Aws::Client::ClientConfiguration awsCC;
    awsCC.scheme = Aws::Http::Scheme::HTTP;
    awsCC.region = "ap-guangzhou";
    awsCC.endpointOverride = "cos.ap-guangzhou.myqcloud.com"; 
    Aws::S3::S3Client s3_client(awsCC);
    
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)