shell - 通过 Shell 脚本创建 Route53 记录集

标签 shell amazon-web-services aws-cli amazon-route53 recordset

作为我的 shell 脚本的一部分,我尝试在 AWS Route53 中创建记录集。但是,在我的 shell 脚本中使用 aws cli 中的变量来创建这些记录集时,我在 shell 脚本中导出的变量不会被传递到 aws cli 命令

AWS 提供的 AWS CLI 命令:

$ aws route53 change-resource-record-sets --hosted-zone-id 1234567890ABC \
  --change-batch file:///path/to/record.json

为简单起见,我不想在我的计算机上创建单独的 json 文件,我希望在 shell 脚本中包含我的所有命令和变量。
#!/bin/bash

export TARGET_ENVIRONMENT=uat 
export BASE_ENVIRONMENT_DNS=abcd-External-9982627718-1916763929.us-west-1.elb.amazonaws.com

# Creates route 53 records based on env name

aws route53 change-resource-record-sets --hosted-zone-id 1234567890ABC  
--change-batch '{ "Comment": "Testing creating a record set", 
"Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": 
"$(TARGET_ENVIRONMENT).company.com", "Type": "CNAME", "TTL": 
120, "ResourceRecords": [ { "Value": "$(BASE_ENVIRONMENT_DNS)" } ] } } ] }'

最后一条命令是在 AWS Route53 上创建一个记录集,如下所示:
$(TARGET_ENVIRONMENT).company.com

使用 CNAME 作为
$(BASE_ENVIRONMENT_DNS)

NOT 真的是我想要的,即:
uat.company.com

使用 CNAME:
abcd-External-9982627718-1916763929.us-west-1.elb.amazonaws.com

如何将环境变量传递到脚本中的 aws cli 命令中?

任何帮助将不胜感激。

谢谢!

最佳答案

变量不会在单引号内展开。
如果在变量扩展之前关闭单引号,然后立即再次打开它们,应该会产生预期的效果。您可能需要也可能不需要将变量用双引号括起来以进行扩展。

#!/bin/bash

ENV=uat 
DNS=abcd-External-9982627718-1916763929.us-west-1.elb.amazonaws.com

# Creates route 53 records based on env name

aws route53 change-resource-record-sets \
  --hosted-zone-id 1234567890ABC \
  --change-batch '
  {
    "Comment": "Testing creating a record set"
    ,"Changes": [{
      "Action"              : "CREATE"
      ,"ResourceRecordSet"  : {
        "Name"              : "'" $ENV "'.company.com"
        ,"Type"             : "CNAME"
        ,"TTL"              : 120
        ,"ResourceRecords"  : [{
            "Value"         : "'" $DNS "'"
        }]
      }
    }]
  }
  '

关于shell - 通过 Shell 脚本创建 Route53 记录集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228500/

相关文章:

amazon-web-services - 如何将 AWS Amplify 控制台中的现有应用程序与 AWS Amplify CLI 连接?

amazon-web-services - 在 Amazon SWF 中,我可以滥用决策任务来实际执行工作吗

bash - 重复安全组的 ba​​sh 脚本中 AWS CLI 的错误处理

amazon-web-services - 如何在 Terraform 中为 aws-cli 准备渲染的 JSON?

git - __git_ps1 显示错误的分支

linux - 为什么在ubuntu14.04中删除后又出现该目录

bash - 递归删除特定图像文件的 Shell 脚本

amazon-web-services - 如何从任何亚马逊产品网址获取 ItemID

amazon-dynamodb - 具有选择计数且不分页的 Boto3 DynamoDb 查询

shell - 在不包含字符串的文件中查找行并在其开头添加文本