如何使用和配置 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全…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

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…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...