Articles of aws cli

aws ec2带引号的创build标签

如果值包含一个引号,我似乎无法在资源上创build标签。 例如: aws ec2 create-tags –resource $someResource –tags 'Key=mykey,Value={"json":"value"}' 失败: Error parsing parameter '–tags': should be: Key value pairs, with multiple values separated by a space. 但是如果我运行它没有价值的报价,它成功: aws ec2 create-tags –resource $someResource –tags 'Key=mykey,Value={json:value}' 我试过几种不同的引用/转义组合,但我似乎无法从CLI设置JSON值。 为了完整起见,我昨天更新了我的工具: aws –version aws-cli/1.3.6 Python/2.7.5 Darwin/13.1.0 谢谢!

获取终止的EC2实例的Ids

我正在尝试创build一个关于我们的EC2实例使用率和利用率的报告。 我想要检查过去X天内在我的环境中运行或已经运行的所有实例。 作为报告的一部分,我想包括在规模组扩展期间创build的实例,但随后在组规模缩小时终止。 使用一个简单的Python脚本与boto3我可以得到一个地区的实例列表: session = Session(aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, region_name=self.name) ec2 = session.resource('ec2') cloudwatch = session.resource('cloudwatch') 通过列出这些实例,使用以下命令,在几个小时之后我看不到终止的实例(可能是在仪表板中停止看到它们的同时): ec2.instances.all() 使用cloudwatch,当我使用下面的命令时,我看到了终止实例的度量标准: metric = cloudwatch.Metric('AWS/EC2', 'CPUUtilization') result = metric.get_statistics( Dimensions=[{'Name': 'InstanceId', 'Value': instanceId}], StartTime=timeRange.start, EndTime=timeRange.end, Period=300, Statistics=['Average'], ) # This returns a complete list of data points for the instance was live 这意味着对于已终止的实例,度量标准确实存在,但是您必须具有这些实例的标识才能检索它们。 有没有办法检索终止的实例id?

如何通过在两个实例之间切换来自动更新EC2 Linux实例而不停机?

简而言之 – 操作系统亚马逊Linux或Ubuntu。 一个EC2实例(或OpsWorks实例?)正在运行。 每天一次启动第二个实例,使用最新的安全更新进行更新,安装我的应用程序。 closures第一个实例。 重复每一天… AWS 文档指出 : 默认情况下,AWS OpsWorks会在安装过程中自动安装最新更新…我们build议您…创build并启动新实例来replace当前的联机实例。 然后删除当前的实例。 新实例将在安装过程中安装最新的一组安全修补程序。 如何自动化这个过程? 我知道,我可以通过CLI启动一个微型实例来pipe理这个进程,但是我更喜欢使用一些AWS内置工具,这样我就可以收到失败的通知,添加一些冗余(如果CLI实例失败),一切都会继续在新的CLI / AWS API版本上工作 我错过了一些优雅的方法? 更新:能够使用现有的弹性IP是首选。

在其中一个实例上使用EC2命令行工具的问题

我在EC2 API工具上遇到了一些问题,在我创build的新实例上超时。 昨天我拍了一个服务器的图片,工具工作正常。 我对它运行的软件和init脚本进行了一些更改,我需要这些脚本来支持我们的新部署系统。 今天,我为它build立了一个新的启动configuration,并产生了一个新的实例。 我从原始login到这个实例,因为它只有一个私有的IP。 现在,为了部署的目的,我需要能够访问具有特定标签的快照,这在原始实例上可以正常工作,但是在新标签上超时: Unknown problem connecting to host: 'https://ec2.eu-west-1.amazonaws.com' Unable to execute HTTP request: Connect to ec2.eu-west-1.amazonaws.com:443 timed out 我觉得这是一个configuration问题,有没有什么方法可以让我明白我做错了什么? 澄清: 两个实例具有相同的密钥对名称。 两者都有相同的安全组。 我遇到问题的服务器只能通过私有IP访问,公有DNS,公有IP和弹性IP为空。 任何帮助都感激不尽。

为什么我无法在Bash中捕获AWS EC2 CLI输出?

