寻求使用 AWS C++ SDK 实现 get-credentials-for-identity 的示例,并且它需要 get-id 输入以用于临时 AWS 凭证

Posted

技术标签:

【中文标题】寻求使用 AWS C++ SDK 实现 get-credentials-for-identity 的示例,并且它需要 get-id 输入以用于临时 AWS 凭证【英文标题】:Seeking an example of using AWS C++ SDK to implement get-credentials-for-identity and it's required get-id input for temporary AWS credentials 【发布时间】:2022-01-15 07:20:55 【问题描述】:

我目前正在构建一个 C++ 客户端,它成功地向 AWS Cognito 用户池进行身份验证。我希望通过交换从 Cognito 收到的 ID 令牌来获取临时 AWS 凭证。

将高级流程与 AWS CLI 一起使用,这似乎是我正在工作的两个单独的调用。

aws 认知身份获取 ID aws cognito-identity get-credentials-for-identity

最终目标是为后续 AWS 服务调用接收 AccessKeyId、SecretKey、SessionToken、IdentityId。

【问题讨论】:

【参考方案1】:

我已经解决了 get-id 方面的问题,所以现在剩下的就很容易掉了。

  Aws::SDKOptions options;

Aws::Utils::Logging::LogLevel logLevel Aws::Utils::Logging::LogLevel::Error ;
options.loggingOptions.logger_create_fn = [logLevel] return make_shared<Aws::Utils::Logging::ConsoleLogSystem>(logLevel); ;

Aws::InitAPI(options);

Aws::Client::ClientConfiguration clientConfiguration;
clientConfiguration.region = REGION;    // region must be set for Cognito operations
s_AmazonCognitoIdentityClient = Aws::MakeShared<Aws::CognitoIdentity::CognitoIdentityClient>("CognitoIdentityClient",clientConfiguration);

Aws::CognitoIdentity::Model::GetIdRequest getIdRequest;
getIdRequest.SetAccountId(AWS_ACCOUNT_ID);
getIdRequest.SetIdentityPoolId(IDENTITY_POOL_ID);

map<string, string> logins
    "cognito-idp.[REGION].amazonaws.com/[Your Pool ID]", s_IDToken
;

getIdRequest.SetLogins(logins);

Aws::CognitoIdentity::Model::GetIdOutcome getIdOutcomes_AmazonCognitoIdentityClient->GetId(getIdRequest);
if (getIdOutcome.IsSuccess())

    Aws::CognitoIdentity::Model::GetIdResult getIdResultgetIdOutcome.GetResult();
    cout << "\tIdentity Token: " << getIdResult.GetIdentityId() << endl;

    s_IdentityId = getIdResult.GetIdentityId(); //Set for subsequent call to get credentials


else 

    Aws::Client::AWSError<Aws::CognitoIdentity::CognitoIdentityErrors> error = getIdOutcome.GetError();

    cout << "Error logging in: " << error.GetMessage() << endl << endl;


Aws::ShutdownAPI(options);

【讨论】:

以上是关于寻求使用 AWS C++ SDK 实现 get-credentials-for-identity 的示例,并且它需要 get-id 输入以用于临时 AWS 凭证的主要内容,如果未能解决你的问题,请参考以下文章

将 aws-iot-device-sdk-cpp-v2 与 CMake 一起使用

aws iot 使用 php sdk 订阅?

连接 SDK 寻求跳转到 0:00

带有 AWS SDK V2 构建器的 MapStruct

使用 aws-sdk-v1 从 ruby​​ 脚本中的 AWS SSM Parameter Store 获取数据

AWS Secrets Manager 使用 AWS-SDK Java 更新密钥请求