NodeJSを使用してクラウドプロジェクトに取り組んでいます。 EC2インスタンスを実行する必要があるので、npm install aws-sdk
を実行しました。
アプリケーションを実行する前に資格情報を追加する必要があると思いますか?
フォルダを作成できなかったため、フォルダを作成し、credentials.txt
ファイルに認証情報を追加しました。
C:\Users\jessig\aws
私はこのエラーを受け取り続けます:
{ [TimeoutError: Missing credentials in config]
message: 'Missing credentials in config',
code: 'CredentialsError',
環境変数でアクセスキーとシークレットキーを設定しようとしましたが、同じエラーが発生します。
\.aws\credentials
(Windows)フォルダーが見つからない理由がわかりません。
誰か助けてくれますか?
フレデリックが言及したように、ハードコーディングはAWS推奨の標準ではなく、これは本番環境で実行したいことではありません。ただし、テストと学習の目的では、これが最も簡単な方法です。
リクエストはAWS EC2に固有のものだったので、開始するための小さな例を次に示します。
Node.jsで使用できるすべてのメソッドのリストを取得するには、これを参照してください AWSドキュメント 。
var AWS = require('aws-sdk');
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "accessKey";
AWS.config.secretAccessKey = "secretKey";
AWS.config.region = "us-east-1";
var ec2 = new AWS.EC2();
var params = {
InstanceIds: [ /* required */
'i-4387dgkms3',
/* more items */
],
Force: true
};
ec2.stopInstances(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
私は次のプログラム的な方法を、人気のnpm構成モジュールと組み合わせて使用しました(これにより、開発と本番などで異なる構成ファイルを使用できます)。
const config = require('config');
const AWS = require('aws-sdk');
const accessKeyId = config.get('AWS.accessKeyId');
const secretAccessKey = config.get('AWS.secretAccessKey');
const region = config.get('AWS.region');
AWS.config.update(
{
accessKeyId,
secretAccessKey,
region
}
);
そしてjson設定ファイル、例えばdevelopment.jsonは次のようになります。
{
"AWS": {
"accessKeyId": "TODO",
"secretAccessKey": "TODO",
"region": "TODO"
}
}
ノードjsで動作するようにSDKを構成するための 複数の方法 があります。
資格情報をロードするにはいくつかの方法があります。ここに、推奨順に示します。
- Amazon EC2のIAMロールからロードされます(EC2で実行されている場合)、
- 共有認証情報ファイル(〜/ .aws/credentials)から読み込まれ、
- 環境変数から読み込まれ、
- ディスク上のJSONファイルから読み込まれ、
- アプリケーションにハードコーディング
ハードコードされたものはお勧めしませんが。
共有資格情報ファイルを使用する場合、Windowsでは次のようになります。
C:\Users\jessig\.aws\credentials
(.
(awsの前)。ファイルは次のようになります
[default]
aws_access_key_id = your_access_key
aws_secret_access_key = your_secret_key