이제 DynamoDB를 구성했으므로 serverless.yml을 통해 S3 파일 업로드 버킷을 구성하는 방법을 살펴 보겠습니다.

리소스 만들기

resources/s3-bucket.yml 파일을 만들고 아래 내용을 추가합니다.

Resources:
  AttachmentsBucket:
    Type: AWS::S3::Bucket
    Properties:
      # Set the CORS policy
      CorsConfiguration:
        CorsRules:
          -
            AllowedOrigins:
              - '*'
            AllowedHeaders:
              - '*'
            AllowedMethods:
              - GET
              - PUT
              - POST
              - DELETE
              - HEAD
            MaxAge: 3000

# Print out the name of the bucket that is created
Outputs:
  AttachmentsBucketName:
    Value:
      Ref: AttachmentsBucket

파일 업로드를 위한 S3 버킷 생성 챕터를 떠올려 보면 버킷을 만들고 CORS 정책을 구성했습니다. 프론트엔드 클라이언트에서 직접 업로드를 해야만 했기 때문에 이 작업을 수행해야 했습니다. 여기서도 동일한 정책을 구성합니다.

S3 버킷(DynamoDB 테이블과 달리)은 전역적으로 이름이 지정됩니다. 그래서 사전에 적합한 이름이 무엇인지를 알 수가 없습니다. 따라서 CloudFormation에서 버킷 이름을 생성하게하고 나중에 출력할 수 있도록 Outputs: 블럭을 추가합니다.

리소스 추가

serverless.yml에서 자원을 참조합니다. resources : 블럭을 다음으로 대체하십시오.

# Create our resources with separate CloudFormation templates
resources:
  # API Gateway Errors
  - ${file(resources/api-gateway-errors.yml)}
  # DynamoDB
  - ${file(resources/dynamodb-table.yml)}
  # S3
  - ${file(resources/s3-bucket.yml)}

코드 커밋

지금까지 변경한 내용을 커밋합니다.

$ git add .
$ git commit -m "Adding our S3 resource"

다음으로 Cognito 사용자 풀 구성에 대해 살펴 보겠습니다.