首页 > 解决方案 > 在服务器上创建 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.

非常感谢您的支持。

标签: bashamazon-web-servicesamazon-ec2

解决方案


您的实例以及您的脚本缺少运行命令的ec2:DescribeInstances权限。aws ec2 describe-instances

您应该将该权限附加到分配给实例的实例角色(如果尚未分配权限,则创建一个具有附加权限的新角色)。


推荐阅读