如何使用和配置 AWS CLI 环境变量?
欢迎来到雲闪世界。环境变量在配置和保护应用程序方面起着至关重要的作用,在使用 AWS CLI(命令行界面)时,它们的使用尤其重要。在这篇博客文章中,我们将深入探讨环境变量的世界,探索它们的用途、它们在 AWS CLI 中的重要性以及如何有效地设置和配置它们。我们还将讨论不同类型的环境变量及其用例,以及最佳实践和应避免的常见错误。
一、什么是环境变量?
环境变量解释
环境变量是位于应用程序外部但用于配置应用程序中的动态值的键值对。环境变量的值可能因环境而异,这意味着它们不是硬编码在应用程序中的。此外,环境变量的来源在不同情况下也可能不同,例如文本文件、任何机密管理器等。环境变量通常用于保存因环境而异的机密和应用程序配置。
它们在 AWS CLI 中的工作方式
环境变量在保护 AWS CLI 使用的访问密钥、秘密密钥和其他敏感信息方面起着至关重要的作用。在 AWS CLI 上执行任何命令时,它都可以自动获取并使用与 AWS CLI 配置关联的具有特定名称的密钥的值。例如,如果您想在任何特定区域中执行命令,则可以使用“AWS_DEFAULT_REGION”环境变量。同样,您可以针对“AWS_PROFILE”环境变量设置值以使用任何特定的配置文件执行命令。这样,您无需每次在命令中指定区域、配置文件或秘密等,也无需一次又一次地修改它们,您可以根据针对环境变量设置的预定值方便地在 AWS CLI 上工作。
环境变量的类型
A.系统环境变量
有时,您可能会使用需要在系统的环境变量选项卡中设置“PATH”的工具。这些类型的环境变量称为系统环境变量。它们位于系统顶部,对它们的任何更改都将应用于整个系统下所有用户配置文件下运行的所有进程。
B.用户环境变量
这些环境变量是用户特定的,仅适用于任何特定的用户配置文件。如果用户希望保留仅针对他们的系统环境变量和设置的偏好,他们可以自定义这些变量。
C.自定义环境变量
这些环境变量特定于进程或应用程序。如果用户需要存储任何应用程序或进程使用的特定信息,他们可以使用自定义环境变量。这些变量可以在多个应用程序或进程之间共享。
II.在 AWS CLI 中设置和配置环境变量
在 AWS CLI 中设置环境变量的方法
可以通过不同的方式设置 AWS CLI 的环境变量,但每种方式都有优先顺序。
A. 命令行(最高优先级)
命令行可以设置每个环境变量及其值。如果您已经在系统环境、配置文件或凭证文件中定义了该变量,则命令行将覆盖它。
B. Shell 配置文件/机器环境变量(第二高优先级)
您可以在系统属性或 shell 配置文件(如.bashrc、.bash_profile或.profile )中找到环境变量对话框,您可以在其中为 AWS CLI 定义环境变量。命令行可以覆盖这些变量,但 shell 配置文件或系统环境变量将覆盖 aws 配置文件。
C.AWS CLI 配置/凭证文件(最低优先级)
AWS CLI 还维护配置和凭证文件,您可以在其中定义经常使用的环境变量。这些文件的优先级低于以其他方式定义的环境变量。
在 Windows、macOS 和 Linux 中设置环境变量的示例
每个操作系统通过其命令行工具设置 AWS CLI 的环境变量的方式都不同。让我们逐一讨论。
A. Windows
在 Windows 中,我们可以使用 Windows 命令提示符来设置环境变量,方法是在环境变量的键值对前使用 ' set ' 关键字。例如:

添加图片注释,不超过 140 字(可选)
Linux/MacOS
在 Linux 或 MacOS 中,我们可以使用终端来设置环境变量,方法是在环境变量的键值对前使用 'export' 关键字。例如:
注意:上面的例子将仅为当前会话设置一个环境变量,但如果您想为所有会话设置一个环境,那么在 Windows 的情况下,您可以使用'setx'而不是'set',而在 Linux/MacOS 的情况下,您可以在 shell 启动脚本中设置变量。

