标签: aws-cli

aws cli:过滤条件返回所有正在运行的实例,而不是具有特定标签的实例

我希望能够找出正在运行并标记有特定值的 ec2 机器。

我使用了以下命令:

aws ec2 describe-instances --filter Name=tag:Name,Values=worker1 \
--filter Name=instance-state-name,Values=running
Run Code Online (Sandbox Code Playgroud)

它基本上返回 ec2 机器的所有正在运行的实例。

如何使 aws cli 将过滤器视为条件组合?即仅名为“worker1”的活动机器

amazon-web-services aws-cli

3
推荐指数
1
解决办法
1741
查看次数

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

我在创建的新实例上遇到了 EC2 API 工具超时的问题。

昨天我拍了一张服务器的图像,在该服务器上工具运行良好。我对其运行的软件和初始化脚本进行了一些更改,以支持我们的新部署系统。

今天,我为它设置了一个新的 Launch Configuration,并生成了一个新实例。我从原来的实例登录到这个实例,因为它只有一个私有 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
Run Code Online (Sandbox Code Playgroud)

我觉得这是一个配置问题,有什么办法可以让您了解我做错了什么?

澄清:

  • 两个实例具有相同的密钥对名称。
  • 两者具有相同的安全组。
  • 我遇到问题的服务器只能通过私有 IP 访问,而公共 DNS、公共 IP 和弹性 IP 为空白。

任何帮助都感激不尽。

amazon-ec2 amazon-vpc aws-cli

2
推荐指数
1
解决办法
7664
查看次数

AWS RDS CLI:CreateDBSnapshot 上的访问被拒绝

我想使用AWS RDS 命令行工具来创建数据库的快照。my-databasecreate-db-snapshot

