当前位置: 首页 > 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对象 想象一个场景…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 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 系统…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...

EEG-fNIRS联合成像在跨频率耦合研究中的创新应用

摘要 神经影像技术对医学科学产生了深远的影响&#xff0c;推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下&#xff0c;基于神经血管耦合现象的多模态神经影像方法&#xff0c;通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里&#xff0c;本研…...

react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)

之前都是使用react-pdf来渲染pdf文件&#xff0c;这次有个需求是要兼容xp环境&#xff0c;xp上chrome最高支持到49&#xff0c;虽然说iframe或者embed都可以实现预览pdf&#xff0c;但为了后续的定制化需求&#xff0c;还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...

统计按位或能得到最大值的子集数目

我们先来看题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;请你找出 nums 子集 按位或 可能得到的 最大值 &#xff0c;并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素&#xff08;或不删除&#xff09;得到&#xff0c;…...