添加图片注释,不超过 140 字(可选)
III.配置 AWS CLI 环境变量
如何配置 AWS CLI 环境变量
要使用环境变量配置 AWS CLI,您需要在 Linux/MacOS 终端或 Windows 命令提示符中键入“ aws configure ”,作为响应,您必须输入“AWS 访问密钥 ID”、“AWS 秘密访问密钥”、“默认区域名称”、“默认输出格式”的值。
配置环境变量的示例
运行命令“aws configure ”并提供值
提供所有值后,您可以在位于以下位置创建的“.aws”文件夹中的“config”和“credentials”文件中确认配置的环境变量:“C:\Users\[YOURUSERNAME]”
为 AWS CLI 设置和配置环境变量的用例
A. 多种环境独立配置
假设您有针对不同环境(例如开发、暂存、生产等)的 AWS CLI 配置集。在这种情况下,您只需设置环境变量即可轻松地在这些环境之间切换。您可以通过替换与该特定环境关联的环境变量来快速更改 AWS CLI 配置。环境变量在您不能承受错误的生产环境中非常有用。
B. 保护和管理机密
当您处理敏感信息时,包括不建议使用硬编码且不希望在每个命令中指定它们的 AWS 访问密钥,因此,出于此目的,如果您使用环境变量,这将允许您避免在每个命令中指定凭据,并且将您的凭据与代码分开将最大限度地降低泄露敏感信息的风险。
IV.使用 AWS CLI 环境变量的最佳实践
有效使用环境变量的技巧
A. 分配默认值
如果您忘记设置任何环境变量,默认值将作为备份,因为环境变量的空值可能会导致意外崩溃或错误。
B.记录每个环境变量的用途
了解每个环境变量的用途对于使用它们的团队成员来说非常重要。在这方面,记录每个变量的用途将有助于所有团队成员正确使用环境变量并避免错误配置。
C. 通用命名约定
在不同环境(例如开发、准备、生产)之间迁移时,遵循相同的命名标准至关重要,以免造成混淆。变量将继续按原样命名,但它们的值可能会因环境而异。
D. 各环境的配置集
如果您拥有不同的环境(例如开发、暂存和生产),则使用环境变量可以通过为每个环境创建配置集来简化部署过程。这种方法可以避免任何错误配置并节省时间。
如何保护环境变量中的敏感信息
A. 安全存储
您必须确保包含敏感数据的环境变量存储在单独的安全加密存储平台(例如机密管理器或任何其他云服务)上并可访问。
B. 授权访问
在使用包含秘密或敏感信息的环境变量时,设置权限和访问控制非常重要,这样未经授权的个人就无法访问它们。
C. 定期监测和轮换
定期轮换环境变量非常重要,尤其是 AWS 密钥或其他与敏感信息相关的机密。定期轮换环境变量将有助于避免其泄露。
应避免的常见错误
A. 避免承诺
在将更改提交到 git 时,开发人员还会提交并推送环境变量,这些变量会将敏感信息暴露给未经授权的人员。有多种方法可以避免此错误,但最常见的方法是将环境变量文件与存储库分开或将其添加到.gitignore。
B. 避免记录
有时为了调试目的,开发人员会记录环境变量,然后忘记删除它们,这将导致数据泄露和未经授权的访问。为了避免这种错误,您永远不应该记录此类环境变量,并尝试使用专门为环境变量设计的调试工具。
五、结论
回顾 AWS CLI 环境变量的重要性
-
使用环境变量可以让您使用 AWS CLI 的体验变得简单、方便和流畅。
-
您可以轻松切换到所需的设置或配置,而无需修改和运行多个命令。
-
使用环境变量将保护您的敏感信息并降低意外暴露的风险,而无需在 AWS CLI 的每个命令中指定它们。
-
只需共享配置的环境变量值,您就可以安全地与其他团队成员同步,并能够在不同的环境中部署应用程序。
最后的想法和建议
-
在所有 AWS CLI 工作流中使用环境变量。
-
加密敏感变量,限制其访问,定期轮换机密,并将其存储在安全存储中。此外,避免记录意外泄露。
-
使用自动化工具和脚本在各个环境(例如开发、登台、生产等)中一致地管理和设置环境变量。
-
使用各种环境变量配置彻底测试您的代码和应用程序,以确保正常的功能和弹性。
-
定期检查更新、安全公告和新功能,以改进您的 AWS CLI 工作流程并增强您的环境变量安全性。
环境变量是配置和保护应用程序的强大工具,尤其是在使用 AWS CLI 时。它们提供了一种灵活的方式来处理动态值(例如访问密钥和密钥),而无需在应用程序代码中对其进行硬编码。通过利用环境变量,您可以简化 AWS CLI 交互、增强安全性并简化部署过程。
感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)
订阅频道(https://t.me/awsgoogvps_Host) TG交流群(t.me/awsgoogvpsHost)
#aws CLI cheat sheet #aws cli Debug #aws cli get S3 object #aws cli login with access key #aws cli to download from s3 #aws command line download from s3 #homebrew install aws cli#aws sdk get caller identity #aws s3 cli get object #aws s3 put object#aws s3 headobject#aws s3 put-object #aws s3 sync vs cp
相关文章:
如何使用和配置 AWS CLI 环境变量?
欢迎来到雲闪世界。环境变量在配置和保护应用程序方面起着至关重要的作用,在使用 AWS CLI(命令行界面)时,它们的使用尤其重要。在这篇博客文章中,我们将深入探讨环境变量的世界,探索它们的用途、它们在 AWS…...
七、流程控制
if语句 在go语言中if语句的写法是比较简单的,也是很常见的 func main() {a : trueif a {fmt.Println("a is true")} }if else 语句 func main() {a : trueif !a {fmt.Println("a is true")} else {fmt.Println("a is false")} }el…...
【通过python启动指定的文件】
通过python启动指定的文件 在 Python 中,可以使用os模块的startfile函数(在 Windows 系统中)或者subprocess模块来启动指定的文件。 以下是使用os模块在 Windows 系统中的示例: import osfile_path "C:\\path\\to\\your\…...
区块链开源的项目有哪些?
区块链领域有许多开源项目,它们覆盖了从基础设施到应用层的不同方面。以下是一些著名的区块链开源项目: 1. Bitcoin (比特币):第一个去中心化的加密货币,源代码在 GitHub 上开源。它实现了区块链技术的基本概念。 2. Ethereum (…...
3152. 特殊数组 II(24.8.14)
题目 如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 特殊数组 。 你有一个整数数组 nums 和一个二维整数矩阵 queries,对于 queries[i] [fromi, toi],请你帮助你检查 子数组 nums[fromi…toi] 是不是一个 特殊数组…...
Android 全系统版本文件读写最佳适配,CV 即用(适配到 Android 14)
结合着Android的历史问题,我们需要这样写才行: 首先 manifest 部分 <manifest><!-- Devices running Android 12L (API level 32) or lower --><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" a…...
【日记】朋友和他女朋友领证了(368 字)
正文 一定程度上感受到了驻场运维的水深火热,感觉成天到晚都在救火。今天下午就给人修了四五台机器…… 回想了一下,今天貌似还真没干什么。毕竟早上睁眼就是 8:35 了,给人吓得半死。 (感觉 AI 也很智障,当初就是发现音…...
行业大模型:信用评分大模型、生产优化大模型、库存管理大模型、物流行业大模型、零售行业大模型
金融行业大模型:信用评分大模型 信用评分模型在金融行业中扮演着至关重要的角色,它通过对个人或企业的信用状况进行评估,帮助金融机构有效控制风险,提高业务效率。以下是信用评分模型的特点及案例介绍: 信用评分模型…...
VSCode 搭配 Windows 下各种 C/C++ 编译器使用
Visual Studio Code(简称 VSCode)是一款由微软开发的免费、开源的代码编辑器,它支持多种编程语言,包括 C 和 C++。VSCode 提供了丰富的扩展和定制功能,使得开发者能够根据自己的需求进行个性化设置。在 Windows 环境下,搭配合适的 C/C++ 编译器,VSCode 能够成为一个强大…...
【JavaEE】线程池和定时器
🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 ✏️一.线程池 在Java中,线程池(Thread Pool)是一种用于管理并发线程的机制,它提供了一种创建、复用和管理一组…...
《Unity3D网络游戏实战》通用服务器框架
服务端程序的两大核心是处理客户端的消息和存储玩家数据 模块划分 游戏流程 连接阶段:客户端调用Connect连接服务端即为连接阶段。连接后双端即可通信,但服务端还不知道玩家控制的是哪个角色。于是客户端需要发送一条登录协议,协议中包含用户…...
LeetCode404 左叶子之和
前言 题目: 404. 左叶子之和 文档: 代码随想录——左叶子之和 编程语言: C 解题状态: 成功解答! 思路 注意左叶子节点的定义:节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是…...
nodejs操作redis的工具类
const Redis require("ioredis");async function generateStreamID() {// 生成时间戳(毫秒级)const timestamp Date.now();// 生成唯一的序列号const sequenceNumber Math.random() * 1000; // 根据需要生成唯一的序列号// 构建 Stream ID&…...
关于wsl2与win11互联互通的问题
首先搞清楚使用场景。我是在win11上写go做后端api,在WSL2 的Linux上写前端页面。 我发现在windows 里写go语言没啥问题,我的后端api部署在win11上。但是在win11上写前端经常会遇到莫名其妙的故障,一会npm包下不来一会说包之间的依赖结构出问题…...
C++ 类型转换
目录 0.前言 1.C语言类型转换 1.1隐式类型转换 1.2显式类型转换 2.C强制类型转换 2.1 static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 dynamic_cast 3.为什么C需要4种强制类型转换 3.1类型转换的多样性需求 3.2提高类型转换的安全性 3.3提供更明确的语义 3.4支持高级编程…...
2024挖漏洞给报酬的网站汇总,兼职副业3天收益2k
文章目录 一、众测平台(国内)二、前沿漏洞研究奖励计划三、行业SRC四、企业应急响应中心-SRC-汇总 1、互联网企业2、生活服务、住宿、购物相关企业3、物流、出行、旅游4、金融相关企业5、视频游戏直播社交娱乐6、教育、问答、知识付费7、泛科技通讯物联网云服务8、安全企业9、其…...
0到1学习Google广告(2):掌握展示位置及排名规则丨出海笔记
大家好, 我是专注谷歌广告和谷歌SEO的谷哥哥哥,感谢出海笔记Alan邀请。今天我们来聊聊广告界的大拿——谷歌广告。在这个数字营销的黄金时代,无论是B2B、B2C还是品牌类客户,谷歌广告都是一个不容忽视的战场。那么,如何在这个战场上…...
MySQL数据库读超时/SELECT查询超时 杂记
本文环境 阿里云RDS MySQL 8.0.34 当客户端向MySQL数据库发送一条SQL之后,由于SQL很慢很慢,它会在什么时候结束呢? 查看 max_execution_time 变量值 mysql> show variables like max_execution_time; --------------------------- | Variable_name | Value | ------…...
docker数据卷:
docker数据卷: 容器和宿主机之间数据共享 容器和宿主机之间数据共享——————挂载卷————容器内的目录和宿主机的目录进行挂载,实现数据文件共享 容器的生命周期有限,一旦重启所有对容器内部文件数据的修改以及保存的数据都会被初始…...
【linux】linux中如何通过systemctl来创建和管理服务
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
