繁体   English   中英

AWS静态IP地址

[英]AWS static ip address

我正在使用AWS代码部署代理,并通过bitbucket插件将项目部署到服务器。

代码部署代理首先执行脚本文件,该脚本文件具有执行我的spring-boot项目的命令。

由于我有两个环境,一个开发而另一个生产。 我希望脚本根据环境(即两个不同的实例)来做不同的事情。

我的计划是获取映射的aws静态ip地址,并从中确定环境(生产或阶段)。

如何通过sh命令获取弹性ip地址。

已编辑

静态IP将起作用。

解决此问题的一种更自然的CodeDeploy方法是-设置2个CodeDeploy部署组,一个用于开发环境,另一个用于生产环境。 然后,在脚本中,可以使用CodeDeploy在部署期间设置的环境变量来了解要部署到的环境。

这是有关如何使用CodeDeploy环境变量的博客文章: https ://aws.amazon.com/blogs/devops/using-codedeploy-environment-variables/

您可以执行以下操作:

id=$( curl http://169.254.169.254/latest/meta-data/instance-id )
eip=$( aws ec2 describe-addresses --filter Name=instance-id,Values=${id} | aws ec2 describe-addresses | jq .Addresses[].PublicIp --raw-output )

上面的代码从元数据中获取instance-id ,然后使用aws cli从元数据中查找由ID过滤的弹性IP。 然后使用jq可以将该输出解析为您要查找的IP。

查询元数据服务器

eip=`curl -s 169.254.169.254/latest/meta-data/public-ipv4`
echo $eip

该解决方案与我最初提出的要求完全不符,但足以满足我的要求。

我只需要知道我所处的环境即可执行某些操作。 因此,我要做的是在一个独立的脚本文件中设置一个环境变量,在该脚本文件中设置了环境变量,该值是环境的值。 例如:在一个文件中说env-variables.sh export profile = stage

在必须根据环境执行命令的脚本文件中,我以这种方式访问​​它

 source /test/env-variables.sh
    echo current profile is $profile
    if [ $profile = stage ]
    then
        echo stage
    elif [ $profile = production ]
    then
        echo production
else
        echo failure
    fi

希望有人觉得有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM