エンジニアはこわくない

自分の好きな音楽とか雑記とかエンジニアっぽい内容を好きなように書く場所。

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だけ作成しようとするとエラーになると思います。

最後に

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

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

おわり!!

広告を非表示にする