Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8892

Node.jsでAWSのパラメータストアから値を取得する

$
0
0

はじめに

シークレット系の情報をAWSのパラメータストアに格納し,それをNode.jsで呼び出してみました。
この記事はその際の備忘録になります。
誤っている箇所や修正したほうがいい箇所などありましたらコメントいただけますと幸いです。

AWSのパラメータストアとは

AWS System Managerの機能の一つ。
パスワードなどのシークレット系の情報をセキュアに保存することができます。

公式ページ : https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-parameter-store.html

必要なモジュールのインストール

AWS SDK for JavaScriptをインストールします。

$npm install aws-sdk

AWS SDK for JavaScript とは,AWSのサービスをjavascriptで使用するためのAPIになります。
今回はこのAPIを使用して,パラメータストアから値を取得します。

AWSの認証情報の設定

Node.jsでAWSのサービスを利用するに当たって,認証情報を設定する必要があります。
認証情報の設定方法はいくつかありますが,今回は~/.aws/credentialsから読み取る方法を使用したいと思います。

今回 ~/.aws/credentialsには,defaultプロファイルとは別に,privateアカウントのプロファイルも記述しておきます。

~/.aws/credentials
[default]
aws_access_key_id = <ACCESS_KEY_ID>
aws_secret_access_key = <SECRET_ACCESS_KEY>

[private]
aws_access_key_id = <PRIVATE_ACCOUNT_ACCESS_KEY_ID>
aws_secret_access_key = <PRIVATE_ACCOUNT_SECRET_ACCESS_KEY>

また,~/.aws/configファイルには,regionを記述しておきます。

~/.aws/config
[default]
output = json
region = ap-northeast-1

[profile private]
output = json
region = ap-northeast-1

AWSで新規パラメータを作成

公式ドキュメントを参考に,新規パラメータを作成します。
今回は,~/.aws/credentials~/.aws/configにprivateというプロファイル名で記述したAWSアカウントのパラメータストアに,sampleというパラメータ名で 'sample' という文字列を保存しました。

実行ファイル作成

上記で作成したsampleというパラメータを取得します。

実行ファイルの完成形

sample.js
// aws-sdk をロードする前に,環境変数をセットする// ~/.aws/config の情報を参照できるようにするprocess.env.AWS_SDK_LOAD_CONFIG=true;// 使用するprofileを指定するprocess.env.AWS_PROFILE='private';// 環境変数セット完了// aws-sdk モジュールを読み込むconstAWS=require("aws-sdk");// 新規 AWS.SSM class を作成constssm=newAWS.SSM();// 'sample' という名前のパラメータを取得constparams={Name:'sample',WithDecryption:true};ssm.getParameter(params,(err,data)=>{if(err){console.log(err);}else{console.log(data);}});

下記で各処理について説明していきます。

環境変数の設定

sample.js(一部)
// aws-sdk をロードする前に,環境変数をセットする// ~/.aws/config の情報を参照できるようにするprocess.env.AWS_SDK_LOAD_CONFIG=true;// 使用するprofileを指定するprocess.env.AWS_PROFILE='private';// 環境変数セット完了// aws-sdk モジュールを読み込むconstAWS=require("aws-sdk");

aws-sdkモジュールを読み込む前に,環境変数をセットします。
そうすることで,セットした環境変数の設定を元に aws-sdkモジュールの読み込みが行われます。

セットする環境変数

  • AWS_SDK_LOAD_CONFIG : ~/.aws/configに記述された設定を参照できるようにします。(参考
  • AWS_PROFILE : 使用するprofileを指定します。(参考

新規 AWS.SSM クラスを作成

sample.js(一部)
// 新規 AWS.SSM class を作成constssm=newAWS.SSM();

AWS.SSM クラスは,Node.js内で AWS System Manager の機能を利用するためのクラスになります。(参考)

パラメータを取得

sample.js(一部)
// 'sample' という名前のパラメータを取得constparams={Name:'sample',WithDecryption:true// パラメータの値が暗号化されていた場合は復号};ssm.getParameter(params,(err,data)=>{if(err){console.log(err);}else{console.log(data);}});

AWS.SSM クラスに用意されている getParameterメソッドを使用して,パラメータストアから値を取得します。(参考

paramsに設定できるオプション

  • Name : パラメータ名
  • WithDecryption : パラメータの値が暗号化されていた場合に復号するかどうかを指定(パラメータの値が文字列または文字列リストの場合は,このオプションは無視されます)

実行

$node sample.js
{
  Parameter: {
    Name: 'sample',
    Type: 'String',
    Value: 'sample',
    Version: 1,
    LastModifiedDate: 2021-03-23T07:45:35.557Z,
    ARN: 'arn:aws:ssm:ap-northeast-1:xxxxxxxxxxxx:parameter/sample',
    DataType: 'text'
  }
}

参考

AWS 公式

その他


Viewing all articles
Browse latest Browse all 8892

Trending Articles