bugfix> amazon-web-services > 投稿

AWSコードデプロイエージェントを使用し、bitbucketプラグインを介してプロジェクトをサーバーにデプロイしています。

コード展開エージェントは、最初に、スプリングブートプロジェクトを実行するコマンドを含むスクリプトファイルを実行します。

開発環境と本番環境の2つの環境があるためです。環境、つまり2つの異なるインスタンスに基づいて、スクリプトが異なる方法で処理するようにします。

私の計画は、マップされているAWS静的IPアドレスをフェッチし、そこから環境を決定することです (制作またはステージ)。

shコマンドを使用してエラスティックIPアドレスを取得する方法。

編集済み

回答 4 件
  • 静的IPは機能します。

    これを解決するCodeDeployのより自然な方法は次のとおりです。2つのCodeDeployデプロイメントグループを設定します。1つは開発環境用、もう1つは本番環境用です。次に、スクリプトで、デプロイ時にCodeDeployが設定する環境変数を使用して、デプロイ先のenvを把握できます。

    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で エクスポートプロファイル=ステージ

    環境に基づいてコマンドを実行する必要があるスクリプトファイルで、この方法でアクセスします

    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
    
    

    誰かがそれが便利だと思うことを願っています

あなたの答え