寻求使用 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 一起使用