AWS CloudFormationでLambdaを構築するサンプル
こんにちは、つじたく(@Tsuji_Taku50)です。
AWS CloudFormationでLambdaを構成するコードを書いたので、共有したいと思います。
あと少しだけ解説も!
AWS CloudFormationについてはこちらに書いたので、良かったら見てください。 tsujitaku50.hatenablog.com
yamlで書きました
AWS CloudFormationはjsonとyamlという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だけ作成しようとするとエラーになると思います。
最後に
僕も色々試している段階なので、まだまだおかしな箇所があると思います。
なので鵜呑みにせず、自分でも一度調べてみましょう!
おわり!!