728x90
이번에는 Lambda를 VPC 내부에 위치 시켜 보았다.
요즘은 CDK를 열심히 쓰고 있으니 CDK로 현재 VPC 네트워크 구조를 알아보자
export class VpcStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const mySiteBucketName = new CfnParameter(this, "mySiteBucketName", {
type: "String"
, description: "The name of S3 bucket to upload react application"
});
const vpc = new ec2.Vpc(this, 'SpecificRoutingVPC', {
natGateways: 1
, maxAzs: 2
, cidr: '10.0.0.0/16'
, enableDnsHostnames : true
, enableDnsSupport : true
, subnetConfiguration: [
{
subnetType: ec2.SubnetType.PRIVATE_ISOLATED
, name: 'DB_Subnet'
, cidrMask: 24
}
, {
subnetType: ec2.SubnetType.PRIVATE_WITH_NAT
, name: 'Private_Subnet'
, cidrMask: 24
}
, {
subnetType: ec2.SubnetType.PUBLIC
, name: 'Public_Subnet'
, cidrMask: 24
}
]
});
const logGroup = new logs.LogGroup(this, 'FlowLogGroup');
const role = new iam.Role(this, 'FlowLogRole', {
assumedBy: new iam.ServicePrincipal('vpc-flow-logs.amazonaws.com')
});
new ec2.FlowLog(this, 'SampleFlowLog', {
resourceType: ec2.FlowLogResourceType.fromVpc(vpc)
, destination: ec2.FlowLogDestination.toCloudWatchLogs(logGroup, role)
, flowLogName: 'SampleFlowLog'
, trafficType: ec2.FlowLogTrafficType.ALL
});
new CfnOutput(this, "vpc-id", { value: vpc.vpcId });
}
}
위처럼 3개의 서브넷으로 나누었고 그중 DB_Subnet은 NAT gw또한 없는 완전한 Private영역이다.
우선 Lambda를 VPC내부에 위치시키기 위해선 Role 추가가 필요하다. 관련하여 Managed Role이 있어서 AWSLambdaVPCAccessExecutionRole을 사용했다.
그리고 Lambda를 VPC내부로 위치시켰다.
그런데 호출은?
내 생각과 다르게 외부에서 잘만 호출된다...
그렇다고 내부 자원 접근이 안되는것도 아니고...이거 도대체 구성이 어떻게 되어있는걸까...?
분명 Private한 구성이 되면 Lambda자체도 외부 인터넷 호출을 위해 NAT g/w가 필요한데 얘는 그것과는 완전 별도로 동작하는것 같다. 마치 Lambda의 Service API를 외부에 노출시킨 느낌이다.
어찌보면 보안적으로 이슈가 있을것 같은데 이건 Private한 ALB를 붙이는 방법도 있으니 넘어가도록 하자.
아무튼 각 기능에 궁금한건 알았으니 이제 활용을 어찌 할지 고민을 해볼 차례다
728x90
'Server Infra > AWS' 카테고리의 다른 글
EBS 내부구조 분석 (0) | 2022.04.18 |
---|---|
EC2 인스턴스 상태 검사 문제 해결과정 (0) | 2022.04.13 |
AWS Lambda Function URL 사용 #1 (0) | 2022.04.09 |
임금체불 보도방부터 AWS 클라우드 아키텍트로 이직까지... (9) | 2022.04.04 |
AWS Loop Interview를 보았다. (6) | 2022.03.31 |