- CloudFormation은 Amazon Web Services(AWS) 리소스를 자동으로 생성해 주는 서비스이다. 사용하려는 AWS 리소스를 템플릿 파일로 작성하면, CloudFormation이 이를 분석해서 AWS 리소스를 생성한다. 이렇게 생성된 리소스를 스택이라고 한다.
- CloudFormation은 템플릿 작성, 템플릿 업로드, 스택 생성, 스택 설정 및 리소스 생성의 4단계로 실행된다.
- 템플릿은 CloudFormation 디자이너에서 작성할 수 있다.
- reference
- 서버를 직접 관리할 필요가 없는 아키텍처
- AWS CloudFormation + Serverless 조합은 IaaS(Infrastructure as a Service). 인프라 가상화
- 시스템에서 필요한 모든 인프라 자원(네트워크, 스토리지, 서버)까지 가상화한 방식
- references
- S3 + CloudFront로 배포했을 때 CloudFront 주소로만 접근할 수 있게 설정하는 것
- reference
npx create-react-app react-aws-cloudformation --template typescript
npm i -D serverless serverless-s3-sync serverless-stack-termination-protection
npm run build
npm i -g serverless
sls --version
serverless config credentials --provider aws --key 'aws_access_key_id' --secret 'aws_secret_access_key'
-
vi ~/.aws/credential
-
여러 계정을 쓰는 경우
[default]
에 이름 지정해서 사용 -
example
[default] aws_access_key_id=ASLKDJKLSAJDLA aws_secret_access_key=ZXCOIXJCO/asdaweqw121 [tag1] aws_access_key_id=ASLKDJKLSAJDLA aws_secret_access_key=ZXCOIXJCO/asdaweqw121 [tag2] aws_access_key_id=QOKWPQWPOQK aws_secret_access_key=GJPSOJDPWEQ/eroeiroeir1 ...
-
deploy command examples
(default)sls deploy
AWS_PROFILE=tag1 sls deploy
-
Templates
-
Resources and Properties
- s3 bucket: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html#cfn-s3-bucket-bucketname
- cloudfront: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CloudFront.html
- s3 bucket policy: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html
-
Resource Attribute: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-product-attribute-reference.html
-
Serverless Framework References
- serverless-s3-sync(plugin for s3 bucket upload): https://www.serverless.com/plugins/serverless-s3-sync
- serverless-stack-termination-protection: https://www.npmjs.com/package/serverless-stack-termination-protection
-
React + Serverless deploy
- CDN 을 사용한다면, 만약에 프로젝트에 업데이트가 발생했을 때 기존에 CDN 에 퍼져있는 파일들을 새로고침 해주어야 한다. 해당 작업을 처리하기 위해선 Purge, 혹은 Invaldiation 이라는 작업을 해주어야 한다. CDN 에 퍼져있는 파일을 제거처리함으로서 새로 받아오게끔 하는 방식.
- https://react-etc.vlpt.us/08.deploy-s3.html