VPC 등 옵션을 체크해서 public subnet 2개 private subnet 2개로 구성된 VPC를 생성합니다.
aws서비스를 선택한후 ec2를 선택한다.
vpc는 위에서 새로만든 vpc, 가용영역과 private subnet을 선택해준후 생성한다.
테스트를 위해서 private 서브넷에 ec2를 생성해준다.
람다 함수를 생성한 후 권한의 정책에 들어가서 정책을 밑의 JSON코드를 붙여넣기 하여 수정 해준다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LambdaBasicExecution",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Sid": "LambdaVPCAccess",
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"ec2:AssignPrivateIpAddresses"
],
"Resource": "*"
},
{
"Sid": "EC2DescribeInstances",
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"
},
{
"Sid": "EC2DescribeVpcs",
"Effect": "Allow",
"Action": "ec2:DescribeVpcs",
"Resource": "*"
},
{
"Sid": "EC2DescribeSubnets",
"Effect": "Allow",
"Action": "ec2:DescribeSubnets",
"Resource": "*"
}
]
}
로컬에서 폴더를 새로 만들어서 aws-sdk를 받아준다.
npm install aws-sdk
index.mjs 파일을 만들어서 아래의 코드를 입력한다.
ec2에 연결을 확인하는 코드다.
import AWS from 'aws-sdk';
export const handler = async (event, context) => {
try {
// Configure the AWS SDK with the appropriate region
AWS.config.update({ region: 'ap-northeast-2' }); // Replace with your desired region
// Create a new EC2 instance object
const ec2 = new AWS.EC2();
// Specify the EC2 instance ID or any other required parameters
const params = {
InstanceIds: ['i-0158856303b88551d'] // Replace with your EC2 instance ID
};
// Use the describeInstances method to retrieve information about the EC2 instance
const result = await ec2.describeInstances(params).promise();
// Process the result and extract the required information
const instanceData = result.Reservations[0].Instances[0];
// Log the retrieved information
console.log('EC2 Instance ID:', instanceData.InstanceId);
console.log('EC2 Instance State:', instanceData.State.Name);
const response = {
statusCode: 200,
body: JSON.stringify({ message: 'Communication with EC2 instance successful' })
};
return response;
} catch (error) {
console.error('An error occurred:', error);
const response = {
statusCode: 500,
body: JSON.stringify({ message: 'An error occurred' })
};
return response;
}
};
lambda의 cloudWatch 로그를 확인한다.