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

AWS SDK for JS version3でクレデンシャルを取得する記述

$
0
0

概要

環境1 (ローカル環境)

  • Ubuntu20.04 on WSL2
  • AWS CLI v2設定済み

モジュールインストール

  • v2では aws-sdkモジュールに集約されていましたが、sdk v3では細かくモジュールが分けられているようです
    • 必要なモジュールのみを組み込むことでサイズ的にも実行(ロード)速度にも貢献する感じでしょうか
npm install @aws-sdk/credential-provider-node

コード

const{defaultProvider}=require('@aws-sdk/credential-provider-node');(async()=>{constcredential=await(defaultProvider())();console.log(credential);})();
  • デフォルト動作の場合は下記の順序で走査、最初に該当する有効なクレデンシャルを返すようです
  • 本番環境の場合はどの情報を採用するのかよく確認が必要ですね
    1. 環境変数 AWS_PROFILEで指定されたセクションを ~/.aws/credentialsから読み取る
    2. 環境変数 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYで指定された値
    3. ~/.aws/credentials の defaultセクション
    4. インスタンスメタデータ

実行結果

~/.aws/credentials の defaultセクション参照パターン
(値はマスクしています)

$ node credential.js
{
  accessKeyId: 'AKI*****************',
  secretAccessKey: '****************************************',
  sessionToken: undefined
}

環境変数 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを指定したパターン

$ AWS_ACCESS_KEY_ID=accesskey AWS_SECRET_ACCESS_KEY=secretkey node credential.js
{
  accessKeyId: 'accesskey',
  secretAccessKey: 'secretkey',
  sessionToken: undefined,
  expiration: undefined
}

環境2 (AWS Lambda環境)

Lambda環境へはモジュール @aws-sdk/credential-provider-nodeが含まれませんので、Layersとしてデプロイして確認しました

image.png

sdk v2の場合

  • 環境変数 AWS_PROFILEAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを指定した場合も同じ用な挙動になります
constaws=require('aws-sdk');console.log(aws.config.credentials.accessKeyId);console.log(aws.config.credentials.secretAccessKey);
$ node credentialv2.js
AKI*****************
****************************************

Viewing all articles
Browse latest Browse all 8957

Trending Articles