From 11a6fe01305c2f9b2973d20cd2461df48c2de906 Mon Sep 17 00:00:00 2001 From: Vijaya Krishna Manne Date: Fri, 29 May 2026 13:49:50 -0400 Subject: [PATCH] Add hello lambda CFT and Forgejo workflow --- .forgejo/workflows/deploy-cfn.yml | 50 +++++++++++++++++++++++++++++++ README.md | 3 ++ infra/hello-lambda.yml | 37 +++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 .forgejo/workflows/deploy-cfn.yml create mode 100644 README.md create mode 100644 infra/hello-lambda.yml diff --git a/.forgejo/workflows/deploy-cfn.yml b/.forgejo/workflows/deploy-cfn.yml new file mode 100644 index 0000000..4c3a50c --- /dev/null +++ b/.forgejo/workflows/deploy-cfn.yml @@ -0,0 +1,50 @@ +name: Deploy Hello Lambda CFT + +on: + workflow_dispatch: + push: + branches: [ main ] + +jobs: + deploy: + runs-on: nas-safe + + steps: + - uses: actions/checkout@v4 + + - name: Ensure AWS CLI + run: | + if ! command -v aws >/dev/null 2>&1; then + if command -v apk >/dev/null 2>&1; then + apk add --no-cache aws-cli + elif command -v apt-get >/dev/null 2>&1; then + apt-get update && apt-get install -y awscli + else + echo "No supported package manager found for awscli install" + exit 1 + fi + fi + aws --version + + - name: Verify AWS identity + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_REGION }} + run: aws sts get-caller-identity + + - name: Validate CFT + env: + AWS_DEFAULT_REGION: ${{ secrets.AWS_REGION }} + run: | + aws cloudformation validate-template \ + --template-body file://infra/hello-lambda.yml + + - name: Deploy CFT + env: + AWS_DEFAULT_REGION: ${{ secrets.AWS_REGION }} + run: | + aws cloudformation deploy \ + --stack-name hello-lambda-stack \ + --template-file infra/hello-lambda.yml \ + --capabilities CAPABILITY_NAMED_IAM diff --git a/README.md b/README.md new file mode 100644 index 0000000..c022ac3 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Hello World Lambda via CloudFormation + +This repo deploys a simple Lambda using Forgejo Actions. diff --git a/infra/hello-lambda.yml b/infra/hello-lambda.yml new file mode 100644 index 0000000..3f73cd1 --- /dev/null +++ b/infra/hello-lambda.yml @@ -0,0 +1,37 @@ +AWSTemplateFormatVersion: '2010-09-09' +Description: Hello World Lambda via CloudFormation + +Resources: + HelloLambdaRole: + Type: AWS::IAM::Role + Properties: + RoleName: hello-world-lambda-role-cft + 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 + + HelloLambdaFunction: + Type: AWS::Lambda::Function + Properties: + FunctionName: hello-world-lambda-cft + Runtime: python3.12 + Handler: index.lambda_handler + Role: !GetAtt HelloLambdaRole.Arn + Timeout: 10 + Code: + ZipFile: | + def lambda_handler(event, context): + return { + "statusCode": 200, + "body": "Hello from Lambda via CloudFormation!" + } + +Outputs: + LambdaName: + Value: !Ref HelloLambdaFunction