bash - 在服务器上创建 EBS 快照的问题(Linux EC2 实例)
问题描述
我正在处理需要在服务器上运行脚本的任务,该脚本将获取实例 ID,创建快照并运行yum update -y
命令并重新启动服务器。
#!/bin/bash
set -eu
# Set Vars
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
export REGION=$(curl --silent http://169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/[a-z]$//')
export INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
echo $AWS_ACCOUNT_ID
echo $REGION
# Fetch VolumeId
volumeid=$(aws ec2 describe-instances --region $REGION --instance-id "$INSTANCE_ID" --filters Name=instance-state-name,Values=running --query "Reservations[*].Instances[].[BlockDeviceMappings[*].{VolumeName:Ebs.VolumeId}]" --output text)
echo $INSTANCE_ID
echo $volumeid
# Create snapshot
aws ec2 create-snapshot --region $REGION --volume-id $volumeid --description "Test-Snapshot-$INSTANCE_ID"
read -p "waiting a while to complete creation of EBS snapshot" -t 100
echo -e "\x1B[01;36m Snapshot has been created \x1B[0m"
我可以获取实例 ID,但是当我尝试从实例 ID 创建快照 ID 时,出现以下错误:
错误
us-east-1
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
非常感谢您的支持。
解决方案
您的实例以及您的脚本缺少运行命令的ec2:DescribeInstances
权限。aws ec2 describe-instances
您应该将该权限附加到分配给实例的实例角色(如果尚未分配权限,则创建一个具有附加权限的新角色)。
推荐阅读
- sql - Trying to get Start Time and End Time of a meeting in a Table
- jupyter-notebook - Interact.jl 无法在 Jupyter notebook + Julia 中创建小部件
- c++ - 确定“从文件输入”问题的后续步骤
- python - TypeError:需要一个类似字节的对象,而不是'str'我如何从str转到字节
- sql - 识别userId是否在sql中的字符串末尾包含数字
- javascript - REACT NATIVE - 使用自定义组件在应用屏幕上触发模式
- python - 我应该如何绘制 XYZ 数据点以在 python 中创建 RGB 深度图像
- reactjs - 如果导航到新路径,则更改 React 状态
- java - Android/Java 应用程序 - 如何正确调用片段中的活动函数?
- input - Snakemake:{input:q} 不返回带引号的输入