diff options
| author | byte2016 <[email protected]> | 2018-07-27 18:30:04 +0800 |
|---|---|---|
| committer | byte2016 <[email protected]> | 2018-07-27 18:30:04 +0800 |
| commit | d147b3d9ef9a7cdba4d7c1f11c3f4dc41138e57a (patch) | |
| tree | 4fe6b8d41520d364cd8f9bb94a639beb7fe31b0a | |
| parent | 6e3082a023af2343c26d96d37c00740e1b8a28f1 (diff) | |
| -rw-r--r-- | Minio_aws_example.cpp | 180 | ||||
| -rw-r--r-- | Minio对象存储简介_v3_20180727.pdf | bin | 0 -> 1033883 bytes |
2 files changed, 180 insertions, 0 deletions
diff --git a/Minio_aws_example.cpp b/Minio_aws_example.cpp new file mode 100644 index 0000000..d199aab --- /dev/null +++ b/Minio_aws_example.cpp @@ -0,0 +1,180 @@ +#include <iostream> +#include <fstream> +#include <string> +#include <aws/s3/S3Client.h> +#include <aws/core/Aws.h> +#include <aws/core/utils/memory/stl/AWSString.h> +#include <aws/core/external/tinyxml2/tinyxml2.h> +#include <aws/s3/model/CreateBucketRequest.h> +#include <aws/core/auth/AWSCredentialsProvider.h> +#include <aws/s3/model/DeleteBucketRequest.h> +#include <aws/s3/model/PutObjectRequest.h> +#include <aws/s3/model/GetObjectRequest.h> +#include <aws/s3/model/DeleteObjectRequest.h> + +using namespace Aws::S3; +using namespace Aws::S3::Model; +using namespace std; +using namespace Aws::External::tinyxml2; + +int main(int argc, char* argv[]) { + Aws::SDKOptions options; + Aws::InitAPI(options); + + Aws::Client::ClientConfiguration cfg; + cfg.endpointOverride = Aws::String("192.168.10.61:9000"); // S3服务器地址和端口 + cfg.scheme = Aws::Http::Scheme::HTTP; + Aws::Auth::AWSCredentials cred("minio", "123456789"); // 认证的Key + Aws::S3::S3Client client(cred, cfg, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false); +#if 0 + /**********************CREATE BUCKET*******************************/ + const Aws::String bucket_name = "aaaa"; + Aws::S3::Model::CreateBucketRequest request; + request.SetBucket(bucket_name); + auto outcome = client.CreateBucket(request); + if (outcome.IsSuccess()) + { + std::cout << "Done!" << std::endl; + } + else + { + std::cout << "CreateBucket error: " + << outcome.GetError().GetExceptionName() << std::endl + << outcome.GetError().GetMessage() << std::endl; + } + /*****************************************************************/ +#endif +#if 1 + /***********************LIST BUCKET*******************************/ + auto response = client.ListBuckets(); + if (response.IsSuccess()) { + auto buckets = response.GetResult().GetBuckets(); + for (auto iter = buckets.begin(); iter != buckets.end(); ++iter) { + cout << iter->GetName() << "\t" << endl; + } + } else { + cout << "Error while ListBuckets " << response.GetError().GetExceptionName() + << " " << response.GetError().GetMessage() << endl; + } + /*****************************************************************/ + +#endif +#if 0 + + /*************************DELETE BUCKET***************************/ + std::cout << "Deleting S3 bucket: " << bucket_name << std::endl; + + + Aws::S3::Model::DeleteBucketRequest bucket_request; + bucket_request.SetBucket(bucket_name); + + auto delcome = client.DeleteBucket(bucket_request); + + if (delcome.IsSuccess()) + { + std::cout << "Done!" << std::endl; + } + else + { + std::cout << "DeleteBucket error: " + << delcome.GetError().GetExceptionName() << " - " + << delcome.GetError().GetMessage() << std::endl; + } + /*****************************************************************/ +#endif +#if 1 + + /***************************upload object****************************/ + const Aws::String bucket_name = "wyz"; + const Aws::String key_name = "yyy"; + const Aws::String file_name = "/home/wangyouzhan/minio-deployment.yaml"; + const Aws::String region(""); + + std::cout << "Uploading " << file_name << " to S3 bucket " << + bucket_name << " at key " << key_name << std::endl; + + + Aws::S3::Model::PutObjectRequest object_request; + object_request.WithBucket(bucket_name).WithKey(key_name); + + // Binary files must also have the std::ios_base::bin flag or'ed in + auto input_data = Aws::MakeShared<Aws::FStream>("PutObjectInputStream", + file_name.c_str(), std::ios_base::in | std::ios_base::binary); + + object_request.SetBody(input_data); + + auto put_object_outcome = client.PutObject(object_request); + + if (put_object_outcome.IsSuccess()) + { + std::cout << "Done!" << std::endl; + } + else + { + std::cout << "PutObject error: " << + put_object_outcome.GetError().GetExceptionName() << " " << + put_object_outcome.GetError().GetMessage() << std::endl; + } + /*****************************************************************/ +#endif +#if 1 + + /***************************download object******************************/ + //const Aws::String bucket_name = "wyz"; + //const Aws::String key_name = "yyy"; + + std::cout << "Downloading " << key_name << " from S3 bucket: " << + bucket_name << std::endl; + + Aws::S3::Model::GetObjectRequest get_object_request; + get_object_request.WithBucket(bucket_name).WithKey(key_name); + + auto get_object_outcome = client.GetObject(get_object_request); + + if (get_object_outcome.IsSuccess()) + { + Aws::OFStream local_file; + local_file.open(key_name.c_str(), std::ios::out | std::ios::binary); + local_file << get_object_outcome.GetResult().GetBody().rdbuf(); + std::cout << "Done!" << std::endl; + } + else + { + std::cout << "GetObject error: " << + get_object_outcome.GetError().GetExceptionName() << " " << + get_object_outcome.GetError().GetMessage() << std::endl; + } + /*****************************************************************/ +#endif +#if 0 + + /*****************************delete object***********************/ + const Aws::String bucket_name = "wyz"; + const Aws::String key_name = "yyy"; + + std::cout << "Deleting" << key_name << " from S3 bucket: " << + bucket_name << std::endl; + + + Aws::S3::Model::DeleteObjectRequest object_request; + object_request.WithBucket(bucket_name).WithKey(key_name); + + auto delete_object_outcome = client.DeleteObject(object_request); + + if (delete_object_outcome.IsSuccess()) + { + std::cout << "Done!" << std::endl; + } + else + { + std::cout << "DeleteObject error: " << + delete_object_outcome.GetError().GetExceptionName() << " " << + delete_object_outcome.GetError().GetMessage() << std::endl; + } + /*****************************************************************/ +#endif + + Aws::ShutdownAPI(options); + return 0; +} + diff --git a/Minio对象存储简介_v3_20180727.pdf b/Minio对象存储简介_v3_20180727.pdf Binary files differnew file mode 100644 index 0000000..0808f77 --- /dev/null +++ b/Minio对象存储简介_v3_20180727.pdf |
