AWS CDK Lambda Örneği

Photo by Diego PH on Unsplash

AWS CDK Lambda Örneği

·

3 min read

Bu makalede, AWS CDK'nın Go dilini kullanarak AWS Lambda fonksiyonları oluşturma ve konfigürasyonunu gerçekleştirme sürecini ayrıntılı olarak inceleyeceğiz.

Öncelikle, AWS CDK'nın Go dilinde kullanımını başlatabilmek için sisteminizde Go'nun yüklü olması gerekmektedir. Go'yu yükledikten sonra aşağıdaki adımları izleyerek CDK'nın yüklenmesini gerçekleştirebilirsiniz:

  1. Terminalinizi açın ve aşağıdaki komutu girerek CDK'yı yükleyin:
$ go get github.com/aws/aws-cdk-go/awscdk
  1. Ardından, CDK ile çalışmak için AWS CLI'yi yüklemeniz gerekmektedir. AWS CLI'yi yüklemek için aşağıdaki komutu kullanabilirsiniz:
$ pip install awscli

Yüklemeleri tamamladıktan sonra, AWS CDK ve Go kullanarak AWS Lambda fonksiyonlarını oluşturabilirsiniz. Örneğin, aşağıdaki örnekte, basit bir CDK uygulaması oluşturarak bir Lambda fonksiyonunu yapılandıracağız:

package main

import (
    "github.com/aws/aws-cdk-go/awscdk"
    "github.com/aws/aws-cdk-go/awscdk/awsapigateway"
    "github.com/aws/aws-cdk-go/awscdk/awscloudwatch"
    "github.com/aws/aws-cdk-go/awscdk/awslambda"
    "github.com/aws/constructs-go/constructs/v3"
    "github.com/aws/jsii-runtime-go"
)

func main() {
    app := awscdk.NewApp(nil)

    stack := awscdk.NewStack(app, jsii.String("MyLambdaStack"), nil)

    // AWS Lambda Fonksiyonu Oluştur
    lambdaFn := awslambda.NewFunction(stack, jsii.String("MyLambdaFunction"), &awslambda.FunctionProps{
        Code: awslambda.Code_FromAsset(jsii.String("./lambda")), // Lambda kodu, lambda adlı bir klasörde bulunmalıdır
        Runtime: awslambda.Runtime_GO_1_X,                        // Go 1.x sürümü kullanılacaktır
        Handler: jsii.String("index.handler"),                     // Lambda fonksiyonu kök dizinindeki index dosyasında oluşacaktır
    })

    // AWS API Gateway Oluştur ve Lambda ile entegre et
    apigw := awsapigateway.NewRestApi(stack, jsii.String("MyApiGateway"), &awsapigateway.RestApiProps{
        RestApiName: jsii.String("MyApiGateway"),
        DeployOptions: awsapigateway.StageOptions{
            StageName: jsii.String("prod"),
        },
    })

    apigw.Root().AddMethod(jsii.String("GET"), awscdk.NewLambdaIntegration(lambdaFn, nil))

    // AWS CloudWatch ile Lambda'yı izleme
    awslambda.NewAlias(stack, jsii.String("MyLambdaAlias"), &awslambda.AliasProps{
        Version:       lambdaFn.CurrentVersion(),
        AliasName:     jsii.String("prod"),
        AliasVersion:  jsii.String("1"),
        ProvisionedConcurrency: jsii.Number(1),
    })

    awscloudwatch.NewAlarm(stack, jsii.String("MyLambdaAlarm"), &awscloudwatch.AlarmProps{
        AlarmName:          jsii.String("LambdaErrorAlarm"),
        ComparisonOperator: awscloudwatch.ComparisonOperator_GREATER_THAN_THRESHOLD,
        EvaluationPeriods:  jsii.Number(1),
        Threshold:          jsii.Number(0.0),
        Metric:             lambdaFn.MetricErrors(),
    })

    app.Synth(nil)
}

Yukarıdaki örnek, AWS CDK ile Go programlama dilini kullanarak AWS Lambda fonksiyonlarını oluşturmayı ve konfigürasyonunu sağlamayı göstermektedir. Örnekte, bir CDK uygulaması oluşturulduktan sonra bir Lambda fonksiyonu oluşturulur, bir API Gateway ile entegre edilir ve lambda hataları için bir CloudWatch izleme alarmı oluşturulur.

Bu örnek, AWS CDK'nın Go dilini kullanarak nasıl AWS Lambda fonksiyonlarını oluşturabileceğinizi basit bir şekilde göstermektedir.

AWS CDK kullanarak Go dilinde basit bir "Hello World" Lambda uygulaması oluşturmanızı sağlayacak bir örnek:

package main

import (
    "github.com/aws/aws-cdk-go/awscdk"
    "github.com/aws/aws-cdk-go/awscdk/awsapigateway"
    "github.com/aws/aws-cdk-go/awscdk/awslambda"
    "github.com/aws/constructs-go/constructs/v3"
    "github.com/aws/jsii-runtime-go"
)

func main() {
    app := awscdk.NewApp(nil)

    stack := awscdk.NewStack(app, jsii.String("HelloWorldLambdaStack"), nil)

    // "Hello World" Lambda fonksiyonunu oluştur
    lambdaFn := awslambda.NewFunction(stack, jsii.String("HelloWorldLambda"), &awslambda.FunctionProps{
        Code:   awslambda.Code_FromInline(jsii.String("def handler(event, context):\n    return {\n        'statusCode': 200,\n        'body': 'Hello, CDK from Lambda!'\n    }")),
        Runtime: awslambda.Runtime_PYTHON_3_7,
        Handler: jsii.String("index.handler"),
    })

    // API Gateway ile Lambda fonksiyonunu entegre et
    apigw := awsapigateway.NewRestApi(stack, jsii.String("HelloWorldApiGateway"), &awsapigateway.RestApiProps{
        RestApiName: jsii.String("HelloWorldApiGateway"),
    })

    apigw.Root().AddMethod(jsii.String("GET"), awscdk.NewLambdaIntegration(lambdaFn, nil))

    app.Synth(nil)
}

Bu örnekte, "Hello World" mesajını döndürecek olan basit bir Lambda fonksiyonu oluşturduk. AWS CDK, bu Lambda fonksiyonunu bir API Gateway ile entegre ederek dış dünyaya erişilebilir hale getiriyor.

Son olarak, bu örneği çalıştırmak için aşağıdaki adımları izleyin:

  1. Yukarıdaki kodu bir dosyaya yapıştırın (örneğin, main.go).

  2. Terminali açın ve proje dizinine gidin.

  3. Aşağıdaki komutu çalıştırarak AWS CDK'nın derlenmesini sağlayın:

$ go mod tidy
  1. AWS hesabınıza uygun şekilde AWS CLI üzerinden kimlik doğrulamasını sağlayın.

  2. Aşağıdaki komutu çalıştırarak CDK uygulamasını dağıtın:

$ cdk deploy

Bu komut uygulamayı paketleyecek ve AWS hesabınızdaki belirtilen bir bölgeye dağıtacaktır. Dağıtma işlemi tamamlandıktan sonra, bir API Gateway URL'si ve Lambda fonksiyonu hakkında bilgiler alacaksınız.

Bu sayede "Hello, CDK from Lambda!" mesajını dış dünyaya sunan bir API Gateway ve Lambda fonksiyonu oluşturmuş olacaksınız. Bu örnek, AWS CDK'nın Go dilinde nasıl kullanılabileceğini ve basit bir Lambda uygulamasının nasıl oluşturulacağını göstermektedir.