前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用亚马逊对象存储AWS S3 SDK访问腾讯云存储COS

如何使用亚马逊对象存储AWS S3 SDK访问腾讯云存储COS

作者头像
云存储
发布2020-05-26 15:28:53
3.9K0
发布2020-05-26 15:28:53
举报

简介说明

COS 提供了 AWS S3 兼容的 API,因此当您的数据从 S3 迁移到 COS 之后,只需要进行简单的配置修改,即可让您的客户端应用轻松兼容 COS 服务。本文主要介绍不同开发平台的 S3 SDK 的适配步骤。在完成添加适配步骤后,您就可以使用 S3 SDK 的接口来访问 COS 上的文件了。

准备工作

  1. 您已注册腾讯云账号,并且从访问管理控制台上获取了腾讯云密钥 SecretID 与 SecretKey。
  2. 已有一个集成了 S3 SDK,并能正常运行的客户端应用。

Android

下面以 AWS Android SDK 2.14.2 版本为例,介绍如何适配以便访问 COS 服务。对于终端访问 COS,将永久密钥放到客户端代码中有极大的泄露风险,我们建议您接入 STS 服务获取临时密钥。

1. 初始化

初始化实例时,您需要设置临时密钥提供者和 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]]; // MyCredentialProvider 实现了 AWSCredentialsProvider 协议
   
[[AWSServiceManager defaultServiceManager] setDefaultServiceConfiguration:configuration];

Node.js

下面以 AWS JS SDK 2.509.0 版本为例,介绍如何适配以便访问 COS 服务。

1. 初始化

初始化实例时设置腾讯云密钥和 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)中配置腾讯云的密钥:
[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 = virtuall
  • 在证书文件(文件位置是~/.aws/credentials)中配置腾讯云的密钥:
[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)中配置腾讯云的密钥:
[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 服务。

1. 初始化

初始化实例时设置腾讯云密钥和 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)中配置腾讯云的密钥:
[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);
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云存储 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 初始化
  • 1. 实现 AWSCredentialsProvider 协议
  • 2. 提供临时密钥提供者和 Endpoint
  • 1. 初始化
  • 1. 修改 AWS 配置和证书文件
  • 2. 代码中设置 Endpoint
  • 1. 修改 AWS 配置和证书文件
  • 1. 修改 AWS 配置和证书文件
  • 1. 初始化
  • 1. 根据密钥创建 session
  • 1. 修改 AWS 配置和证书文件
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档