amazon-web-services - aws 命令行界面 - aws ec2 等待 - 超出最大尝试次数

标签 amazon-web-services amazon-ec2 aws-cli

我正在编写 shell 脚本,女巫确实遵循:

  • 创建 EBS 卷的快照;
  • 根据此快照创建 AMI 镜像。

1)我使用以下命令来创建快照:
SNAPSHOT_ID=$(aws ec2 create-snapshot "${DRYRUN}"--volume-id "${ROOT_VOLUME_ID}"--description "${SNAPSHOT_DESCRIPTION}"--query 'SnapshotId')

2)我使用waiter来等待完成状态:
aws ec2 等待快照完成 --snapshot-ids "${SNAPSHOT_ID}"

当我使用 EBS 卷 8 GB 大小对其进行测试时,一切顺利。
当它是 40 GB 时,我有一个异常(exception):
Waiter SnapshotCompleted 失败:超出最大尝试次数

可能 40 GB 需要更多时间,然后 8 GB 需要更多时间,只需等待。

AWS 文档 ( http://docs.aws.amazon.com/cli/latest/reference/ec2/wait/snapshot-completed.html ) 没有任何超时或尝试数量选项。

也许你们中的一些人也遇到过同样的问题?

最佳答案

所以,最后我用以下方法解决了这个问题:

  1. 创建快照
  2. 使用循环检查命令的退出状态 aws ec2 wait snapshot-completed
  3. 如果退出状态不是0,则打印当前状态、进度并再次运行 waiter。

# Create snapshot
SNAPSHOT_DESCRIPTION="Snapshot of Primary frontend instance $(date +%Y-%m-%d)"
SNAPSHOT_ID=$(aws ec2 create-snapshot "${DRYRUN}" --volume-id "${ROOT_VOLUME_ID}" --description "${SNAPSHOT_DESCRIPTION}" --query 'SnapshotId')

while [ "${exit_status}" != "0" ]
do
    SNAPSHOT_STATE="$(aws ec2 describe-snapshots --filters Name=snapshot-id,Values=${SNAPSHOT_ID} --query 'Snapshots[0].State')"
    SNAPSHOT_PROGRESS="$(aws ec2 describe-snapshots --filters Name=snapshot-id,Values=${SNAPSHOT_ID} --query 'Snapshots[0].Progress')"
    echo "### Snapshot id ${SNAPSHOT_ID} creation: state is ${SNAPSHOT_STATE}, ${SNAPSHOT_PROGRESS}%..."

    aws ec2 wait snapshot-completed --snapshot-ids "${SNAPSHOT_ID}"
    exit_status="$?"

done

如果您有可以改进的地方,请与我们分享。

关于amazon-web-services - aws 命令行界面 - aws ec2 等待 - 超出最大尝试次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977532/

相关文章:

django - 如何将 Django 应用程序部署到 (AWS) 域名?

amazon-web-services - Amazon SES 535 身份验证凭据尝试轮换访问 key 无效

amazon-web-services - 如何获取本地ec2实例的container-instance-id

aws-lambda - 无法使用 CLI 设置 AWS Cognito 触发器

amazon-web-services - t2.micro 实例未显示在 Elastic Beanstalk 中

amazon-web-services - 是否可以在桥接模式下从 ECS 上的主机实例获取 IP?

amazon-web-services - Dynamo AWS 表不允许我取消选中 DynamoDB JSON 以查看纯 JSON 中的对象

amazon-web-services - 我可以下载 AWS Volume 的快照并将其挂载到本地计算机上并从中启动吗?

amazon-web-services - 即使终止后,CodeDeploy 实例也会重新初始化

amazon-web-services - AWS 使用 Bamboo 删除 ECS 服务 - 该服务无法停止