Skip to content

Player API Lambda

Player API Lambda #2

name: Player API Lambda
env:
APP_NAME: player_service
on:
workflow_dispatch: # Enables manual triggering
push:
paths:
- 'prototypes/**'
jobs:
build-and-deploy:
name: Build and Deploy Lambda Function
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./prototypes/services/player_service
# determines AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY,
# refer to github environment
environment: development
steps:
# Step 1: Checkout the code
- name: Checkout code
uses: actions/checkout@v3
# Step 2: Set up Go environment
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: 1.24
# Step 3: Build the Go binary
- name: Build Go binary
run: |
GOOS=linux GOARCH=amd64 go build -o main main.go
env:
GO111MODULE: auto
GOPROXY: https://proxy.golang.org
GOSUMDB: sum.golang.org
CGO_ENABLED: 0
- name: Package player service
run: zip player_service.zip main
- name: AWS Authentication
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ vars.AWS_DEPLOYMENT_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_DEPLOYMENT_KEY }}
aws-region: ${{ vars.AWS_REGION }}
role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT_ID }}:role/PlayerServiceDeploymentRole
role-session-name: GitHubActionsECRDeployment
- name: Authenticate Docker with ECR
run: |
aws ecr get-login-password --region ${{ vars.AWS_REGION }} | docker login --username AWS --password-stdin ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com
- name: Build and Tag Docker Image
run: |
docker build -t $APP_NAME .
docker tag $APP_NAME:latest ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com/$APP_NAME:latest
- name: Push Docker Image to AWS ECR
run: |
docker push ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com/$APP_NAME:latest