Get Started fluct (お手軽サーバーレスアーキテクチャ)
はじめに
API Gateway Lambdaを利用するときに複数人で開発するときもやりやすいよう fluctというツールを紹介
事前に準備するもの
IAM Role
コンソール画面のIAM → ロールから新しいロールの作成を選択 https://console.aws.amazon.com/iam/home?region=ap-northeast-1#roles
ロール名の設定:適当なロール名を入呂翁
ロールタイプの選択:AWS Lambdaを選択
AWSLambdaBasicExecutionRoleのロールをつける
ユーザーの作成
コンソール画面のIAM → ユーザーから新規ユーザーの作成を選択 https://console.aws.amazon.com/iam/home?region=ap-northeast-1#users
ユーザー名の入力:適当なユーザー名を選択
ユーザーごとにアクセスキーを生成にチェックが入っていることを確認
ユーザーのセキュリティ認証情報をメモしておく
作成したユーザーを選択
アクセス許可からポリシーのアタッチを選択
PowerUserAccessを選択 (実際はサービスによってポリシーの選択を分ける)
AWSLambdaBasicExecutionRoleもロールにつける
Aws SDK
install
npm install aws-sdk
認証情報を設定
下記のディレクトリにファイルを作成して、アクセスキーとシークレットキーを設定
vim ~/.aws/credentials [default] aws_access_key_id = your_access_key aws_secret_access_key = your_secret_key
Install
fluctをinstall
npm install fluct --global
fluctアプリの作成
ベースとなるファイルを生成
fluct new myapp Created ./myapp Created ./myapp/README.md Created ./myapp/.gitignore Created ./myapp/actions Created ./myapp/actions/.keep Created ./myapp/package.json
アクションの作成
fluct g helloworld Created ./actions/helloworld Created ./actions/helloworld/index.js Created ./actions/helloworld/package.json
APIの作成
actinoのパスを変更
myapp/helloworld/package.json { "name": "helloworld", "private": true, "fluct": { "contentType": "text/html", "httpMethod": "GET", "path": "/helloworld", "statusCode": 200 } }
IAM ROLEの設定 事前に用意したIAM Roleを設定
リージョンの指定も行う
myapp/package.json { "name": "myapp", "private": true, "fluct": { "accountId": "設定したroleのid", "restapiId": null, "roleName": "設定したrole名", "region": "ap-northeast-1" } }
デプロイ
fluct deploy Created zip: ./actions/helloworld/lambda.zip Uploaded function: helloworld Updated endpoint: GET /helloworld Deployed: エンドポイントが表示される
アクセスしてみるとHello Wolrldが表示されます!
番外
aws-sdkはディレクトリごとに環境変数を設定するとユーザーの管理がしやすく便利
install
brew install direnv
環境変数の設定 先のどのmyappのルートディレクトリで操作
direnv edit . export AWS_DEFAULT_PROFILE=myapp export AWS_PROFILE=$AWS_DEFAULT_PROFILE
これで下記のようにcredentialsの設定が可能
vim ~/.aws/credentials [myapp] aws_access_key_id = your_access_key aws_secret_access_key = your_secret_key



















