如何使用 shell 脚本自动执行 aws cli 命令

如何使用 shell 脚本自动执行 aws cli 命令

我想知道是否有人可以帮助我制作一个 shell 脚本来自动化 aws cli 进程:

1.创建安全组

2.设置角色到这个安全组端口22和端口80

3.使用此安全组创建一个 ec2 实例。

我已经做了一些事情,但还没有完全完成。

addSG=$ aws ec2 create-security-group --group-name plamenSG --description "Security group for SSH access" --vpc-id vpc-026278d069c2b6ffa

addRuleSG_22p=$ aws ec2 authorize-security-group-ingress --group-id sg-0032ab410f260ce27 --protocol tcp --port 22 --cidr 87.116.78.97/32

addRuleSG_80p=$ aws ec2 authorize-security-group-ingress --group-id sg-0032ab410f260ce27 --protocol tcp --port 80 --cidr 0.0.0.0/0

runEC2=$ aws ec2 run-instances --image-id ami-0c3083e7f17ee7441 --count 1 --instance-type t2.micro \
--key-name MyKeyPair --subnet-id subnet-05499bb79299f5868 --security-group-ids sg-0032ab410f260ce27 \
--user-data file://my_script.txt

从上面的代码中您可以看出,我们首先创建 SG,这通常是第一步。问题是,当我创建安全组时,我从命令中获得了安全组 ID 作为输出,我需要在行代码中用新 ID 替换旧安全组 ID。

关于此行代码 - --group-id sg-0032ab410f260ce27

我创建了一个变量,该变量获取第一个命令的输出,并将它代替 ID,如下所示:

addRuleSG_80p=$ aws ec2 authorize-security-group-ingress --group-id sg-$var --protocol tcp --port 80 --cidr 0.0.0.0/0

但我收到以下错误: 调用 AuthorizeSecurityGroupIngress 操作时发生错误 (InvalidGroupId.Malformed):安全组 ID“sg-”格式错误

任何想法?

答案1

awscli 的默认输出格式是 json。因此,您的aws ec2 create-security-group命令将产生类似以下内容的输出:

{
    "GroupId": "sg-903004f8"
}

您可以做的是使用类似工具来解析该 json jq

MYSG=$(aws ec2 create-security-group --group-name plamenSG \
--description "Security group for SSH access" \
--vpc-id vpc-026278d069c2b6ffa | jq -r '.GroupId')

希望这可以帮助。

相关内容