Lambda by default
- 기본적으로 Lambda 함수를 시작하면 우리의 VPC 외부에서 시작된다.
- VPC는 AWS가 제공하는 서비스이다. - 우리는 VPC내에서 리소스에 액세스할 권한이 없다.
- RDS 데이터베이스, ElastiCache 캐시 내부 로드 밸런드를 시작하면 Lambda 함수가 해당 서비스에 액세스 할 수 없다.
- Lambda 배포의 기본 설정이다. - 인터넷의 퍼블릭 API에 액세스하는 것은 가능하다.
- DynamoDB에 액세스 할 수 있는 건 DynamoDB가 AWS 클라우드의 퍼블릭 리소스이기 때문이다.
- 하지만 프라이빗 RDS 데이터베이스에는 연결할 수 없다.
Lambda in VPC
- 위를 해결하려면 우리의 VPC에서 Lambda 함수를 시작하면 된다.
- 이를 위해서는 VPC ID Lambda 함수를 시작하려는 서브넷을 지정하고 Lambda 함수에 보안 그룹을 추가해야 한다.
- 그러면 Lambda가 서브넷에 엘라스틱 네트워크 인터페이스를 생성해 우리의 VPC에서 실행되는 가령 Amazon RDS에 액세스할 수 있게 된다.
- 이렇게 하면 VPC 내 모든 항목에 비공개로 연결할 수 있다.
Lambda with RDS Proxy
- VPC에서 Lambda를 사용하는 대표적인 사용사례는 'RDS Proxy'이다.
- RDS 데이터베이스가 프라이빗 서브넷에 있어도 Lambda 함수로 직접 해당 DB에 액세스 할 수 있다.
- 이런 방법으로 RDS 데이터베이스에 직접 액세스하면 큰 문제가 발생하게 된다.
- Lambda 함수의 수가 너무 많이 생성되었다 사라지길 반복하면 개방된 연결이 너무 많아서 RDS 데이터베이스의 로드가 상승해 시간 초과등의 문제로 이어진다. - 해결하는 방법은 RDS 프록시를 시작하는 것이다.
- 이 프록시가 연결을 한 곳으로 모으고 RDS 데이터베이스 인스턴스 연결의 수를 줄인다. - Lambda 함수가 RDS 프록시에 연결되고 RDS 프록시가 RDS DB 인스턴스로 연결되므로 아키텍처상의 문제가 해결된다.
- 장점
- 데이터베이스 연결의 풀링과 공유를 통해 확장성을 향상시킨다.
- 장애가 발생할 경우, 장애 조치 시간을 66%까지 줄여 가용성을 향상시키고 연결을 보존한다.
- RDS와 Aurora 모두에 적용된다.
- RDS 프록시 수준에서 IAM 인증을 강제하여 보안을 높일 수 있다.
- 자격 증명은 Secrets Manager에 저장된다. - Lambda 함수가 RDS 프록시에 연결할 수 있으려면 우리의 VPC에서 Lambda 함수를 시작해야 한다.
- RDS 프록시는 퍼블릭 액세스가 불가능하므로 Lambda 함수를 퍼블릭으로 시작하면 RDS 프록시에 네트워크 연결을 할 수가 없다.
'AWS(Amazon Web Service)' 카테고리의 다른 글
[AWS] 솔루션 설계자 관점의 Serverless - DynamoDB (0) | 2024.12.14 |
---|---|
[AWS] 솔루션 설계자 관점의 Serverless - RDS 람다 호출 및 이벤트 알림 (0) | 2024.12.13 |
[AWS] 솔루션 설계자 관점의 Serverless - Lambda@Edge & CloudFront Functions (0) | 2024.12.11 |
[AWS] 솔루션 설계자 관점의 Serverless - Lambda (0) | 2024.12.10 |
[AWS] 솔루션 설계자 관점의 Serverless (0) | 2024.12.09 |