将 AWS CLI 命令的输出分配给第二个 AWS CLI 命令

问题描述 投票:0回答:2

我正在编写用于创建 AWS AMI 映像的自动化任务,目标是从

aws import-image
获取输出(.ova 到 ami 转换)并在第二个命令中添加名称:

importaskid=$(aws ec2 import-image --disk-containers  Format=ova,UserBucket="{S3Bucket=acp17,S3Key=XXXXX.ova}" | jq -r '.ImportTaskId')

aws ec2 create-tags --resources echo $importaskid --tags 'Key=Name, Value=acp_ami_test'

我能够

$importaskid
并查看所需的输出,但是当使用
aws ec2 create-tags
时,创建的 AMI 映像没有名称,并且第二个命令的输出为空。

感谢您的帮助。

bash amazon-web-services aws-cli
2个回答
0
投票

感谢您的回复,所以当我运行命令时没有 echo $ImportTaskId 见下文

aws ec2 create-tags --resource import-ami-XXXXXXXXXXXXX --tags Key=Name,Value='name_ami_test'

我得到空响应,并且名称未在 aws 控制台中分配,因此我将在将名称分配给 AMI ID 后与 AWS 支持/检查语法/检查而不是导入-ami-XXXXXXXXXXXXXXXX


0
投票

这应该适合你:

# set bash variable "importaskid":
importaskid=$(aws ec2 import-image --disk-containers Format=ova,UserBucket="{S3Bucket=acp17,S3Key=XXXXX.ova}" | jq -r '.ImportTaskId')

# Verify that importaskid is set correctly
echo $importaskid

# Now use it:
aws ec2 create-tags --resources "$importaskid" --tags 'Key=Name, Value=acp_ami_test'

此处讨论用于将命令的输出分配给变量的“$()”语法:https://www.cyberciti.biz/faq/unix-linux-bsd-appleosx-bash-assign-variable-command -输出/

如果“$importaskid”的值恰好有空格,则

"$importaskid"
中的双引号是必要的。

© www.soinside.com 2019 - 2024. All rights reserved.