当前位置: 首页 > 知识库问答 >
问题:

在C++中使用DeveloperCredentials for AWS S3客户端

颛孙航
2023-03-14

我正在使用AWS C++SDK在Windows中编写一个C++应用程序,需要开发人员身份验证的帮助,以便在我的应用程序中向S3上传/下载文件。

我们有一个使用Cognito获取AWS临时凭据的后端应用程序(IdentityID&OpenIDToken)。我知道ProviderName和IdentityPoolID。与其描述我所做的尝试,我认为更容易展示。
下面是代码片段。我正在尝试做C#和Java SDK中可用的“刷新标识”的等价物。C#和Java都使用“refreshIdentity”,它定义了一个IdentityState(IdentityID,ProviderName,OpenIDToken,fromCacheFlag)

      `{
std::shared_ptr<MyInheritedPersistentCognitoIdentityProvider> identityProvider = std::make_shared<MyInheritedPersistentCognitoIdentityProvider>();
identityProvider->setIdentityPool(myIdentityPoolID); // us-east-1:c373a2ca-b912-3839-a65c-8d4ce53d512e -> not real
identityProvider->setAccountId(myProviderName); // login.mycompany.net

std::shared_ptr<MyInheritedCognitoIdentityClient> cognitoIdentityClient = 
    std::make_shared<MyInheritedCognitoIdentityClient>(); // _cognitoID and _openIdToken 
std::shared_ptr<Aws::Auth::AWSCredentialsProvider> cognitoCachCredProvider =
    std::make_shared<Aws::Auth::CognitoCachingAuthenticatedCredentialsProvider>(identityProvider, cognitoIdentityClient);
Aws::S3::S3Client s3Client(cognitoCachCredProvider);

/* attempt to upload/download here */

}`

共有1个答案

宇文飞翮
2023-03-14

您需要调用GetCredentialsForIdentity服务器端,如果没有人可以登录您自己创建的提供程序(我假设login.mycompany.net是自定义提供程序)

 类似资料:
  • 简介 TensorFlow Serving官方提供Inception模型的C++ gRPC client,可以参考 https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/inception_client.cc 。

  • 我想使用Apache Qpid订阅Java消息服务(JMS)发布订阅服务。然而,我不想使用Java,而是想使用C。我的客户告诉我这是可能的(甚至说是微不足道的)。它们是否正确?有人能给我举个例子吗?我所看到的每一处都表明,要使用JMS,我必须使用Java。这里的要点是,该服务是第三方服务(因此我不能将其更改为使用AMQP或JMS以外的任何其他协议)。

  • 问题内容: 我开始四处寻找搜索引擎,经过一番阅读后,我决定使用ElasticSearch(这是非常了不起的:)),我的项目在C#中,所以我四处寻找客户端并开始使用NEST,一切都很简单,但是我搜索部分有些混乱。 我想搜索 特定类型的 所有字段 ,然后 输入 以下代码: 我看到许多字符串查询搜索已被弃用,并想确保上面的方法是正确的方式(上面未标记为已弃用…)对于一个简单的任务来说也有点长,所以也许有

  • 1. 创建 Maven 工程 服务端部署完毕后,我们可以新建一个 Maven 工程使用 SOFARegistry 提供的服务。首先新建一个 Maven 工程,然后引入如下依赖: <dependency> <groupId>com.alipay.sofa</groupId> <artifactId>registry-client-all</artifactId> <versi

  • 发起请求 让我们从导入aiohttp模块开始: import aiohttp 好啦,我们来尝试获取一个web页面。比如我们来获取下GitHub的时间轴。 async with aiohttp.ClientSession() as session: async with session.get('https://api.github.com/events') as resp:

  • 创建okhttp3客户端,使用sni地址访问web服务器,但握手失败,错误消息为“javax.net.ssl.SSLHandShakeException:握手期间远程主机关闭连接”。 有人知道如何在okhttp3客户端代码中使用sni地址吗?