我正在编写用于创建 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 映像没有名称,并且第二个命令的输出为空。
感谢您的帮助。
感谢您的回复,所以当我运行命令时没有 echo $ImportTaskId 见下文
aws ec2 create-tags --resource import-ami-XXXXXXXXXXXXX --tags Key=Name,Value='name_ami_test'
我得到空响应,并且名称未在 aws 控制台中分配,因此我将在将名称分配给 AMI ID 后与 AWS 支持/检查语法/检查而不是导入-ami-XXXXXXXXXXXXXXXX
这应该适合你:
# 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"
中的双引号是必要的。