Problem Statement: Deploy a serverless application for uploading files to S3 storage. Additionally, create a template to help with CI/CD of such an application.
Solution: One of the ways this problem can be solved is by
leveraging AWS cloud resources such as AWS Lambda, AWS API gateway, and S3
storage. The CloudFormationTemplate for this would appear as shown below. The
bucket name would be a parameter. The lambda is charged in the increments of
100ms usage. It’s size is determined by its memory. The Lambda Integrations are
indicated by the keyword proxy. The code is uploaded to a bucket indicated by
the codeUri. The invocation handler is also indicated by the properties.
AWSTemplateFormatVersion:
'2010-09-09'
Transform:
AWS::Serverless-2016-10-31
Description:
Serverless web application for uploading files to S3
Globals:
  Api:
    BinaryMediaTypes:
    - '*~1*'
Resources:
  uploader:
    Type: AWS::Serverless::Function
    Properties:
      Description: Serverless web application
for uploading files to S3
      Handler: src/index.handler
      Runtime: nodejs12.x
      CodeUri:
        Bucket:
awsserverlessrepo-changesets-1f9ifp952i9h0
        Key:
536706842180/arn:aws:serverlessrepo:us-east-1:233054207705:applications-uploader-versions-1.1.0/5176d06e-2d79-4e66-8f0c-a3bccf9084e5
      MemorySize: 1536
      Policies:
      - S3CrudPolicy:
          BucketName:
            Ref: destBucket
      Timeout: 60
      Events:
        root:
          Type: Api
          Properties:
            Path: /
            Method: get
        getProxy:
          Type: Api
          Properties:
            Path: /{proxy+}
            Method: get
        postProxy:
          Type: Api
          Properties:
            Path: /{proxy+}
            Method: post
      Environment:
        Variables:
          DEST_BUCKET:
            Ref: destBucket
Parameters:
  destBucket:
    Type: String
    Description: Name of the S3 Bucket to put
uploaded files into (must exist prior to deployment)
No comments:
Post a Comment