Lambdaでaws cli configureを設定できるようにする
s3 syncを実行する際に max_concurrent_requests
を調整するとsyncのパフォーマンスが改善できる。
そこで、Lambdaで↓のように aws configure set
で設定値の更新をしようとしたところ、
import { execSync } from 'child_process'
exports.handler = () => {
execSync(`/opt/awscli/aws configure set s3.max_concurrent_requests 20`)
// s3 sync
}
configファイルの書き込みができないとのエラーが発生した。
"errorMessage": "Command failed: /opt/awscli/aws configure set s3.max_concurrent_requests 20
[Errno 30] Read-only file system: '/home/sbx_user'",
(Lambdaでaws cliを使う方法については以前の記事を参照)
Lambdaでは /tmp
ディレクトリのみ書き込みができる仕様となっている(最大512MB)。
また、aws cliは AWS_CONFIG_FILE
を設定することでconfigファイルの場所を変更できる。
ホームディレクトリの場所はオペレーティングシステムによって異なりますが、環境変数 %UserProfile% (Windows の場合) および $HOME またはチルド ~ (Unix ベースのシステムの場合) を使用して参照されます。
AWS_CONFIG_FILE 環境変数を別のローカルパスに設定することで、config ファイルの場所をデフォルト以外の場所に指定できます。
そこで、Lambdaの環境変数に↓を設定した。
AWS_CONFIG_FILE=/tmp/.aws/config
これでエラーなく aws configure set
で設定変更ができるようになった。