AWS Lambda – 소개
AWS Lambda는 서버없이 코드 컴퓨팅을 처리하는 서비스입니다. 서버리스 컴퓨팅이라고합니다. 코드는 S3 버킷에서 파일 추가 / 제거, Amazon DynamoDBtables 업데이트, Amazon Api 게이트웨이의 HTTP 요청 등과 같은 AWS 서비스의 이벤트 응답을 기반으로 실행됩니다.
AWS Lambda 코드는 NodeJS, Java, C #, Python 및 Go로 작성할 수 있습니다. 이 장에서는 AWS 콘솔에서 AWS Lambda 함수를 생성하는 방법에 대해 자세히 설명합니다.
AWS 콘솔
링크에서 AWS 콘솔에 로그인 https://aws.amazon.com/console. 로그인하면 AWS 서비스가 표시되는 화면으로 리디렉션됩니다.

예 : 함수 생성
예제를 통해 AWS 콘솔의 기능을 이해하겠습니다. Lambda (위에 표시됨)를 클릭하면 아래와 같이 함수를 생성하도록 리디렉션됩니다.

딸깍 하는 소리 Create function 버튼과 화면에 다음 세부 정보가 표시됩니다.

기본적으로 옵션은 다음과 같습니다. Author from scratch. 이 옵션을 사용하면 Lambda 코드를 처음부터 작성할 수 있습니다. 다음과 같은 간단한 기능이 있습니다.hello world 메시지.
두 번째 옵션 Blue prints 다음과 같은 세부 사항이 있습니다.

AWS Lambda에서 사용할 수있는 언어로 일부 aws 서비스에 대해 이미 작성된 코드의 세부 정보를 제공합니다. 체크인 할 수있는 서비스에 대해 AWS Lambda 코드를 작성해야하는 경우blue prints 시작하십시오.
세 번째 옵션 Serverless Application Repository AWS Lambda 코드를 배포하는 데 도움이되는 서버리스 애플리케이션 설정이 있습니다.
추가 논의에서는 다음을 사용하여 AWS lambda 함수를 생성하는 첫 번째 옵션에 대해 작업 할 것입니다. Author from scratch.
Lambda 함수를 생성하기 전에 역할, 즉 AWS 서비스 및 AWS Lambda 작업을위한 권한이 필요합니다. 나중에 역할을 aws lambda 함수에 할당해야합니다.
AWS 콘솔에서 역할 생성
AWS 콘솔에서 역할을 생성하려면 AWS 콘솔 서비스로 이동하여 아래와 같이 IAM을 클릭합니다.

이제 클릭하면 IAM, 다음과 같은 화면이 나타납니다-

선택하면 Roles, 화면에서 다음 버튼을 볼 수 있습니다-

이제 Create role. 생성 된 역할을 사용해야하는 서비스를 선택하라는 메시지가 표시됩니다.

이 역할을 AWS Lambda와 함께 사용해야하므로 Lambda 클릭 Next:Permissions위와 같이 버튼을 누릅니다. 다음 화면에는 AWS 서비스별로 사용 가능한 정책 이름이 표시됩니다. 여기에서 정책을 선택할 수 있습니다-

예를 들어 AWS Lambda가 S3 및 DynamoDB와 함께 작동 할 수있는 권한을 원하는 경우 정책을 선택해야합니다. 검색 상자에 AWS 서비스를 입력하고 확인란을 클릭합니다. 여러 정책을 선택하고 나중에Next:Review.
자신 만의 정책을 만드는 것도 가능합니다. 예를 들어, dynamodb 테이블이 있고 해당 테이블에만 권한을 부여해야합니다. 이러한 경우 정책을 생성 할 수 있습니다.
클릭 Create policy위 화면과 같이 버튼을 누릅니다. 다음은 화면에 표시되는 세부 정보입니다.

선택 Service정책을 생성하고 있습니다. 나중에 Actions에 대한 데이터를 표시합니다.resources 과 Request conditions.

이제 서비스를 선택해야합니다. 선택하자AWS Dynamodb 검색에서. Actions 다음과 같은 세부 사항이 있습니다-

