问题一:我购买了oss存储,然后快照服务的ECS快照是存在OSS里么?还是说我要手动把快照存进去?
我购买了oss存储,然后快照服务的ECS快照是存在OSS里么?还是说我要手动把快照存进去?
参考回答:
不需要手动。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/583730
问题二:C++初始化OssClient 时,是否支持通过参数传入AK,SK?
SDK开发指导上描述如下:
/ 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。/
/ 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。/
auto credentialsProvider = std::make_shared();
OssClient client(Endpoint, credentialsProvider, conf);
是否有其他方式可以支持参数传AK,SK
参考回答:
是的,除了从环境变量中获取AK和SK之外,阿里云OSS C++ SDK还支持直接通过参数传入AK和SK。你可以使用GenericCredentialsProvider
类来传递AK和SK。以下是一个示例:
#include <alibabacloud/oss/OssClient.h> #include <alibabacloud/oss/model/SetBucketWebsiteRequest.h> #include <alibabacloud/oss/model/SetBucketWebsiteResult.h> #include <alibabacloud/core/CredentialsProvider.h> #include <alibabacloud/core/GenericCredentialsProvider.h> using namespace AlibabaCloud::OSS; using namespace AlibabaCloud::SDK::OSS::Model; int main() { // 创建凭证提供者,通过AK和SK初始化 auto credentialsProvider = std::make_shared<AlibabaCloud::SDK::Core::GenericCredentialsProvider>( "yourAccessKeyId", "yourAccessKeySecret"); // 创建OSS客户端 OssClient client(Endpoint, credentialsProvider); // 现在你可以使用client进行OSS操作了 return 0; }
在这个示例中,将"yourAccessKeyId"和"yourAccessKeySecret"替换为你的实际AK和SK。这种方式允许你在代码中直接提供访问凭证,而不是依赖于环境变量。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/579772
问题三:OSS Bucket 创建好后, 可以更改存储类型么?
OSS Bucket 创建好后, 可以更改存储类型么?
参考回答:
阿里云对象存储OSS的存储类型是可以更改的,但需要明确的是,这种更改是不可逆的。也就是说,一旦你将Bucket的存储类型从一种转换为另一种,就不能再改回原来的类型。
具体来说,标准存储(LRS)类型可以转换为低频访问(LRS)、归档存储(LRS)和冷归档存储(LRS)类型。而低频访问(LRS)类型则可以转换为归档存储(LRS)和冷归档存储(LRS)类型。
要进行存储类型的修改,你可以在文件列表页面中选择目标Object,然后点击 > 修改存储类型。在修改过程中,建议你打开保留用户自定义元数据开关,这样在修改存储类型后,Object的自定义元数据信息可以被保留。
另外,需要注意的是,Bucket的存储冗余类型必须为本地冗余存储。而OSS仅支持将本地冗余存储转换为同城冗余存储。换句话说,Bucket的存储类型必须为标准存储、低频访问存储或归档存储。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/579071
问题四:对象存储、块存储、文件存储他们都有什么不通的作用?
都是存储,他们的主要用途在哪里?
假如搭建一个网站应该使用哪种存储?
假如搭建个人网盘使用什么方式存储?
参考回答:
对象存储、块存储和文件存储是三种不同的数据存储方式,它们各自具有独特的功能和适用场景。
- 对象存储:主要用于存储非结构化的数据,如图片、视频、音频等。对象存储提供了基于键值对的访问方式,可以轻松地存储大量的非结构化数据,并支持数据的版本控制和冗余备份。此外,对象存储还具有可扩展性和高可用性,可以轻松地应对数据量的大规模增长和多节点的扩展需求。
- 块存储:主要用于存储结构化的数据,如数据库、文件系统等。块存储提供了基于块的访问方式,可以满足随机访问和顺序访问的需求,并具有高性能和可靠性。块存储通常用于需要高性能和可靠性的应用场景,如金融、医疗、科研等。
- 文件存储:主要用于存储结构化的数据,如文件、文档等。文件存储提供了基于文件的访问方式,可以满足文件共享和协作的需求。文件存储通常用于需要共享文件的应用场景,如办公、设计、教育等。
如果网站需要存储大量的图片、视频、音频等非结构化数据,并且需要支持随机访问和版本控制,那么对象存储可能是一个更好的选择。
如果网站需要存储结构化的数据,如数据库、文件系统等,并且需要支持高性能和可靠性,那么块存储可能是一个更好的选择。如果网站需要存储大量的文件和文档,并且需要支持文件共享和协作,那么文件存储可能是一个更好的选择。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/579069
问题五:OSS 无法通过 policy 授权 STS 带有特殊字符的资源
使用的policy如下
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:PutObject", "oss:ListParts", "oss:AbortMultipartUpload", "oss:GetObject", "oss:DeleteObject" ], "Resource": [ "acs:oss:*:*:my-bucket/Test/user:123/*" ] } ] }
向 my-bucket/Test/user:123/a.txt 上传时
ByteArrayInputStream in = new ByteArrayInputStream("Hello OSS".getBytes()); stsClient.putObject("my-bucket", "Test/user:123/test.txt", in);
被权限拒绝
com.aliyun.oss.OSSException: Access denied by authorizer's policy.
但如果去掉冒号,或者授权资源改为my-bucket/Test/*
就一切正常,就是单独为带特殊符号的路径授权时无效
参考回答:
这个问题是由于OSS的权限策略中,资源路径不能包含冒号(:)。你可以尝试将资源路径中的冒号替换为其他字符,例如下划线(_)或者短横线(-),然后再进行授权。
修改后的policy如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:PutObject", "oss:ListParts", "oss:AbortMultipartUpload", "oss:GetObject", "oss:DeleteObject" ], "Resource": [ "acs:oss:*:*:my-bucket/Test/user_123/*" ] } ] }
然后,你可以使用以下代码上传文件:
ByteArrayInputStream in = new ByteArrayInputStream("Hello OSS".getBytes()); stsClient.putObject("my-bucket", "Test/user_123/test.txt", in);
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/576850