AWS SDK for JavaScriptを実行可能なTypeScript環境をサクッと作る
こんにちは、CX事業本部の若槻です。
今回は、AWS SDK for JavaScriptを実行可能なTypeScript環境をサクッと作り、tscコンパイルしたスクリプトをローカルで実行してAWSにアクセスしてみたいと思います。
環境
% node -v v12.14.0 % npm -v 6.13.4
やってみる
環境の作成
まず、npm init
を実行しディレクトリ内でnpmプロジェクトを初期化します。対話式でプロジェクトの設定を聞かれるので指定します。今回はすべてエンターキーを押して既定の設定としました。
% npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (200907_ts_awssdk) version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /Users/wakatsuki.ryuta/works/200907_ts_awssdk/package.json: { "name": "200907_ts_awssdk", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this OK? (yes) %
するとディレクトリ内にpackage.json
が作成されました。
次に、npm install
で次の3パッケージをインストールします。
typescript
:TypeScriptaws-sdk
:AWS SDK for JavaScript@types/node
:Nodeにおける型定義に使用
% npm install --save typescript aws-sdk @types/node npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN 200907_ts_awssdk@1.0.0 No description npm WARN 200907_ts_awssdk@1.0.0 No repository field. + @types/node@14.6.4 + aws-sdk@2.747.0 + typescript@4.0.2 added 16 packages from 110 contributors and audited 16 packages in 2.397s found 0 vulnerabilities
すると次のようにpackage.json
のdependencies
にパッケージが追加されました。
{ "name": "200907_ts_awssdk", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "@types/node": "^14.6.4", "aws-sdk": "^2.747.0", "typescript": "^4.0.2" } }
また同ディレクトリ内に、パッケージの依存関係を示すpackage-lock.json
と、パッケージの実体が保存されるnode_modules
ディレクトリも作成されました。
AWS SDK for JavaScriptの実行
AWS SDK for JavaScriptを実行するスクリプトをTypeScriptで作成し、コンパイルして実際に実行してみます。
次のようなS3のバケット一覧を取得するTypeScriptスクリプトを作成します。
import * as AWS from "aws-sdk"; const s3: AWS.S3 = new AWS.S3(); s3.listBuckets((err, data) => { if (err) throw err; console.log(data); });
tsc
を使用してスクリプトをNodeで実行可能な形式にコンパイルします。
% npx tsc src/script.ts
src/script.js
が生成されました。
"use strict"; exports.__esModule = true; var AWS = require("aws-sdk"); var s3 = new AWS.S3(); s3.listBuckets(function (err, data) { if (err) throw err; console.log(data); });
環境変数にAWSの一時クレデンシャルの情報をセットしたら、生成されたスクリプトをNodeで実行します。
$ node src/script.js { Buckets: [ { Name: 'aaaaaaaaaa', CreationDate: 2020-05-26T02:52:35.000Z } ], Owner: { DisplayName: 'bbbbbbbbbb', ID: 'ccccccccccccccccccccccccccccc' } }
AWS SDK for JavaScriptが実行され、S3のバケット一覧を取得できました。
おわりに
AWS SDK for JavaScriptを実行可能なTypeScript環境をサクッと作り、tscコンパイルしたスクリプトをローカルで実行してAWSにアクセスしてみました。
今までPythonしか使ってこなかった自分からしたら実行前にソースコードをコンパイルしないといけないというのは敷居が高いと感じていたのですが、やってみたらそこまで難しくなかったです。
参考
- TypeScript の開発環境を作る。VSCode を基本に ESLint と Prettier も添えて。 | Multi Vitamin & Mineral
- フロントエンド開発の3ステップ(npmことはじめ) | Qiita
- SDK for JavaScript のインストール | AWS SDK for JavaScript
- listBuckets | Class: AWS.S3
- Loading Credentials in Node.js from Environment Variables | AWS SDK for JavaScript
以上