如何使用和配置 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全…...
WPF-实现多语言的静态(需重启)与动态切换(不用重启)
目录 一、多语言切换(需重启) 1、配置文件添加Key 2、新增附加属性当前选择语言 3、创建资源文件 4、初始化多语言集合 5、切换多语言并更新配置文件 6、应用程序启动根据配置切换多语言 7、使用 二、多语言切换(无需重启)…...
UE5学习笔记12-为角色添加蹲下的动作
一、一点说明 1.蹲下使用了ACharacter类中Crouch();函数,函数功能是先检查是否存在运动组件,将bool类型的变量变为true,该变量代表是想要蹲下。 2.通过源码可知存在是否蹲下的bool变量bIsCrouched如图,如果对:1有疑问请搜索C位域 …...
【笔记】Android 多用户模式和用户类型
简介 用户界面:System 》Multiple Users 》 开关多用户模式。 一般是不同用户模式下,有修改Settings应用配置的权限差异,因此需要通过用户类型对功能进行判断限制。 代码 通过UserManager可以获取当前用户的信息。 frameworks/base/core/…...
SQL基础——MySQL的索引
简介:个人学习分享,如有错误,欢迎批评指正。 一、概述 介绍 索引是通过某种算法,构建出一个数据模型,用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表&…...
【开发语言】面向对象和面向过程开发思路的区别
引入: 我总结了 面向过程的开发语言思路:1.我要干啥?2.怎么才能实现 面向对象的开发语言思路:1.我要研究谁?2.他能干啥 详解: 面向过程的开发语言思路 我要干啥? 在面向过程的开发中&a…...
谷歌账号登录的时候提示被停用,原因是什么,账号还有救吗?该如何处理?
今日早上,有个久违的朋友找到我说,要恢复账号。 他的情况是这样的:7月21日的时候,他发现自己的谷歌账号登录的时候提示活动异常先,需要输入手机号码验证才能恢复账号。但是输入了自己和亲友们的多个手机号码都无法验证…...
数据库复习笔记
写在最前, 写文章的初衷只是为了复习与记录自己的成长,笔者目前水平还有待提高,文章中难免会出现许多问题与错误,文章内容仅供参考,有不足的地方还请大家多多包涵并指正,谢谢~ 第八章 T-SQL程序结构 8.…...
学习STM32(6)-- STM32单片机ADCDAC的应用
1 引 言 深入了解并掌握STM32F103单片机在模拟数字转换(ADC)和数字模拟转换(DAC)应用方面的功能和操作。学习如何配置STM32F103的ADC模块,实现模拟信号到数字信号的精确转换;同时,探索DAC模块…...
学习记录第二十五天
wait函数 wait函数是一个系统调用,用于等待一个子进程结束并回收其资源。当父进程调用wait函数时,它会暂停执行,直到至少有一个子进程结束。wait函数的原型如下: #include <sys/types.h> #include <sys/wait.h>pid_…...
C语言:字符串函数strcmp
该函数用于比较两个字符串是否一样。 使用方法如下: #include<stdio.h> #include<string.h>int main() {//strcmp函数返回值有三种情况,小于零时返回-1,等于零,大于零时返回1printf("%d\n", strcmp("…...
做网站的费用入账/免费b站网站推广
链接:https://pan.baidu.com/s/1zqhbQELzIJn_z6JDz8gKDA 提取码:52pj...
网站制作 需要什么网络技术/网站首页制作网站
引:http://www.javaeye.com/topic/283668 近期taowen同学连续发起了两起关于贫血模型和领域模型的讨论,引起了大家的广泛热烈的讨论,可是讨论(或者说是争论)的结果究竟如何,我想值得商榷。问题是大家对贫血模型和领域模型都有自己…...
外贸哪些免费网站开发客户/注册公司网上申请入口
background-image 属性是 CSS 的一个用于为元素设置背景图片的属性。语法如下: background-image: url(image.jpg);其中 url(image.jpg) 就是指定图片的地址。可以使用相对路径或绝对路径,也可以使用其他图片引用方式,如 data URI。 使用 bac…...
页面设计计划/北京seo业务员
LinkIt_for_RTOS_Firmware_Update_Developers_Guide--用于实时操作系统固件更新开发指南的MediaTek Linkit™开发平台 MediaTek Linkit™SDK v4支持固件空中更新(FOTA)更新,这是一种广泛采用的成本和时间高效的解决方案,用于更新连接设备上的固件。开发…...
2b2网站开发/百度移动端优化
sery 的BLOG链接:http://sery.blog.ccidnet.com/blog/ccid/do_showone/tid_35445.html来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/39335/viewspace-350917/,如需转载,请注明出处,否则将追究法律责任。 转载于…...
做独立网站需要注意什么好/网站推广方式组合
String str; str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str; str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时…...