環境
> node -v
v14.17.4
> yarn -v
1.22.17
環境構築
プロジェクトの作成とTypescriptの追加
yarn init -y
yarn add typescript ts-node @types/node
tsconfig.jsonを追加
{
"compilerOptions": {
"target": "esNext",
"module": "commonjs",
"sourceMap": true,
"outDir": "./dist",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
},
"exclude": [
"dist",
"node_modules"
]
}
serverlessフレームワークの導入
yarn add serverless @types/serverless serverless-deployment-bucket
GithubにAWSのアクセスキーとシークレットを保存
serverless.tsの作成
serverless.ts
import { Serverless } from 'serverless/aws';
export const service: Serverless = {
service: 'learn-serverless',
frameworkVersion: '2',
plugins: [
'serverless-deployment-bucket'
],
provider: {
name: 'aws',
runtime: 'nodejs14.x',
region: 'ap-northeast-1',
deploymentBucket: {
name: 'learn-serverless-preparation',
},
timeout: 30,
memorySize: 1024
},
functions: {
},
resources: {
Resources: {
"EC2Instance": {
Type: 'AWS::EC2::Instance',
Properties: {
ImageId: 'ami-00f045aed21a55240',
InstanceType: 't2.micro',
Tags: [
{
Key: 'Name',
Value: 'learn serverless',
}
],
},
}
}
}
}
module.exports = service;
Github actions ワークフローの作成
deploy.yml
on:
push:
branches:
- main
name: Serverless Deploy
jobs:
deploy:
name: Serverless Deploy
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Install Dependencies
run: |
yarn install
- name: Deploy to aws
run: yarn serverless deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
EC2インスタンスの確認
参考URL
ローカルに TypeScript の実行環境をサクッと構築する手順
CloudFormation入門 #1 「EC2インスタンスの作成」
GitHub Actionsを使ってAWS Lambdaへ自動デプロイ (詳説+デモ手順付きver)