S3 バケットに書き込む関数があるとします。したがって、バケット名は明らかに「変数」であり、関数にハードコードすることはできません (たとえば、dev と prod で異なるバケットである可能性があります)。
ここで、関数がバケットにアクセスできるようにするには、少なくとも 2 つの場所でバケット名を使用する必要があります。
- 関数の IAM ポリシー (バケットへのアクセスを許可する)。
- 関数自体で。
#1 では、変数を使用して、で定義された IAM ポリシー内の変数を参照できますs-module
(または、v0.4 で呼び出されたものは何でも :)。
#2 では、env var を使用できます。その値は、実行時に関数コードでアクセスできます。
sls env set
しかし、変数を 2 回 (ファイルで 1 回とファイルで 1回) 定義する必要はありませんs-variables
。それはあまりDRYではありません。ただし、envars を定義するときに変数を参照する方法、またはその逆の方法がわかりません。
バケット名を 1 か所だけで定義するにはどうすればよいですか?