짜잔.. 분명히 구매 후 최대 3일 걸릴거라고 고지했으면서 10분만에 뚝딱해주다니.. AWS는 역시 빠르다. 구입한 도메인은 하나를 api 서버 엔드포인트, 하나는 amplify에 붙여 서비스 도메인으로 사용할 예정이다. amplify는 프론트 파트에서 작업할 것이고 우선 lambda의 api gateway에 해당 도메인을 붙이는 과정을 포스팅 하겠다.
공식문서를 참고하여 하나 하나 따라해보도록 한다.
Custom domain names
섹션으로 가 새로운 엔드포인트를 만들어 주어야 한다. 이때 이름은 당연히 구매한 도메인으로 이루어진 서브 도메인이어야 한다. 나의 경우는, api.catchcatch.link
로 해두었다.*.catchcatch.link
를 적용할 시, www.catchcatch.link
, image.catchcatch.link
등의 경로를 모두 보호받을 수 있다. ACM 으로 요청한 인증서는 오늘도 어김없이 AWS Serverless Application Model 공식문서를 찾아왔다. 해당 부분은, AWS::Serverless::Api
의 property 중, DomainConfiguration
이다.
BasePath: List
CertificateArn: String -> ACM에서 발급한 인증서의 Arn. 당연히 필수적으로 기입한다.
DomainName: String -> 적용하고자 하는 도메인 이름. 무조건 적는다.
EndpointConfiguration:
MutualTlsAuthentication: MutualTlsAuthentication
OwnershipVerificationCertificateArn: String
Route53: Route53Configuration
SecurityPolicy: String
위에서 언급한 두가지 외에 중요하게 적용될 요소는, Route53Configuration
이다. 하지만 해당 요소가 AWS SAM
에만 있고, Required가 아니기 때문에 자동으로 생성할 것으로 추측된다. 나는 위에서 만들었던 Route53 정보들을 반영하여 작성하고자 한다. (Route53의 리소스는 cloudformation으로 관리되지 않는 정적 리소스라고 생각되기에..)
이렇게 구성한 다음, deploy를 해봤는데 에러가 발생했다.
누가봐도, cloudformation 에서 domainname으로 된 엔드포인트를 만들어서 쓰겠다는 선언이었다. 그리하여 (지금은 포스팅에서 지웠지만)위에서 생성한 API Gateway의 Endpoint를 삭제해줬다.. ^^
근데도 오류가 났다. 예상하기로는 https://api.catchcatch.link/Stage/~~
의 접근이 되어야 하는데 403 forbidden이 뜨는 것이다. 이를 조금 검색해보니, Basepath가 stagename을 감싸는 형식이 되는지라, 아무래도 Basepath가 지정되지 않으면 안된다고 한다. 그래서, 다음과 같이 작성한 후 테스트를 해보았다.결과가 너무 잘 전달된다 !
막연하게 궁금증을 해결하기 위해서 SSL 검증에 대한 검색을 해보았고 그리 어렵지 않게 도메인에 대한 SSL 연결성 테스트 사이트를 찾을 수 있었다. 결과는..다른 사이트들은 A+도 나오는 것 같았다. 정보들은 대충 handshake가 이루어지는 모든 플랫폼에 대해서 테스트, 그리고 암호화 공격에 대한 공격 등으로 점수를 매기는 것으로 유추되었다. 나중에 기회가 된다면 보안성을 더 강화하고 싶다 흐흐.