エンジニアはこわくない

好きなように書く

AWS CloudFormationでLambdaを構築するサンプル


スポンサーリンク

f:id:tsujitaku50:20170124085842p:plain

こんにちは、つじたく(@Tsuji_Taku50)です。

AWS CloudFormationでLambdaを構成するコードを書いたので、共有したいと思います。

あと少しだけ解説も!

AWS CloudFormationについてはこちらに書いたので、良かったら見てください。 tsujitaku50.hatenablog.com

yamlで書きました

AWS CloudFormationはjsonyamlという2種類で書けるのですが、今回はyamlで書きました。

なぜならコメントが書けるから!です。

そもそもjsonは人間が書くものじゃry

コード

コードが以下になります。

これをコピペでLambda環境が構築できると思います。

では少しだけ解説したいと思います。

AWSTemplateFormatVersion: '2010-09-09'
Description: test
Resources:
  # Lambda作成
  LambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      Code:
        # ソースコードは直書き
        ZipFile: !Sub |
          test
      Description: Lambda is best
      FunctionName: test_function
      Handler: index.handler
      MemorySize: 128
      Role:
        Fn::GetAtt:
        - LambdaRole
        - Arn
      Runtime: nodejs4.3
      Timeout: 10

  # Lambdaのロール作成
  LambdaRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Statement:
        - Action:
          - sts:AssumeRole
          Effect: Allow
          Principal:
            Service:
            - lambda.amazonaws.com
      ManagedPolicyArns:
      - arn:aws:iam::aws:policy/PowerUserAccess
      Path: /
      RoleName: lambdaRole

Lambdaのソースコードについて

今回はZipFileという項目にtestというソースコードを書きました。

つまりyamlファイルに直接書いています。

ここには色んな方法があるようでS3に上げたzipファイルを取得するように書き換えることもできます。

今回は直接ソースコードを書く方法をとっています。

この部分の公式ドキュメントはこちら docs.aws.amazon.com

ロールがあるのはなぜ?

yamlを見ると分かると思うのですが、Lambdaだけではなくロールも同時に作成しています。

これは何故かと言うとLambdaと作成するときに必ず同時にロールの作成しないといけないからです。

2つで1つみたいな感じです。

ロールがない状態でLambdaだけ作成しようとするとエラーになると思います。

最後に

僕も色々試している段階なので、まだまだおかしな箇所があると思います。

なので鵜呑みにせず、自分でも一度調べてみましょう!

おわり!!