CentOS
AWS
vagrant
Ansible
lambda

MAC環境にAnsible導入後、AWSサービス構築までの道〜④Lambdaモジュール〜

第4回
Ansibleのlambdaモジュールを使用して実際にLambdaを構築してみる。

だいぶ間が空いてしまいましたが、一旦やりたいことが完成したのでメモとして各AWSサービス構築の手順を残します。

やりたいこと

  1. 関数作成

create_lambda.yml作成

事前準備として、関数コード(index.js)を圧縮してzipファイルを作成しています。
また変数化できる部分はvars_filesにまとめています。

またS3bucket名を関数コードの中で指定していますが、汎用的に作るためにenvironment_variablesを使用するようにしました。

create_lambda.yml
- name: Create Lambda functions
  lambda:
    name: "{{ prefix }}-{{ project_name }}"
    aws_access_key: "{{ key }}"
    aws_secret_key: "{{ secret }}"
    region: "{{ region_east }}"
    memory_size: 256
    timeout: 30
    description: "{{ prefix }}-{{ project_name }}"
    handler: 'index.handler'
    runtime: 'nodejs6.10'
    role: "arn:aws:iam::{{ account_id }}:role/service-role/testRole"
    zip_file: 'roles/Lambda/files/index.zip'
    environment_variables:
      prefix: "{{ prefix }}"
      project_name: "{{ project_name }}"

実行

以下コマンドにて実行。
「-vvv」をつけることで、詳細な実行ログが出力されます。
エラーが出ている際など、非常に助かるので常にオプション付与して実行しています!

ansible-playbook -vvv -i localhost, -c local create_lambda.yml

マネージメントコンソール確認

Lambda関数が作成されていることを確認。

感想

モジュールが提供されていることで、思ったより簡単に構築が完了できました。
関数コードの読み込みをS3からしようと試みましたが、時間がかかってしまい、今回は時間がなくて断念しました…

残タスク

今回、S3+Lambda+API Gateway+CloudFrontでServerlessな環境を構築しようと考えています。
そのためAPI GatewayからLambdaをコールしてもらうようにするために、トリガーにAPI Gatewayを設定する必要があります。
こちらの設定は次回のAPI Gatewayの構築部分でやりたいと思います。