当前位置: 首页 > news >正文

Java 在AWS上使用SDK凭证获取顺序

在AWS 环境上凭证获取

我们平常在AWS云上会部署Java服务,其中会使用Java服务操作AWS 资源,其中会涉及到Java使用AWS 凭证操作AWS资源,AWS默认提供了一系列的方式来获取AWS 凭证,下面是获取的一些顺序。

DefaultCredentialsProvider 是什么

DefaultCredentialsProvider 是 AWS SDK for Java 提供的一个默认凭证提供链(Default Credential Provider Chain)。它的作用是为应用程序自动检索 AWS 凭证,而无需手动指定凭证。这种机制使得应用程序能够在不同环境下(如本地开发环境、EC2 实例、ECS 任务等)无缝切换。

DefaultCredentialsProvider 的凭证查找顺序

DefaultCredentialsProvider 按以下优先级顺序查找 AWS 凭证:

  1. 环境变量

    • 检查以下环境变量是否存在:
      • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
      • (可选)AWS_SESSION_TOKEN(如果使用临时凭证)
    • 如果环境变量中存在这些凭证,则直接使用。
  2. Java 系统属性

    • 检查以下 Java 系统属性:

      • aws.accessKeyIdaws.secretKey
      • (可选)aws.sessionToken
    • 这些属性可以通过 JVM 参数设置,例如:

      java -Daws.accessKeyId=yourAccessKeyId -Daws.secretKey=yourSecretKey YourApp

  3. 默认配置文件

    • 检查本地 AWS 配置文件(~/.aws/credentials~/.aws/config)。
    • 默认使用 default 配置文件中的凭证。
    • 示例文件内容:
    • [default] aws_access_key_id = yourAccessKeyId aws_secret_access_key = yourSecretKey
  4. ECS 容器凭证

如果应用运行在 ECS 容器中,DefaultCredentialsProvider 会从 ECS 容器元数据服务(169.254.170.2)中获取临时凭证。

这需要在 ECS 任务中配置 IAM 角色。

  1. EC2 实例元数据服务

​ 如果应用运行在 EC2 实例中,DefaultCredentialsProvider 会尝试从实例元数据服务(169.254.169.254)中获取临时凭证。这需要为 EC2 实例配置 IAM 角色。

  1. 自定义凭证提供链

​ 如果以上来源都没有找到凭证,可以使用自定义的凭证提供器。

使用 AWS SDK 自动获取临时凭证

import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;public class DebugCredentials {public static void main(String[] args) {// 使用 DefaultCredentialsProviderDefaultCredentialsProvider provider = DefaultCredentialsProvider.create();// 获取当前凭证AwsCredentials credentials = provider.resolveCredentials();// 打印凭证信息System.out.println("Access Key: " + credentials.accessKeyId());System.out.println("Secret Key: " + credentials.secretAccessKey());// 检查是否包含 Session Token(临时凭证)if (credentials instanceof AwsSessionCredentials) {AwsSessionCredentials sessionCredentials = (AwsSessionCredentials) credentials;System.out.println("Session Token: " + sessionCredentials.sessionToken());} else {System.out.println("No Session Token available.");}}
}

注意事项

  1. 临时凭证的有效期
    • ECS 提供的临时凭证通常有效期为 6 小时。
    • AWS SDK 会自动刷新临时凭证,无需手动处理。
  2. 权限范围
    • 确保 IAM 角色的权限策略足够精确,只授予应用程序需要的最小权限。
  3. 网络配置
    • 确保 ECS 容器可以访问 169.254.170.2 元数据服务(通常无需额外配置)。
http://www.dtcms.com/a/483330.html

相关文章:

  • 百度手机网站自助建站青岛硅谷网站建设
  • 做响应式网站的物流微信商城网站案例展示
  • 【java】springboot分库分表 12 种分片算法(下)
  • Java多线程编程实战技巧深度解析:从并发基础到高吞吐架构的艺术
  • Nginx 自动化脚本安装方案
  • 巩义网站建设托管邹平建设项目网站公示
  • ETF网格交易覆盖率缺口与满仓踏空风险量化模型
  • 数据结构入门 (八):寻访节点的“路线图” —— 二叉树的深度与广度遍历
  • 复兴区建设局网站永久免费云储存空间
  • 线程池参数调整
  • Unity学习之Addressables可寻址系统
  • SQL优化手段有哪些
  • 建设银行江苏分行网站一键生成图片
  • php框架做网站的好处福田网站制作
  • 合并多个excel到一个excel中
  • 多因子模型识别供需共振:AI量化系统捕捉“白银突破52美元”的结构性动能
  • 网站建设公司哪里好企业微信小程序制作
  • 【前端学习】仿Deepseek官网AI聊天网站React
  • 2018年10月四川省自考《信息组织》试题
  • 统计期刊介绍——Journal of Statistical Software(JSS)
  • 漳州开发区人才网北京网站优化公司
  • Datawhale_数学建模导论_笔记
  • 【机器人学中的状态估计】2.5.1习题:假设u,v是两个相同维度的列向量,请你证明u^Tv=tr(vu^T)
  • 解决 Anki 启动器下载错误的完整指南
  • 烟台百度做网站多少钱怎么制作钓鱼网站链接
  • 做网站多少钱一般wordpress安装插件需要ftp
  • 网做 网站有哪些基础集团网站建设
  • Cannot resolve plugin org.apache.maven.plugins:maven-jar-plugin:3.2.2 这怎么办
  • 可以用wpf做网站吗附子seo教程
  • 大模型引言