我试图在Bash脚本命令中捕获aws ec2 delete-snapshot的输出,但是我无法获取任何东西来捕获输出。 我试过result=$(command) , result=`command` result=$(command) result=`command`等,但是当我尝试echo $result没有什么。 这里是一些输出示例。 root@host:~# aws ec2 delete-snapshot –snapshot-id vid –output json>test A client error (InvalidParameterValue) occurred when calling the DeleteSnapshot operation: Value (vid) for parameter snapshotId is invalid. Expected: 'snap-…'. root@host:~# aws ec2 delete-snapshot –snapshot-id vid>test A client error (InvalidParameterValue) occurred when calling the DeleteSnapshot operation: Value (vid) […]

使用s3api获取对象的S3恢复在aws中国地区不起作用

我已经在我的aws china实例中设置了一个每日备份脚本,将我需要的file upload到s3存储桶。 我有一个恢复脚本,它使用s3api将对象恢复到实例。 用于获取文件的命令是aws s3api get-object,但是一旦运行该命令,就会出现以下错误。 调用GetObject操作时发生客户端错误(MethodNotAllowed):指定的方法不允许针对此资源。 当我使用相同的命令恢复AWS US East环境中的文件时,我可以恢复该文件,但在中国环境中不能这样做。 我使用了一个类似的命令aws s3api list-objects列出了我的桶中的对象。 这是在美国以及中国的环境下工作。 我很困惑,为什么我可以列出我的对象,但不能使用get操作。

如何为不同账户执行aws ec2 describe-instances

假设我们有两个AWS帐户:帐户A,帐户B和帐户A上运行的EC2实例。 aws ec2 describe-instances对于实例自己的帐户按预期工作,没有带有实例angular色的~/.aws/credentials文件。 我的目标是从这个实例运行aws ec2 describe-instances到Account-B。 以下命令可用于输出凭据: $ aws sts assume-role –role-arn arn:aws:iam::012345678901:role/accountb-role –role-session-name test 但是,这并不是: $ aws ec2 describe-instances –profile AccountB 'aws_access_key_id' 〜/ .aws /configuration [default] region = us-east-1 [profile AccountB] role_arn = arn:aws:iam::012345678901:role/accountb-role source_profile = default 正如我所提到的, ~/.aws/credentials不存在,因为实例使用IAM的实例angular色。 accountb-role信任关系策略 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, […]

AWS-CLI – 即使存在,也找不到我的configuration

我使用以下命令安装了Amazon命令行工具(AWS-CLI): pip install awscli 它成功安装。 然后我在这个位置创build一个文件: /opt/aws/aws_cred.txt [default] aws_access_key_id = XYZ aws_secret_access_key = XYZ region = XYZ 然后我运行这个命令: export AWS_CONFIG_FILE=”/opt/aws/aws_cred.txt” 然后当我尝试运行这个命令时得到这个: aws ec2 describe-regions botocore.exceptions.ConfigNotFound:找不到指定的configuration文件(“/opt/aws/aws_cred.txt”)。 我还能做什么? 它是否需要可执行,由某个用户拥有,什么? 该文件是肯定存在,但它无法find它。

如何为VPC CloudWatch日志设置IAMangular色权限?

我试图让aws启动我的日志服务,并且我有我的日志stream和已经添加的日志组。 当我到达VPC仪表板时,我感兴趣的Flow Log的status如下: Access Error. The IAM role for your flow logs does not have sufficient permissions to send logs to the CloudWatch log group. 但是,当我查看与此Flow日志关联的IAMangular色时,我发现我的权限与此处指定的定制策略完全相同(在该链接中,search“在策略文档”字段中查找策略I'我正在谈论)。 有什么可以阻止我的IAMangular色现在访问日志? 日志stream是完全空白的。 谢谢。

是否有命令列出导致短输出的AWS实例?

我设置了AWS CLI,可以使用aws ec2 describe-instances获取返回的json对象,该对象描述了我的实例的所有已知详细信息。 有一个简单的方法来得到一个简短的列表,如实例名称和实例ID? 我想能够在命令行上使用我的实例,但是要获取实例ID(像start-instances所要求的那样的命令),我必须滚动浏览所有输出。