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

一文讲透亚马逊云命令行使用

从配置开始

学习使用亚马逊云,自然免不了使用命令行工具,首先我们从下载和配置开始:

现在都使用V2版本的命令行工具,可以从官网下载最新的二进制安装包。1

首先是配置凭证:

aws configure 

输入之后会提示输入AK/SK,region以及输入的格式信息,对于输出格式一般使用json,也可以选择text,table,yaml,yaml-stream ,比如在后边加上–output table。

AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:

如果需要多个凭证共存,可以使用–profile 来指定别名,然后每次在后边加上–profile dev即可。

aws configure --profile dev

配置好了可以使用如下命令进行查看:

aws configure list --profile dev

Name Value Type Location


profile dev manual --profile
access_key ****************ABCC shared-credentials-file
secret_key ****************1234 shared-credentials-file
region cn-north-1 config-file ~/.aws/config

从结果可以看出来,我们的凭证文件都存在credentials和config文件中。这两个文件都存在Home的.aws文件夹中,其中凭证存在credentials, 配置信息存在config中。

cat ~/.aws/credentials   [default]
aws_access_key_id = ****************ABCC
aws_secret_access_key = ****************ABCC
[dev]
aws_access_key_id = ****************ABCC
aws_secret_access_key = ****************ABCCcat ~/.aws/config  [default]
region = cn-north-1
output = json
[profile dev]
region = cn-north-1
output = json

如果不想查看配置文件,那么也可以使用如下命令来查看当前使用的身份:

aws sts get-caller-identity --output

结果如下:

{"UserId": "ACBGGHLPJLJKJOKKHJ","Account": "your account id","Arn": "your user/role arn"
}

多个凭证调用顺序

除了使用AK/SK之外,亚逊云更加推荐使用IAM role的身份,这样的好处是可以每次获取短暂的临时凭证,能够极大减少凭证泄漏的风险。

我们可以把IAM Role绑定在EC2 实例上,这样EC2就可以使用这个Role的身份了。如果一台机器上同时配置了AK/SK和Role,那么就会遵循无如下的优先级:2

  1. 命令行选项: 覆盖任何其他位置的设置,例如 --region、–output 和 --profile 参数,比如在没有显示指定region的情况下,可以使用—region 指定区域,使用-- profile 指定配置文件中其他的身份。

  2. 环境变量:环境变量中读取aws_access_key_id/aws_secret_access_key/region,对于临时凭证来说,还需要aws_session_token。这里还有一个技巧,使用AWS_PROFILE来指定配置时候profile的名字也可以达到一样的效果。只是对于不同的编程语言来说,这个环境变量大小写的要求不尽相同。

  3. AssumeRole:其他账户使用assume-role切换过来的角色,主要是为了跨账户操作,分为以下三种:

    1. AssumeRole:aws sts assume-role 切换的凭证
    2. AssumeRoleWithWebIdentity:OIDC 联合登陆
    3. AssumeRole with sso:使用IAM Identity Center 联合登陆
  4. 配置文件

    1. ~/.aws/credentials文件: 一般这里存放AK/SK切换信息
    2. 自定义流程文件
    3. ~/.aws/config文件:一般存放region和format
  5. 实例凭证

    1. 容器凭证:在同一机器的每个容器都有各自不同权限,优先级大于EC2实例凭证
    2. EC2 实例凭证:优先级最低,开发时候也最常使用

总结下来:命令行选项 > 环境变量 > 切换身份 > 配置文件 > 实例凭证

而配置文件和实例凭证恰恰是我们最常用的做法。

凭证切换

前面提到了AssumeRole,我们所知IAM Role是一种权限的集合,也常常用来实现跨账户访问以及联合登陆。前提需要配置好信任关系,一下信任关系表示该Role可以同时被指定IAM 身份和相同账户下的EC2访问。

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"AWS": "your IAM ARN",              "Service": "ec2.amazonaws.com.cn"},"Action": "sts:AssumeRole"}]
}

从用户切换到Role:

[profile prod]
role_arn = arn:aws:iam::123456789012:role/prod
source_profile = dev

这个命令的作用是使用dev身份切换到123456789012账户的prod,命令行会自动查找dev配置文件的凭证并且在后台使用 sts:AssumeRole 操作来切换到Prod身份。

从EC2 切换到Role

[profile prod]
role_arn = arn:aws:iam::123456789012:role/prod
credential_source = Ec2InstanceMetadata (是不是不关联也可以?)

这个一般用户AK/SK与IAM 共存的情况,这里credential_source可以是Ec2InstanceMetadata,Environment,EcsContainer。

我们先看来跨账户访问,配置如下:

