AWS
lambda
ECS
ServerlessFramework

ECSタスク実行用のLambda関数の実装に関するメモ

自分用のメモ


Serverless Framework(以下sls)の導入


事前準備(npmの導入)

※nvm(node.jsのバージョン管理ツール)を使用

- nvmのインストール

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

$ nvm --version
0.33.11
$ source ~/.bash_profile


  • Node.js + npm(LTS版)のインストール

$ nvm install --lts

$ nvm use --lts


  • slsの導入

$ npm install -g serverless@1.35.1

$ sls -v
1.35.1

2019年2月現在、最新版はデグレによりAWSのassume role に対応してないためver1.35.1を指定してインストールする


AWS profileの準備(aws configureで大丈夫)


前提


  • awscli導入済み

  • custodianアカウントのAssume Roleで実行する

$ aws configure --profile custodian

AWS Access Key ID [None]: AKIAxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json


  • ~/.aws/config にデプロイ先AWSアカウントのprofileを登録

$ vi ~/.aws/config


~/.aws/config

[profile sandbox_role]

role_arn = arn:aws:iam::(aws_account_id):role/(iam_role_name)
source_profile = custodian
region = ap-northeast-1


slsでLambdaをデプロイ


ちょっとした準備


  • ~/.aws/configからprofileを読み込むため環境変数をexport(Assume Roleに必要)

$ export AWS_SDK_LOAD_CONFIG=1


  • package.jsonからslsプラグインのインストール

$ npm install


ServiceをAWSへデプロイ

$ sls deploy -v --profile sandbox_role


ServiceをLocalで実行

$ pipenv install --dev

$ pipenv shell
(nouken) $ sls invoke local --function run-fargate-pgv-sleep --path test/event.json --profile production_role


ServiceをAWSから削除

$ sls remove --profile production_role