service: fastapi-lambda provider: name: aws runtime: python3.10 region: eu-west-2 architecture: x86_64 environment: API_KEY: ${env:API_KEY} ENVIRONMENT: ${env:ENVIRONMENT} SECRET_KEY: ${env:SECRET_KEY} PLAN_TRIGGER_BUCKET: ${env:PLAN_TRIGGER_BUCKET} DOMAIN_NAME: ${env:DOMAIN_NAME} EPC_AUTH_TOKEN: ${env:EPC_AUTH_TOKEN} # Give lambda access to read from the bucket iam: role: name: fastapi_backend_${env:PLAN_TRIGGER_BUCKET}_access statements: - Effect: Allow Action: - s3:GetObject - s3:ListBucket Resource: - arn:aws:s3:::${env:PLAN_TRIGGER_BUCKET} - arn:aws:s3:::${env:PLAN_TRIGGER_BUCKET}/* package: individually: true # include: # - backend/** # # Might need to refine the paths that are included # - model_data/** exclude: - model_data/local_data/** - model_data/tests/** - infrastructure/** - data_collection/** - node_modules/** - conservation_areas/** - open_uprn/** - land_registry/** plugins: - serverless-python-requirements - serverless-domain-manager custom: pythonRequirements: dockerizePip: true dockerFile: backend/docker/Dockerfile useDocker: true dockerSsh: true fileName: serverless_requirements.txt dockerBuildCmdExtraArgs: - '--progress=plain' customDomain: domainName: api.${self:provider.environment.DOMAIN_NAME} createRoute53Record: true certificateArn: ${ssm:/ssl_certificate_arn} functions: app: handler: backend.app.main.handler events: - http: path: /{proxy+} method: ANY