이제 Access levelDynamoDB에 제공하고 싶습니다. 그때,resources 다음 세부 정보가 표시됩니다-

이제 테이블 리소스 유형을 선택합니다. 다음 출력을 볼 수 있습니다-

테이블에 대한 권한을 얻으려면 Add ARN. ARN은 AWS DynamoDB에서 생성 된 테이블에 고유 한 세부 정보입니다. dynamodb에서 테이블이 생성되면 세부 정보를 얻을 수 있습니다.
클릭하면 Add ARN 다음 세부 정보가 표시됩니다.

이제 입력하면 ARN 그리고 Region, Account 과 Table이름이 채워집니다. 클릭해야합니다Add버튼을 눌러 정책을 추가하십시오. 마찬가지로 다른 서비스에 대한 정책을 생성 할 수 있습니다.

여기에서는 두 가지 정책을 선택했습니다. AmazonS3FullAccess 과 AmazonDynamoDBFullACcess. 해당 역할에서 S3 및 DynamoDB에 대한 전체 액세스 권한을 부여했습니다. 그러나 필요한 버킷과 테이블에만 권한을 부여하는 것이 좋습니다.
앞에서 설명한 단계에 따라 다음을 사용하여 정책을 만들 수 있습니다. ARN.
1 단계
딸깍 하는 소리 Create role버튼을 눌러 역할을 만듭니다. 생성 된 모든 역할이 다음과 같이 표시됩니다.

2 단계
생성 된 역할을 수정해야하는 경우 필요한 역할을 선택할 수 있습니다. 우리가 선택하면Author from scratch option, 당신은 입력해야 Name, Runtime and Role.

3 단계
다음 세부 정보를 볼 수 있습니다. Runtime 드롭 다운-

4 단계
원하는 런타임을 선택하고 표시된대로 진행할 수 있습니다.

Role 드롭 다운에는 다음과 같은 옵션이 있습니다.
Choose an existing role − 그러면 IAM 역할에서 생성 된 모든 역할이 표시됩니다.
Create new role from template(s) −이렇게하면 역할을 만들 수 있으며 해당 역할에 대해 선택할 수있는 권한이 표시됩니다. 더 나은 이해를 위해 스크린 샷을 관찰하십시오.
Create a custom role − 이를 통해 사용자는 앞에서 설명한대로 정책을 만들 수 있습니다.
5 단계
선택 runtime, role기능을 추가하십시오. 클릭Create function버튼을 눌러 람다 함수를 만듭니다. 표시되는 다음 화면은 다음과 같습니다.

AWS Lambda 함수의 일부
AWS Lambda 함수에는 두 부분이 있습니다.Configuration 과 Monitoring. 각각에 대해 자세히 논의하겠습니다.
구성
구성에는 다음 기능이 포함됩니다.
Add Triggers
AWS Lambda 함수에 추가하는 데 필요한 트리거는 다음과 같이 표시됩니다.

트리거를 선택할 때 해당 트리거에 대한 구성 세부 정보를 추가해야합니다. 예제 S3 트리거의 경우 버킷 이름을 선택해야합니다. Dynamodb 트리거의 경우 테이블 이름을 선택해야합니다.
예
S3 트리거에 대한 구성 세부 정보의 예를 살펴 보겠습니다.

이제 추가 된 S3 트리거에 대한 구성 세부 정보를 추가합니다.

여기에서 bucket name, event type Lambda, 접두사 및 필터 패턴 (있는 경우)을 트리거하려는 Add 방아쇠.
Lambda에 코드 추가
이제 작성할 Lambda 코드에 집중해야합니다. AWS Lambda에 코드를 추가하려면 세 가지 옵션이 있습니다.
- 인라인 편집기 사용
- .zip 파일 사용
- Amazon S3에서 파일 업로드
아래 스크린 샷에 나와 있습니다.

각각에 대해 자세히 논의하겠습니다.
Using the inline editor
코드를 작성할 수있는 인라인 코드 편집기는 다음과 같습니다.

