AWS S3 CPP

Posted wangweizu99

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS S3 CPP相关的知识,希望对你有一定的参考价值。

s3常用类

一些常用知识

  1. cors

    跨源资源共享CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。

  2. acl

    ​ 访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。

    ​ ACL本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。

    class AbortMultipartUploadRequest;					//终止分片上传请求
    class CompleteMultipartUploadRequest;				//完成文件分片上传
    class CopyObjectRequest;						 	//复制对象请求
    class CreateBucketRequest;							//创建桶请求
    class CreateMultipartUploadRequest;					//创建分片上传请求
    class DeleteBucketRequest;							//删除桶请求
    class DeleteBucketAnalyticsConfigurationRequest;	//删除桶分析配置
    class DeleteBucketCorsRequest;						//删除桶cors
    class DeleteBucketEncryptionRequest;				//删除桶加密
    class DeleteBucketInventoryConfigurationRequest;	//删除桶库存配置
    class DeleteBucketLifecycleRequest;					//删除桶生命周期
    class DeleteBucketMetricsConfigurationRequest;		//删除桶度量配置
    class DeleteBucketPolicyRequest;					//删除桶策略
    class DeleteBucketReplicationRequest;				//删除桶复制
    class DeleteBucketTaggingRequest;					//删除桶标签
    class DeleteBucketWebsiteRequest;					//删除桶网站
    class DeleteObjectRequest;							//删除对象
    class DeleteObjectTaggingRequest;					//删除对象标记
    class DeleteObjectsRequest;							//删除对象
    class GetBucketAccelerateConfigurationRequest;		//获取桶加速配置
    class GetBucketAclRequest;							//获取桶ACL
    class GetBucketAnalyticsConfigurationRequest;		//获取桶分析配置
    class GetBucketCorsRequest;							//获取桶cors
    class GetBucketEncryptionRequest;					//获取桶加密
    class GetBucketInventoryConfigurationRequest;		//获取桶库存配置
    class GetBucketLifecycleConfigurationRequest;		//获取桶生命周期
    class GetBucketLocationRequest;						//获取桶位置
    class GetBucketLoggingRequest;						//获取桶日志
    class GetBucketMetricsConfigurationRequest;			//获取桶度量配置
    class GetBucketNotificationConfigurationRequest;	//获取桶通知配置
    class GetBucketPolicyRequest;						//获取桶策略
    class GetBucketReplicationRequest;					//获取桶复制
    class GetBucketRequestPaymentRequest;				//获取存储桶请求付款
    class GetBucketTaggingRequest;						//获取桶标记
    class GetBucketVersioningRequest;					//获取桶版本
    class GetBucketWebsiteRequest;						//获取桶网址
    class GetObjectRequest;								//获取对象
    class GetObjectAclRequest;							//获取对象Acl
    class GetObjectTaggingRequest;						//获取对象标记
    class GetObjectTorrentRequest;						//获取对象种子
    class HeadBucketRequest;							//桶头
    class HeadObjectRequest;							//对象头
    class ListBucketAnalyticsConfigurationsRequest;		//列出桶分析配置
    class ListBucketInventoryConfigurationsRequest;		//列出桶库存配置
    class ListBucketMetricsConfigurationsRequest;		//列出桶度量配置
    class ListMultipartUploadsRequest;					//列出分片上传
    class ListObjectVersionsRequest;					//列出对象版本
    class ListObjectsRequest;							//列出对象
    class ListObjectsV2Request;							//
    class ListPartsRequest;								//列出清单
    class PutBucketAccelerateConfiguration Request;		//设置桶加速配置
    class PutBucketAclRequest;							//设置桶Acl配置
    class PutBucketAnalyticsConfigurationRequest;		//设置桶分析配置
    class PutBucketCorsRequest;							//设置桶cors
    class PutBucketEncryptionRequest;					//设置桶加密
    class PutBucketInventoryConfigurationRequest;		//设置桶库存配置
    class PutBucketLifecycleConfigurationRequest;		//设置桶生命周期
    class PutBucketLoggingRequest;						//设置桶日志
    class PutBucketMetricsConfigurationRequest;			//设置桶度量配置
    class PutBucketNotificationConfigurationRequest;	//设置桶通知配置
    class PutBucketPolicyRequest;						//设置桶策略
    class PutBucketReplicationRequest;					//设置桶复制
    class PutBucketRequestPaymentRequest;				//设置桶请求付款
    class PutBucketTaggingRequest;						//设置桶标记
    class PutBucketVersioningRequest;					//设置桶版本
    class PutBucketWebsiteRequest;						//设置桶网址
    class PutObjectRequest;								//设置对象
    class PutObjectAclRequest;							//设置对象Acl
    class PutObjectTaggingRequest;						//设置对象标记
    class RestoreObjectRequest;							//恢复对象
    class UploadPartRequest;							//上传清单
    class UploadPartCopyRequest;						//上传复制清单

s3使用

  1. 初始化Client

    	String server_url;
    	String access_key;
    	String secret_key
    	// 初始化S3 ClientConfiguration 的实例
    	// 参数endpointOverride : 表示S3 client所要链接的服务器地址
    	// 参数scheme: 为 Scheme::HTTP 表示使用 HTTP 协议
    	// 参数verifySSL: 为 false 表示使用的是HTTP的协议,而非HTTPS
    	// 参数proxyPort : 为0 表示不使用代理服务器。
    	// 在开发基于CEPH的对象程序时,这四个参数除了ServiceURL替换为实际的服务器地址,其余的均保持和下面的一致。
    	ClientConfiguration config;
    	config.endpointOverride = server_url;
    	config.scheme = Scheme::HTTP;
    	config.verifySSL = false;
    	config.proxyPort = 0;
    
    	// 链接到对象存储所需要的密钥对 AK 和 SK
    	AWSCredentials credentials(access_key, secret_key);
    
    	// 初始化S3 Client 的实例
    	// 参数 credentials: 链接到对象存储所需要的密钥对 AK 和 SK
    	// 参数 configuration: 客户端配置
    	// 参数 signPayloads: 为 false 表示使用的是 HTTP 的协议,而非HTTPS
    	// 参数 useVirtualAdressing : 为 false 表示 host 如 http://s3.xsky.com/bucketName; 
    	//                            为 true 表示 host 如 http://bucketName.s3.xsky.com/
    	client = new S3Client(credentials, config, AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
    	if (NULL == client)
    	
    		return false;
    	
    	return true;
    
  2. 上述类的使用方法

    	//创建一个上述类
    	CreateBucketRequest request;
    	GetBucketAclRequest request;
    	//request结尾的类一般都有SetBucker,设置桶的名字即可
    	request.SetBucket(bucket_name);
    	//最后使用client调用一般是类名去掉结尾的request
    	client->CreateBucket(request);
    

以上是关于AWS S3 CPP的主要内容,如果未能解决你的问题,请参考以下文章

多个 AWS Lambda 中的 AWS::S3::Bucket LambdaConfiguration

使用 aws.s3 包从 AWS S3 一次读取多个 CSV 文件对象

AWS S3

使用默认 aws/S3 KMS 密钥对解密对象进行跨账户访问

json AWS S3 Bucket策略#aws#aws-s3

AWS Lambda S3 访问被拒绝