LoginSignup
0
1

More than 5 years have passed since last update.

ServerlessFrameworkで『自身のSTAGEが知りたい』時

Last updated at Posted at 2018-05-22

背景

ServerlessFrameworkでは「--stage Dev」といったようにして、ステージという概念でプロダクションと開発環境を分けたりします。

つまりAWS lambda内に
プロジェクト名-Prod-関数名
プロジェクト名-Dev-関数名
が沢山並んでいる状態です。

関数が単独で完結している場合は良いのすが、invokeで呼び出したい場合、
「ステージProdの時はProdの、あの関数を呼び出したい」「ステージDevの時はDevの関数を呼び出したい」というケースもあります。

ServerlessFrameworkはデプロイすると関数の『タグ』を自動的につけてくれます。
STAGEの値がそれです。

これが簡単に取得できると、invokeする側で「今、私のステージはDevだから、同じステージのこの関数を呼び出そう」という事ができます。

やり方

下記のようにすると「自身のステージ」を得ることができました。
必要な権限は lambda:GetFunction でした。

const lambda = new AWS.Lambda({ region: 'ap-northeast-1' });

module.exports.hoge = (event, context, callback) => {
  lambda.getFunction({ FunctionName: context.functionName }, (err, data) => {
   if (err) console.log(err, err.stack);
   else     console.log(`STAGE is ${data.Tags.STAGE}`);
  });
}

lambda.getFunctionについてはココ

context.functionNameについてはココを参考にしました

反省

context.functionName で自身の関数名が取得できているので、API叩くのではなく、文字列をゴニョゴニョした方が早そう。
プロジェクト名も入ってるしね。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1