원하는 언어를 선택하여 코드를 작성할 수 있습니다. 여기서 런타임을 다시 선택할 수 있습니다.
더 나은 이해를 위해 다음 스크린 샷을 참조하십시오.

코드를 작성해야합니다. index.js.Handler. 세부 사항은 런타임에 따라 다릅니다. 에 대한nodejs, 그것은 filename.export function 바로 지금 index.lambda handler.
Upload a .ZIP file
먼저 코드를 작성하고 압축 한 다음 선택하여 zip 파일을 업로드 할 수 있습니다. Upload a .ZIP file.
Upload a file from Amazon S3
S3 버킷에 파일을 업로드하고 옵션을 선택할 수 있습니다. Upload a file from Amazon S3.
참고 .ZIP 과 S3 런타임을 변경할 수 없습니다.
환경 변수
키 값 쌍을 가져와 AWS Lambda 코드와 공유합니다. AWS Lambda의 환경 변수를 사용하여 데이터베이스 연결 세부 정보, 출력 저장과 관련된 파일 세부 정보, 로그 파일 세부 정보 등을 저장할 수 있습니다.

태그
여러 지역에서 사용할 때 함수를 더 잘 구성하기 위해 AWS Lambda에 추가 된 키-값 쌍입니다. 간단한 사용 사례의 경우 필요하지 않습니다. 생성 된 Lambda 함수가 많은 경우 태그 지정은 Lambda 함수를 필터링하고 관리하는 데 도움이됩니다.

실행 역할
Lambda 함수 생성을 시작할 때 제대로 수행하지 않은 경우 여기에서 역할을 다시 변경할 수 있습니다. 여기에서 새 역할을 업데이트하거나 만들 수 있습니다. Lambda 함수 생성을 시작할 때 표시되었던 것과 동일한 옵션을 제공합니다.

기본 설정
여기에 Lambda 함수가 수행하는 작업에 대한 간단한 설명을 입력해야합니다. Lambda 함수에 필요한 메모리와 제한 시간을 선택합니다.

회로망
이를 통해 VPC에서 Lambda 함수에 액세스 할 수있는 VPC를 선택할 수 있습니다. 기본적으로 VPC는 선택되지 않습니다.

디버깅 및 오류 처리
디버깅 및 오류 처리를 위해 세부 정보를 보낼 AWS 서비스를 선택할 수 있습니다. 사용 가능한 옵션은 다음과 같습니다.None, SNS 과 SQS.

동시성
이를 통해이 함수에 허용되는 동시 실행의 특정 제한을 할당 할 수 있습니다.

감사 및 규정 준수
여기에는 AWS CloudTrail의 도움으로 관리되는 로그가 포함됩니다.

완료되면 여기에 표시된대로 저장 버튼을 사용하여 변경 사항을 저장해야합니다.

이제 클릭하면 Test버튼을 누르면 테스트 이벤트를 요청합니다. 다음과 같이 샘플 테스트 이벤트를 전달할 수 있습니다.
생성 된 테스트 이벤트는 다음과 같습니다.

이제 테스트 이벤트를 저장하고 테스트 버튼을 클릭하여 AWS Lambda 함수의 실행을 확인합니다.

코드 index.js 다음과 같습니다-
exports.lambdahandler = (event, context, callback) => {
// TODO implement
console.log(event.key1);
console.log(event.key2);
console.log(event.key3);
callback(null, 'Lambda test');
};
콜백 함수는 오류 또는 성공이있을 때 호출됩니다. 성공하면 볼 수 있습니다Lambda test 표시됩니다.
모니터링
Lambda 함수의 실행 세부 정보를 보려면 모니터링 탭을 선택합니다. 그래프는 실행 시간, 발생한 오류 등에 대한 세부 정보를 보여줍니다.

Cloudwatch에서 로그를 볼 수도 있습니다. 이를 위해 AWS 서비스로 이동하여 다음과 같이 cloudwatch를 선택하십시오.

이제 왼쪽에서 로그를 선택하고 필터에 함수 이름을 입력하십시오.
