Amazon Linux 2 の Elastic Beanstalk インスタンスで環境変数へのアクセスを必要とするスクリプトを手動で実行する方法を教えてください。

最終更新日: 2020 年 8 月 20 日

Amazon Linux 2 の AWS Elastic Beanstalk インスタンスで環境変数へのアクセスを必要とするスクリプトを手動で実行したいと考えています。

簡単な説明

プラットフォームフックを使用して、Amazon Linux 2 プラットフォームで Elastic Beanstalk インスタンスの環境変数にアクセスする必要があるスクリプトを手動で実行できます。インスタンスのプロビジョニング中に環境インスタンスでカスタムコードを設定して実行するには、.ebextension 設定ファイルにファイルとコマンドを提供するのではなく、プラットフォームフックを使用するのがベストプラクティスです。

注: 以下の解決方法には、PHP、Python、Ruby、Amazon Corretto、Tomcat、Node.js など、複数のプラットフォームで使用できるスクリプトが含まれています。このスクリプトを使用すると、/opt/elasticbeanstalk/deployment/env ファイルで定義された環境変数をソースにすることができます。

解決方法

1.    アプリケーションソースバンドルで、. platform/hooks/postdeploy ディレクトリに 01_set_env.c onf というファイルを作成します。例:

~/workspace/my-app/
├── .platform
│   ├── hooks
│   │   ├── postdeploy
│   │   │   ├── 01_set_env.sh
|-- helloworld

2.    /opt/elasticbeanstalk/deployment/env ファイルをコピーし、644 のアクセス許可を設定する Bash スクリプトを作成して、インスタンスのすべてのユーザーがファイルにアクセスできるようにします。例:

.platform/hooks/postdeploy/01_set_env.sh
-----
#!/bin/bash

#Create a copy of the environment variable file
cp /opt/elasticbeanstalk/deployment/env /opt/elasticbeanstalk/deployment/custom_env_var

#Set permissions to the custom_env_var file so this file can be accessed by any user on the instance. You can restrict permissions as per your requirements.
chmod 644 /opt/elasticbeanstalk/deployment/custom_env_var

#Remove duplicate files upon deployment
rm -f /opt/elasticbeanstalk/deployment/*.bak
-----

重要: .platform/hooks/postdeploy/01_set_env.sh ファイルに対して chmod +x のアクセス許可を設定します。

3.    .platform フックファイルをデプロイします。

4.    ファイルを手動で取得しないようにするには、ユーザーの ~/.bash_profile に次のコードを追加します。

source <(sed -E -n 's/[^#]+/export &/ p' /opt/elasticbeanstalk/deployment/custom_env_var)

注: Amazon Linux 2 では、すべての環境変数は /opt/elasticbeanstalk/deployment/envという単一のファイルに一元化されています。このファイルは、Elastic Beanstalk のアプリケーションデプロイプロセスでのみ使用する必要があります。/opt/elasticbeanstalk/deployment/env で定義されている変数は、オペレーティングシステムレベルでは使用できません。このため、インスタンスで実行されている手動スクリプトを使用してこれらの変数にアクセスすると、「Permission Denied」エラーが発生します。/opt/elasticbeanstalk/deployment/env ファイルのアクセス許可は制限されており、root 以外のユーザー (ec2-userなど) が取得するのが難しい場合があります。例:

[root@ip-X-X-X-X deployment]# ls -latr /opt/elasticbeanstalk/deployment/env

-r-------- 1 root root 147 Jun 17 06:23 /opt/elasticbeanstalk/deployment/env

この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?