このフェーズでは、ワークショップで使うAWS Lambda関数をCloudFormationでデプロイします。ここでは中身の理解は不要です。まずは動く環境を用意する準備フェーズとして進めてください。
AWS環境へのLambda関数の作成には、今回は再現性の担保のために、CloudFormationテンプレート(lambda.yml)を使います。テンプレートの中身を理解する必要はありません。「これを実行するとLambda関数ができる」という認識で大丈夫です。
AWSTemplateFormatVersion: "2010-09-09"
Description: Lambda function for CI/CD workshop
Parameters:
FunctionName:
Type: String
Default: hello-world
Description: Lambda function name
Resources:
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
HelloWorldFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: !Ref FunctionName
Runtime: python3.14
Handler: index.handler
Role: !GetAtt LambdaExecutionRole.Arn
Timeout: 30
Code:
ZipFile: |
def handler(event, context):
return {"statusCode": 200, "body": "hello, world!"}
Outputs:
FunctionName:
Description: Lambda function name
Value: !Ref HelloWorldFunction
FunctionArn:
Description: Lambda function ARN
Value: !GetAtt HelloWorldFunction.Arn
AWSコンソールで CloudFormation → スタックの作成 → 既存のテンプレートを選択 → テンプレートファイルのアップロード を選択して、lambda.yml をアップロードして、デプロイできます。
スタック名とLambda関数名の指定が必要です。
同じAWSアカウント・リージョンで複数人が実施する場合、スタック名・関数名はユニークである必要があります。
デフォルトの hello-world からhello-world-<自分の名前> のように、関数名が被らないように変更してデプロイしてください。
AWS CLIの認証設定(aws login)はフェーズ5で行います。このフェーズではコンソールからのデプロイを推奨しますが、すでにAWS CLIの認証が済んでいる場合は、以下のコマンドでもデプロイできます。
aws cloudformation deploy \
--template-file lambda.yml \
--stack-name cicd-workshop-lambda \
--capabilities CAPABILITY_IAM \
--profile cli-profile
デプロイが完了したら、AWSコンソールでLambda関数を開き、テスト実行してください。以下のレスポンスが返ることを確認します。
{"statusCode": 200, "body": "hello, world!"}
Lambda関数がAWS上に作成できました。次はこのコードをGitHubに置いて、チームで共有できる状態にします。
フェーズ2: GitHubにコードを置く に進みましょう。