Botkit을 통해 AWS 리소스 가져오기
16968 단어 AWSTypeScriptbotkittech
이번에는 슬랙 협업을 하지 않고 간단한 웹 포트를 만들어 확인한다.
샘플 창고가 미리 준비되어 있으니 궁금하신 분들은 Clone을 사용해보세요.👌
Botkit 시작 방법
먼저 Botkit은 TypeScript에서 사용할 수 있습니다.
4
## ライブラリのインストール
$ yarn add botkit # yarnの代わりにnpm使ってもOKです
$ yarn add typescript
$ yarn add botbuilder-adapter-web
$ yarn add aws-sdk
## tsconfigの作成
$ npx tsc --init
tsconfig 이런 느낌으로 수정.상세한 상황은 이곳의 보도를 참조하시오.
// tsconfig.json
{
"compilerOptions": {
"module": "esnext",
"target": "esnext",
"moduleResolution": "node"
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules"
]
}
package.json은 다음과 같이 수정되었습니다.// package.json
{
"scripts": {
"start": "node dist/index.js", // jsを実行
"build": "npx tsc --outDir ./dist ./src/index.ts" // tsファイルをjsにトランスパイル
},
"dependencies": {
// 割愛
}
}
TypeScript로 Botkit 샘플 만들기
src 디렉터리와 index.ts 만들기
4
$ mkdir src
$ touch src/index.ts
샘플 코드 제작.참조 URL 여기 있습니다.
import { Botkit } from "botkit";
import { WebAdapter } from "botbuilder-adapter-web";
const adapter = new WebAdapter; // botbuilder-adapter-webからadapterを作成
const controller = new Botkit({
adapter: adapter, // 作成したadapterをBotkitの初期化時に渡す
});
controller.on("test", async (bot, msg) => { // イベントのフィルター、`type: test`で返信
await bot.reply(msg, "I received an text: " + msg.text); // 受け取った`text:`の内容を返す
});
Botkit의 바디와 어댑터는 라이브러리로 나뉜다.Botkit을 초기화할 때, 슬랙과 웹 등 어댑터를 제공하여 기능을 추가할 수 있습니다.
여기서 간단한 테스트를 해보도록 하겠습니다.
# jsファイルを生成
$ yarn build
# botkitを実行、待ち状態になる
$ yarn start
# 別のターミナル or シェルを起動
# Botkitにリクエストを送る
$ curl -X POST \
-H "Content-Type: application/json" \
-d '{
"type": "test",
"text": "ok bokujyou",
"channel": "websocket",
"user": "user"
}' \
http://localhost:3000/api/messages
# 以下のレスポンスが返ってくればOK
[{"type":"message","text":"I received an event: ok bokujyou"}]
Botkit을 통해 AWS 리소스 호출
이번에는 CodeBuild의 프로젝트 일람표를 간단하게 호출해 봅시다.
원본 파일 만들기
3
$ mkdir -p src/aws
$ touch src/aws/CodeBuild.ts
TypeScript 코드(사실 리턴의 처리에서 답장값이나interface 같은 것을 쓰려고 했지만 이번에는 생략했다)
// src/aws/CodeBuild.ts
import * as AWS from "aws-sdk"; // ライブラリをインポート
const codebuild = () => { // classのインスタンスを作成
return new AWS.CodeBuild; // classを生成
};
// CodeBuildのプロジェクト一覧をAWSから取得して返す関数
const CodeBuildListProjects = () => { // 何も受け取らないLambda処理
return codebuild().listProjects().promise(); // 非同期処理(コールバック)
};
export { CodeBuildListProjects } // 別ファイルでimportするためにexportしておく
// src/index.ts
import { Botkit } from "botkit";
import { WebAdapter } from "botbuilder-adapter-web";
import { CodeBuildListProjects } from "./aws/CodeBuild"; // import
const adapter = new WebAdapter;
const controller = new Botkit({
adapter: adapter,
});
controller.on("test", async (bot, msg) => {
await bot.reply(msg, "I received an event: " + msg.text);
});
// 追加
controller.on("codebuild", async (bot, msg) => {
// CodeBuildListProjectsを実行
await bot.reply(msg, await CodeBuildListProjects()); // 非同期処理なのでawaitを忘れない
});
확인$ yarn build
$ yarn start
# AWSの認証鍵を環境変数に設定
$ export AWS_ACCESS_KEY_ID=<>
$ export AWS_SECRET_ACCESS_KEY=<>
$ export AWS_REGION=<>
## もしくは
$ export AWS_PROFILE=<>
# リクエスト
$ curl -X POST \
-H "Content-Type: application/json" \
-d '{
"type": "codebuild",
"text": "test",
"channel": "websocket",
"user": "user"
}' \
http://localhost:3000/api/messages
# [<CodeBuildのプロジェクト一覧>] が返ってくるはず
총결산
Botkit을 사용하면 상당히 간단하게 API 스타일의 물건을 만들 수 있습니다.
여기에 쓰여 있지 않지만, Slack chatbot을 사용하여 deply를 실행합니다.
문턱이 좀 높다고 생각하시는 분들은 꼭 편하게 놀아주세요.🎉
Reference
이 문제에 관하여(Botkit을 통해 AWS 리소스 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/fnaoto/articles/0ce910a8c888776e8e16텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)