You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS SDK for Rust获取假定角色的凭证?

在AWS SDK for Rust中获取AssumeRole返回的明文凭证

要在Rust SDK里拿到AssumeRole返回的三个核心凭证字段,直接调用STS的assume_role接口即可,不需要依赖自动凭证链的隐式处理。以下是具体实现步骤:

1. 添加依赖

在你的Cargo.toml中加入AWS SDK相关依赖:

[dependencies]
aws-config = "1.1"
aws-sdk-sts = "1.12"
tokio = { version = "1.0", features = ["full"] }

2. 编写代码获取凭证

通过STS客户端发起AssumeRole请求,从响应中直接提取所需字段:

use aws_sdk_sts::{Client, Config, Credentials};
use aws_types::region::Region;

#[tokio::main]
async fn main() -> Result<(), aws_sdk_sts::Error> {
    // 初始化STS客户端(可使用默认配置,或指定自定义凭证来源)
    let config = Config::builder()
        .region(Region::new("us-east-1"))
        .build();
    let client = Client::from_conf(config);

    // 构建AssumeRole请求参数
    let assume_role_response = client
        .assume_role()
        .role_arn("arn:aws:iam::ACCOUNT_ID:role/YOUR_ROLE_NAME")
        .role_session_name("rust-assume-role-session")
        // 可选:添加外部ID、权限策略等参数
        // .external_id("YOUR_EXTERNAL_ID")
        .send()
        .await?;

    // 提取目标凭证字段
    if let Some(credentials) = assume_role_response.credentials() {
        let access_key_id = credentials.access_key_id();
        let secret_access_key = credentials.secret_access_key();
        let session_token = credentials.session_token();

        // 可根据需求打印、存储或使用这些凭证
        println!("Access Key ID: {}", access_key_id);
        println!("Secret Access Key: {}", secret_access_key);
        println!("Session Token: {}", session_token);

        // 可选:用获取到的凭证初始化其他AWS服务客户端
        let custom_credentials = Credentials::new(
            access_key_id,
            secret_access_key,
            session_token.to_owned(),
            credentials.expiration(),
            "assume-role",
        );
        // 示例:初始化S3客户端
        // let s3_config = aws_sdk_s3::Config::builder()
        //     .region(Region::new("us-east-1"))
        //     .credentials_provider(custom_credentials)
        //     .build();
        // let s3_client = aws_sdk_s3::Client::from_conf(s3_config);
    }

    Ok(())
}

关键说明

  • assume_role()返回的AssumeRoleOutput对象,通过credentials()方法可获取Option<Credentials>结构体,其中包含你需要的三个核心凭证字段。
  • 若要复用这些凭证初始化其他AWS客户端,直接用Credentials::new构建凭证实例,传入对应客户端的配置即可。
  • 注意通过if let Some处理Option类型,避免空指针panic。

内容的提问来源于stack exchange,提问作者Mikhail Subbotin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:42:51