[profile prod]
role_arn = arn:aws:iam::1234567890123:role/prod
source_profile = default
role_session_name = Session_Maria_Garcia

如果没有设置role_session_name,那么缺省值为userid:botocore-session-unix timestamps的形式,如下:

aws sts get-caller-identity --profile xu --region cn-north-1
{
“UserId”: “userid:botocore-session-unix timestamps”,
“Account”: “your account ”,
“Arn”: “arn:aws-cn:sts::your account:assumed-role/prod/botocore-session-unix timestamps”
}

反之,
{
“UserId”: “userid:botocore-session-Session_Maria_Garcia”,
“Account”: “your account ”,
“Arn”: “arn:aws-cn:sts::your account:assumed-role/prod/Session_Maria_Garcia”
}

代理相关

由于命令行是基于botocore进行开发的,那么可以安装Python方式来加代理。3

export HTTP_PROXY=http://10.15.20.25:1234
export HTTP_PROXY=http://proxy.example.com:1234
export HTTPS_PROXY=http://10.15.20.25:5678
export HTTPS_PROXY=http://proxy.example.com:5678

代理使用验证的方式如下:

export HTTP_PROXY=http://username:password@proxy.example.com:1234
export HTTPS_PROXY=http://username:password@proxy.example.com:5678

当然如果是全局代理,那么会影响命令行访问的内部通讯, 如有必要排除元数据地址:

export NO_PROXY=169.254.169.254

  1. 安装或更新到最新版本的 AWS CLI - AWS Command Line Interface ↩︎

  2. 配置 AWS CLI - AWS Command Line Interface ↩︎

  3. 使用 HTTP 代理 - AWS Command Line Interface ↩︎

相关文章:

一文讲透亚马逊云命令行使用

从配置开始 学习使用亚马逊云,自然免不了使用命令行工具,首先我们从下载和配置开始: 现在都使用V2版本的命令行工具,可以从官网下载最新的二进制安装包。1 首先是配置凭证: aws configure 输入之后会提示输入AK/SK…...

感染了后缀为.jayy勒索病毒如何应对?数据能够恢复吗?

导言: 在当今数字化的世界中,网络安全已经成为了每个人都需要关注的重要议题。而勒索病毒作为网络安全领域中的一大威胁,不断地演变和升级,给个人和组织带来了严重的损失和困扰。近期,一种名为.jayy的勒索病毒引起了广…...

一键快速彻底卸载:Mac软件轻松删除,瞬间释放磁盘空间

在接手使用前任员工遗留的Mac电脑时,经常面临的一个问题是内置了大量的非必要软件,这些软件不仅侵占了硬盘资源,还可能影响电脑整体性能。因此,迅速有效地删除这些冗余软件,以达成设备清爽、高效的初始化状态极其重要。…...

(React Hooks)前端八股文修炼Day9

一 对 React Hook 的理解,它的实现原理是什么 React Hooks是React 16.8版本中引入的一个特性,它允许你在不编写类组件的情况下,使用state以及其他的React特性。Hooks的出现主要是为了解决类组件的一些问题,如复杂组件难以理解、难…...

工厂方法模式:灵活的创建对象实例

在软件开发中,我们经常需要创建对象,但直接new一个实例可能会导致代码的耦合性增加,降低了代码的灵活性和可维护性。工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种创建对象的接口…...

vue-codeirror编辑器vue3中的使用

vue-codeirror编辑器vue3中的使用 <script lang"ts" setup> import { ref,reactive } from vue; import { Codemirror } from "vue-codemirror"; import { oneDark } from "codemirror/theme-one-dark"; import { json } from codemirror/…...

搭建python编译环境

目录 1.安装依赖包 2.安装失败进行换源 3. 更新系统 通过C 语言调用 Python 代码&#xff0c;需要先安装 libpython3 的 dev 依赖库&#xff08;不同的 ubuntu 版本下&#xff0c; python 版本 可能会有差异&#xff0c; 比如ubuntu 22.04 里是 libpython3.10-dev &#xff09…...

微信小程序登录流程

文章目录 1. 用户触发登录操作2. 获取临时登录凭证3. 发送登录凭证到服务器4. 后端使用 code 获取 session_key 和 openid5. 后端保存 session_key 和 openid 返回token6. 前端保存登录态 1. 用户触发登录操作 用户在小程序内部点击登录按钮或进行需要登录权限的操作&#xff…...

FPGA + 图像处理(三)生成3x3像素矩阵

前言 生成NxN的像素矩阵是对图像进行各类滤波操作的基本前提&#xff0c;本文介绍一种通过bram生成3x3矩阵的方法。 程序 生成bram核 因为本文介绍的是基于bram生成的3x3像素矩阵&#xff0c;所以要先生成两个bram核&#xff0c;用于缓存前两行图像数据 在 IP catalog中选…...

