Get Started fluct (お手軽サーバーレスアーキテクチャ)
API Gateway Lambdaを利用するときに複数人で開発するときもやりやすいよう fluctというツールを紹介
コンソール画面のIAM → ロールから新しいロールの作成を選択 https://console.aws.amazon.com/iam/home?region=ap-northeast-1#roles
AWSLambdaBasicExecutionRoleのロールをつける
コンソール画面のIAM → ユーザーから新規ユーザーの作成を選択 https://console.aws.amazon.com/iam/home?region=ap-northeast-1#users
ユーザーごとにアクセスキーを生成にチェックが入っていることを確認
PowerUserAccessを選択 (実際はサービスによってポリシーの選択を分ける)
AWSLambdaBasicExecutionRoleもロールにつける
下記のディレクトリにファイルを作成して、アクセスキーとシークレットキーを設定
vim ~/.aws/credentials [default] aws_access_key_id = your_access_key aws_secret_access_key = your_secret_key
npm install fluct --global
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
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はディレクトリごとに環境変数を設定するとユーザーの管理がしやすく便利
環境変数の設定 先のどの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