よかろうもん!スマートフォン用の表示で見るよかろうもん!アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログこの広告は、90日以上更新していないブログに表示しています。2014-10-27OpsWorksで機能追加された環境変数を試してみて気づいた注意すべきことAWS2014年8月のアップデートでOpsWorksのApps層の設定項目に環境変数が追加されました。Variablesということで、新しい環境を整備する際にこの機能を試してみたところ、想定と異なる動きをしていたので、その挙動についてかんたんに解説しようと思います。HerokuなどのPaaSでは環境変数をセットすると、cron実行時などでも環境変数を参照できます。Layerの環境変数機能では、2014年10月時点ではそれができません。いうのも、WebServerに環境変数がセットされ、それがアプリケーションに伝わる仕組みだからです。WebサーバとしてApache+Passengerを利用している場合は、Apacheの設定ファイルにSetEnvが追記されそちらがアプリケーションに伝わります。Nginx+Unicornの場合も同じで、下記のようにUnicornの設定ファイルに追記され、そちらRailsアプリケーションに渡されます。Hookなどで環境変数を参照したいときやCron実行時に環境変数を参照したいときなどに参照できないという不都合が生じます。consoleやrake実行時にもセットされるためそれが当たり前だ思ってしまいますが、OpsWorksの現仕様ではそうなっていないので注意が必要です。OpsWorksのインスタンスにログインしてdeployユーザに昇格してみてexportコマンドを実行するとわかりますが、OpsWorks側でセットした環境変数を参照することはできません。bashで接続してexportを実行するとユーザ環境変数にセットさていることがわかります。Variablesをサポートしたと書いてあるので、Application層=Webサーバの環境変数を利用した仕組み、と読み取れはしますね・・・。hook実行時にも参照できるようになっていたので、その点が誤解を招いた結果になってしまったんですね。Key)をOpsWorksの世界に閉じ込めたいというところでしたので、いまいち利用シーンがフィットしないということになってしまいました。AWSのセキュアな情報を同じServicerの機能(OpsWorks)に閉じ込めることは、セキュリティ的に見ても価値があると思いますので、ぜひこの点は改善してもらえたらと思います。いうと、Configureイベント発動時にdeplyユーザの環境変数にまでセットしてもらえると大変助かります。cron実行時にも参照できますし。セキュリティとの兼ね合いも検討しないといけないというのはわかりますが。いうことで、みなさんもOpsWorksの新機能である環境変数を試される場合は、この点を考慮しておくとスムーズに検証できるかと思います。これからのOpsWorksの発展にも期待していますので、AWSのエンジニアの方々、よろしくお願いします。Meid:interuSonicGardenのサービスインフラ全般の運用/管理から、SKIP2やMessageLeaf等のアプリケーション開発まで手がけるハイブリッドエンジニア。月別アーカイブはてなブログをはじめよう!interuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。