我在IAM中创建了一个特殊的备份角色,其策略允许我描述、复制和创建快照。它看起来像这样(我用 x 替换了敏感 ID):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmtxxxxxxxxxxxxxx",
      "Effect": "Allow",
      "Action": [
        "rds:CopyDBSnapshot",
        "rds:CreateDBSnapshot",
        "rds:DescribeDBSnapshots",
        "rds:DescribeEventCategories",
        "rds:DescribeEvents"
      ],
      "Resource": [
        "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

配置 CLI 工具并aws configure输入该用户的密钥后,我尝试通过执行以下命令来制作快照:

aws rds create-db-snapshot \
    --db-snapshot-identifier "my-database-backup-$(date +%d-%m-%Y-%Hh%Mm)" \
    --db-instance-identifier "my-database"
Run Code Online (Sandbox Code Playgroud)

这会导致一条错误消息:

调用 CreateDBSnapshot 操作时发生客户端错误 (AccessDenied):用户:arn:aws:iam::xxxxxxxxxxxxxx:user/automated-tasks 无权对资源执行:rds:CreateDBSnapshot:arn:aws:rds:eu-west -1:xxxxxxxxxxxxxx:快照:我的数据库备份-24-11-2014-11h07m

我认为这很奇怪,因为它表示拒绝访问具有我为参数指定的名称的资源(--db-snapshot-identifier与参数相反)--db-instance-identifier

如果我有足够的权限来创建应用于实例的快照,那么我本身不应该具有该快照的创建权限吗?

无论如何,我尝试将策略中的资源更改为 RDS 中的所有内容:

"Resource": [
    "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]
Run Code Online (Sandbox Code Playgroud)

我希望这会起作用,因为现在我的角色对我帐户的 RDS ARN 内的所有内容都具有创建快照权限,但事实并非如此。

有谁知道为什么我的命令返回错误?

snapshot amazon-web-services amazon-rds amazon-iam aws-cli

2
推荐指数
1
解决办法
4814
查看次数

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

简而言之 - 操作系统 Amazon Linux 或 Ubuntu。一个 EC2 实例(或 OpsWorks 实例?)正在运行。每天启动第二个实例,使用最新的安全更新更新它,安装我的应用程序。关闭第一实例。每天重复...

AWS文档指出

默认情况下,AWS OpsWorks 会在设置过程中自动安装最新更新... 我们建议您... 创建并启动新实例以替换您当前的在线实例。然后删除当前实例。新实例将在安装过程中安装最新的一组安全补丁。

如何自动化这个过程?

我知道,我可以通过 CLI 启动一个微实例来管理这个过程,但我更喜欢使用一些 AWS 内置工具,这样我就可以获得失败通知,添加一些冗余(如果 CLI 实例失败),一切都会继续处理新的 CLI / AWS API 版本等。

我错过了一些优雅的方法吗?

更新:能够使用现有的弹性 IP 是首选。

amazon-ec2 amazon-web-services aws-cli opsworks

2
推荐指数
1
解决办法
2851
查看次数

如何获取 AWS 客户端令牌以与“aws ec2 run-instances”一起使用?

如此处所述https://aws.amazon.com/blogs/aws/new-amazon-ec2-feature-idempot-instance-creation/ AWS CLI 强制执行aws ec2 run-instances --cli-input-json命令的幂等性。不幸的是,没有关于如何生成客户端令牌的文档。

我确实发现结果ClientToken中有一个字段aws ec2 describe-instances,但是如果您尝试使用它,当然您仍然会收到以下错误:

An error occurred (IdempotentParameterMismatch) when calling the RunInstances operation: Arguments on this idempotent request are inconsistent with arguments used in previous request(s).
Run Code Online (Sandbox Code Playgroud)

如何获取用于使用的令牌--client-token

amazon-ec2 amazon-web-services aws-cli

2
推荐指数
1
解决办法
4391
查看次数

如何在 AWS 上跨 CloudWatch 日志组进行搜索?

我有许多 lambda 函数运行我的无服务器后端。某处出现异常,我需要从所有日志组中调出/搜索特定时间 \xe2\x80\x94\xc2\xa0 的所有日志,而不仅仅是单个日志组或单个流。

\n

有没有一种好方法可以搜索所有日志组和所有流?

\n

我已经尝试过控制台,但这坚持从日志组(对于 lambda,这些等同于函数)向下驱动并使用命令行,这也仅适用于每个日志组。

\n

理想情况下,我希望首先能够查看一天内所有函数执行的所有报告,这样我就可以查询以查看哪些函数失败或运行时间过长。

\n

有没有办法在所有日志中搜索我的所有功能?

\n

预先感谢 \xe2\x80\x94\xc2\xa0 如果您需要更多详细信息,请告诉我。

\n

麦克风

\n

amazon-web-services amazon-cloudwatch aws-cli amazon-lambda

2
推荐指数
1
解决办法
4502
查看次数

尝试初始化 AWS EB,收到“签名尚未当前错误”

我在我的本地机器上。我是一个开发人员,对操作一无所知。在命令行上运行后选择us-east-1我的区域后,我得到以下信息:eb init

ERROR: The current user does not have the correct permissions. 
Reason: Operation Denied. Signature not yet current: 
20150922T194753Z is still later than 20150922T194701Z (20150922T194201Z + 5 min.)
Run Code Online (Sandbox Code Playgroud)

我四处寻找答案,看来这是其他人在部署应用程序遇到的时区问题,他们通过同步已启动的 EC2 实例的时区解决了该问题。但是,我还没有部署到 EB,并且没有关联的 EC2 实例。我尝试使用将系统时钟和时区与 us-east-1 的时区对齐,sudo dpkg-reconfigure tzdata但错误仍然存​​在。

那么我该如何克服这个问题呢?

amazon-ec2 amazon-web-services elastic-beanstalk aws-cli

1
推荐指数
1
解决办法
4324
查看次数

随着时间的推移,上传到 S3 存储桶会变慢

我正在将大约 200,000 个文件(每个最大约 1MB)从 EC2 实例(均位于欧洲西部)上传到 S3 存储桶。

从使用 CloudWatch 监控 EC2(查看NetworkOut指标)来看,随着时间的推移,上传传输似乎有所下降:

在此处输入图片说明

我分几批上传文件,下载似乎是一致的,通常在四五个小时后(但有时发生得更快)。

这些文件使用 Python 脚本上传,其中:

  1. 从第三方服务器下载 .zip
  2. 从 .zip 中提取大约 25 个文件并对每个文件进行 gzip
  3. 将 .gzip 文件上传到存储桶

我尝试了两种上传 .gzip 文件的方法......

  • 依次使用 boto3: boto3.client("s3").upload_file(file.gz, bucket, file.gz)
  • 将 AWS CLI 作为子进程运行以一次上传 25 个 .gzip 文件

...但我看到每种方法都有相同的下降。

什么可能导致这种情况?或者我应该收集什么信息来调试它?

编辑

这是同一时期的图表,显示了BurstBalance指标(EC2 实例是 t2.small):

在此处输入图片说明

这是CPUCreditBalance

在此处输入图片说明

python amazon-web-services aws-cli

1
推荐指数
1
解决办法
1230
查看次数

将环境变量凭证用于 source_profile 和 AWS CLI

我有 2 个 AWS 账户,并使用 IAM 角色设置了跨账户身份验证。

我为第二个账户创建了一个名为 profile 的 AWS CLI,它使用 role_arn 并将我的默认配置文件指定为 source_profile。

对于我的默认配置文件,我将 KEY 和 SECRET 保留为环境变量,而不是 ~/.aws/credentials 文件中的静态字符串。

但是,当我切换到命名配置文件并查询 API 时,出现以下错误:

The source_profile "default" must specify either static credentials or an assume role configuration
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让我在 ~/.aws/credentials 中获得一个命名配置文件来引用我的环境变量凭据而不是静态凭据?

amazon-web-services aws-cli

1
推荐指数
1
解决办法
3808
查看次数

使用 aws clisync 包含和排除删除选项

aws s3 sync /WordProcessing/DOCUMENTS s3://mybigbucket --delete --include "*" --exclude ".DS_Store"
Run Code Online (Sandbox Code Playgroud)

如果 .DS_Store 以某种方式到达 AWS S3 mybigbucket(从之前的备份),则使用上述命令不会从目标中删除 .DS_Store 文件,即使我手动执行:

rm /WordProcessing/DOCUMENTS/.DS_Store
Run Code Online (Sandbox Code Playgroud)

在文件服务器上。

我是否缺少 aws s3 同步工作原理的逻辑?在我看来,如果 .DS_Store 已从文件服务器上的源中删除,则应该从 S3 存储桶上的目标中删除它。

如果我取消 --exclude 并再次运行该命令,当 .DS_Store 从文件服务器中删除时,它会从目标中删除它。这似乎不对。

我采取了错误的方法吗?我想要做的是每晚同步文件服务器,并让它不将数千个 .DS_Store 文件传输到 S3 存储桶。

amazon-s3 aws-cli

1
推荐指数
1
解决办法
5287
查看次数

如何使用“aws iam”显示 IAM 用户的角色?

如果我跑步$ aws iam get-user --user-name anthony,我会得到这样的结果

{
    "User": {
        "Path": "/",
        "UserName": "anthony",
        "UserId": "E2S4XZIL9NRNSBIDBI5U6",
        "Arn": "arn:aws:iam::123456:user/anthony",
        "CreateDate": "2015-04-03T01:22:11Z",
        "PasswordLastUsed": "2019-04-10T01:38:14Z"
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我想获取此登录名的列表role,我该如何做aws iam

amazon-web-services amazon-iam aws-cli

0
推荐指数
1
解决办法
8441
查看次数

AWS CLI ec2 运行实例失败并出现 --tag-specifications 解析错误

我指的是以下 AWS 文档,尝试使用 CLI(来自 Windows)来启动具有在启动时指定的标签的 EC2 实例:

https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_CLI

我遇到了一些问题,所以我决定尝试文档中指定的确切命令:

aws ec2 run-instances --image-id ami-abc12345 --count 1 --instance-type t2.micro --key-name MyKeyPair --subnet-id subnet-6e7f829e --tag-specifications 'ResourceType=instance,Tags=[{Key=webserver,Value=production}]' 'ResourceType=volume,Tags=[{Key=cost-center,Value=cc123}]'
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Error parsing parameter '--tag-specifications': Expected: '=', 
received: ''' for
 input:
'ResourceType=instance,Tags=[{Key=webserver,Value=production}]'
^
Run Code Online (Sandbox Code Playgroud)

那么,究竟如何指定运行实例的标签呢?

amazon-ec2 amazon-web-services aws-cli

0
推荐指数
1
解决办法
4456
查看次数