Node.jsからAWSの様々なサービスを利用できるaws-sdk
を使ってみます。
今回はインストールから利用開始できるまでの設定を行います。
AWS上の操作は大丈夫という方は、「Nodeから利用する」の項目からご覧ください。
AWS側の準備
IAMの作成
慣れてないと一番面倒な(罠にハマりやすい)のがこいつですねw 要はアカウントの作成です。IAMは使い回すのではなく用途毎に作成するのがおすすめです。
AWSのManagementConsoleにログインし、メニューからIAMを選択。
IAMのページに移動したら左側のメニューから「ユーザー」、「ユーザーの作成」を選択。
作成するユーザー名を適当に入力し、「プログラムによるアクセス」にチェック。
必要な権限をチェックします。今回は試験的にS3を触りますので「AmazonS3FullAccess」にチェックしました。
最終的にユーザーが作成され以下の画面になったら、「アクセスキーID」と「シークレットアクセスキー」に表示される文字列をどこかにメモします。
S3のバケットを作成
今回はS3を利用しますので、先にS3へバケットを作成しておきます。必要ない方は次の項目にスキップしてください。
ManagementConsoleでS3へ移動したら、「バケットを作成する」をクリック。
バケット名を入力し、リージョンを選択。これ以上設定しない場合は画面左下にある「作成」ボタンをクリック。バケット名はURLのドメインのような書式で、他のユーザーと重複しない値を入力する必要があります。
これでAWS上での準備が完了しました。
Nodeから利用する
アクセス情報を保存
ここからNode側の設定を行います。まず適当なファイルに先ほど作成したIAMの情報をJSON形式で保存します。JSON形式で保存する際には「キー」の文字列もダブルコーテーション(“)で囲ってあげる必要がある点に注意です。
$ cat ~/.aws/credentials.json
{
"accessKeyId": "XXXXXXXXXXXXXXXXXXXX",
"secretAccessKey": "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"
}
.aws
ディレクトリはAWSのCLIの設定を行うと作成されるディレクトリです。ここでなくてももちろん構いませんが、このファイルはいわゆるパスワードが生の状態で記録されていますので、Gitなどのリポジトリへの登録は避けることをオススメします。
インストール
適当なNode.jsのプロジェクトのディレクトリに移動、npm install
コマンド一発で入ります。
$ npm install aws-sdk
Nodeから利用する
先ほどインストールしたaws-sdk
を初期化し、S3へ情報を保存してみます。実行後にS3上に新しくファイルfoo.txt
が作成されていれば成功です。
//--------------------------------------
// AWS初期化
//--------------------------------------
const AWS = require("aws-sdk");
AWS.config.loadFromPath("/home/foo/.aws/credentials.json"); // IDとAccesskeyを読み込み
AWS.config.update({region: "ap-northeast-1"}); // リージョンを東京に設定
//--------------------------------------
// S3へデータを保存してみる
//--------------------------------------
const s3 = new AWS.S3();
const params = {
Bucket: "foo.example.com", // バケット名
Key: "foo.txt", // ファイル名(ディレクトリを含めたパスを書きます)
Body: "bar", // ファイルの内容
ContentType: "text/plain" // MimeType
};
// 送信
s3.putObject(params, (err, data)=>{
if (err) console.log(err, err.stack);
else console.log(data);
});
初期化の部分は他のAWSのサービスを利用するときも同じです。適当な関数やクラスなどにして置くと使い勝手も良さそうですね。
参考ページ
- https://docs.aws.amazon.com/ja_jp/AWSJavaScriptSDK/latest/index.html
- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html
- https://docs.aws.amazon.com/ja_jp/AWSJavaScriptSDK/latest/AWS/S3.html
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。
同じカテゴリの記事
- [AWS] ECRにDockerイメージをプッシュする
- [AWS] S3へMIMEタイプを自動判定しながらアップロードする – Node.js
- [AWS] Serverless FrameworkでS3にファイルが追加されたらLambdaを起動する
- [AWS] CloudFrontのオリジンを動的に変更する – Lambda@Edge + Node.js
- [AWS] Serverless FrameworkでLambdaをArm64対応する
- [AWS] CloudFront+S3オリジンでindex.htmlを省略する – Lambda@Edge + Node.js
- [AWS] CloudFrontでBASIC認証を行う – Lambda@Edge + Node.js
- [AWS] Comprehendで日本語の感情分析を行う