Redis安装说明2

Redis安装说明 1.3.2.指定配置启动 如果要让Redis以后台方式启动&#xff0c;则必须修改Redis配置文件&#xff0c;就在我们之前解压的redis安装包下&#xff08;/usr/local/src/redis-6.2.6&#xff09;&#xff0c;名字叫redis.conf&#xff1a; 我们先将这个配置文件备份一…...

ArcGIS10.8保姆式安装教程

ArcGIS 10.8是一款非常强大的地理信息系统软件&#xff0c;用于创建、管理、分析和可视化地理数据。以下是ArcGIS 10.8的详细安装教程&#xff1a; 确保系统满足安装要求 在开始安装之前&#xff0c;请确保您的计算机满足以下系统要求&#xff1a; 操作系统&#xff1a;Windo…...

设计原则、设计模式、设计模式项目实战

设计原则 封装、继承、多态、抽象分别可以解决哪些编程问题 封装&#xff1a;也叫做信息隐藏或数据保护访问。数据 通过暴露有限的访问接口&#xff0c;授权外部仅能通过类提供接口访问&#xff0c;对内的类private私有化属性&#xff0c;通过封装简化操作&#xff0c;让用户更…...

【Redis】解决List类型的消息可靠性问题

前言 平时做后端开发时&#xff0c;如果需要用到消息队列功能&#xff0c;但公司的IT环境又没有提供专业的队列软件&#xff08;RabitMQ/Kafka…&#xff09;&#xff0c;那么在简单且要求不高的场景下&#xff0c;可以使用 Redis 的List数据类型来做消息队列。 但List类型有…...

挑战30天C++基本入门(DAY8--树)[part 3](速通哦~)

#上一章我们把搜索二叉树的知识给传授完毕&#xff0c;如果认真的看下去并且手打了几遍&#xff0c;基本上内部的逻辑还是可以理解的&#xff0c;那我们现在就截至继续学习树的一些重要知识啦~~ 树高怎么求呀&#xff1f;如果用上一次学的层次遍历来求树高&#xff0c;有点小题…...

在虚拟机尝试一次用启动盘重装系统

在虚拟机尝试一次用启动盘重装系统 没有自己重装过系统&#xff0c;也不敢对自己的笔记本下手&#xff0c;用虚拟机重装玩玩试试。 先设置成u盘启动 从boot中选择相应的创建的硬盘即可&#xff08;刚刚突然发现图片不能上传了&#xff0c;经过乱七八糟的尝试后&#xff0c;开一…...

力扣347. 前 K 个高频元素

思路&#xff1a;记录元素出现的次数用map&#xff1b; 要维护前k个元素&#xff0c;不至于把所有元素都排序再取前k个&#xff0c;而是新建一个堆&#xff0c;用小根堆存放前k个最大的数。 为什么是小根堆&#xff1f;因为堆每次出数据时只出堆顶&#xff0c;每次把当前最小的…...

SCP 从Linux快速下载文件到Windows本地

需求&#xff1a;通过mobaxterm将大文件拖动到windows本地速度太慢。 环境&#xff1a;本地是Windows&#xff0c;安装了Git。 操作&#xff1a;进入文件夹内&#xff0c;鼠标右键&#xff0c;点击Git Bash here&#xff0c;然后输入命令即可。这样的话&#xff0c;其实自己本…...

plasmo内容UI组件层级过高导致页面展示错乱

我使用plasmo写了一个行内样式的UI组件&#xff0c;但是放到页面上之后&#xff0c;会和下拉组件出现层级错乱&#xff0c;看了一下样式&#xff0c;吓我一跳&#xff1a;层级竟然设置的如此之高 所以就需要将层级设置低一点&#xff1a; #plasmo-shadow-container {z-index: …...

《QT实用小工具·十一》Echart图表JS交互之仪表盘

1、概述 源码放在文章末尾 该项目为Echart图表JS交互之炫酷的仪表盘&#xff0c;可以用鼠标实时改变仪表盘的读数。 下面为demo演示&#xff1a; 该项目部分代码如下&#xff1a; #include "widget.h" #include "ui_widget.h" #include "qurl.h&q…...

深入浅出理解ArrayBuffer对象TypedArray和DataView视图

目录 举例理解 1. ArrayBuffer对象 2. TypedArray 3. DataView 总结 具体讲解 1. ArrayBuffer对象 2. TypedArray 3. DataView 注意事项 举例理解 先举个简单的例子理解ArrayBuffer对象TypedArray和DataView视图的概念和之间的关系 1. ArrayBuffer对象 想象一个场景…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...