3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Windows10にてAWS 開発環境整備を整備する(Terraform,Terraformer,ServerlessFramework)

Last updated at Posted at 2019-11-04

始めに

  • AWSの開発を少しずつ行っていますが、やはりIaC(Infrastructure as Code)で開発を行っていきたいと考えました。
  • その中でterraformServerlessFlameworkなどのツールを利用することにし、その環境構築をメモします。

動作環境

  • OS
    • Windows10 pro
  • 利用するツール
    • chocolatey : Windows用のパッケージマネージャ。各種ツールのインストールに利用
    • git : 言わずもがな。terraformerのダウンロードに利用。
    • AWS CLI : AWS 操作用のCLI

整備する開発環境

環境 公式ページ 概要
node.js https://nodejs.org/ja/ ServerlessFramework にて利用
ServerlessFramework https://serverless.com/ Lambdaのローカルでのデバッグやデプロイを行う
terraform https://www.terraform.io/ AWS環境をコード管理する
terraformer https://github.com/GoogleCloudPlatform/terraformer  既存環境からterraformファイルを生成する

やること

開発環境

AWS CLIのインストール

基本的には公式ガイドを参考に実施します。

初期設定

初回

PS > aws configure

AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: ap-northeast-1
Default output format [None]: text
  • プロファイルIDを指定して作成
PS > aws configure --profile <YOUR_PROFIlE_ID>

AWS Access Key ID [None]: <YOUR_ACCESS_KEY>
AWS Secret Access Key [None]: <YOUR_SECRET_ACCESS_KEY>
Default region name [None]: <YOUR_REGION>
Default output format [None]:

terraformをインストール

# chocolateyにてterraformをインストールする
choco install terraform -y

こんな感じで認識すればOK

PS > terraform -v

Terraform v0.12.12

terraformerをインストール

公式ページを参考に実施していきます

ただし私はインストール手順の2,3うまく動作しませんでした。 あくまで動いただけですので注意ください


2020/11/05 追記

ただし私はインストール手順の2,3がうまく動作しませんでした。

上記の件、下記リンクのようにGoをインストールするといけるようです。
@MarvelWorksJp さん、情報ありがとうございました。

参考URL
https://qiita.com/yoskeoka/items/0dcc62a07bf5eb48dc4b


# terraformerをクローンするローカルディレクトリに移動
cd <YOUR_DIRECTORY>

# gitからクローンする
git clone https://github.com/GoogleCloudPlatform/terraformer.git

# システム環境変数にterraformerのディレクトリパスを設定
# !! システム環境変数の設定は十分注意してください !!
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";<YOUR_DIRECTORY>\terraformer", [EnvironmentVariableTarget]::Machine)

こんな感じで認識すればOK

PS > terraformer --version

version v0.8.4

Serverless Frameworkをインストール

npm install -g serverless

こんな感じで認識すればOK

PS > serverless -v

Framework Core: 1.55.1
Plugin: 3.2.0
SDK: 2.1.2
Components Core: 1.1.2
Components CLI: 1.4.0

実際に使ってみる

AWS に対して、TerraformerTerraformserverless frameworkをお試ししてみます

Terraformer

  • 今回はaws cliにて設定したプロファイル<YOUR_PROFIlE_ID>のIAM情報を抜き出してみます

  • 詳しい使い方は以下参照

# terraformファイルを管理する任意のディレクトリに移動
cd <YOUR_TERRAFORM_DIRECTORY>

# AWSをプロバイダ設定したinit.tfファイルを新規生成
echo 'provider "aws" {}' | Set-Content "init.tf" -Encoding utf8

# terraformの初期化
terraform init

# terraformerにてインポートを実行
terraformer import aws --resources=iam --regions=ap-northeast-1 --profile=<YOUR_PROFIlE_ID>
  • 下記のようにgeneratedフォルダ配下に出力したterraformファイルができていればOK
PS > tree

Folder PATH listing
Volume serial number is 1A12-01D8
C:.
├───.terraform
   └───plugins
       └───windows_amd64
└───generated
    └───aws
        └───iam

ServerlessFramework

ローカルに環境を作成する

# ServerlessFrameworkファイルを管理する任意のディレクトリに移動
cd <YOURE_SERVERLESS_DIRECTORY>

# ServerlessFramework環境の作成
serverless create --template aws-python3 --path lambda-test
  • 下記のようにプロジェクトフォルダが生成される
PS > tree /f

Folder PATH listing
Volume serial number is 1A12-01D8
C:.
└───lambda-test
        .gitignore
        handler.py
        serverless.yml

デプロイする

- 下記の公式ページを参考に serverless.ymlを対象のAWS環境に合わせて任意の内容に変更します。

serverless.yml

service: lambda-test

provider:
  name: aws
  runtime: python3.7
+  region: ap-northeast-1 # 追加 
+  profile: default # 追加 
+  role: <YOUR_ROLE> # 追加 ・・・今回は既存のroleを利用しましたが、新規作成の場合はresourcesにて作成してください

functions:
  hello:
    handler: handler.hello

ちなみにhandler.pyは今回編集してませんが、こんな感じになっています

handler.py
import json


def hello(event, context):
    body = {
        "message": "Go Serverless v1.0! Your function executed successfully!",
        "input": event
    }

    response = {
        "statusCode": 200,
        "body": json.dumps(body)
    }

    return response

    # Use this code if you don't use the http event with the LAMBDA-PROXY
    # integration
    """
    return {
        "message": "Go Serverless v1.0! Your function executed successfully!",
        "event": event
    }
    """
  • デプロイを実行します
# 作成された`lambda-testディレクトリに移動
cd .\lambda-test

# デプロイを実行
serverless deploy -v

こんな感じになればOK

image.png

最後に

  • 今回terraformerを利用できるようになったことで、すでに構築した環境のterraform化やAWSの環境構築をコンソールをポチポチと手探りでしたのちに作成することができるようになりましたので活用していきたいと思います。
  • またServerlessFrameworkによってLambdaの開発も効率化できそうですのでいろいろ使ったみたいと思います
3
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?