AWS'yi Kullanmaya Başlama

Sunucusuz Bir Web Uygulaması Oluşturma

(AWS Lambda, Amazon API Gateway, AWS Amplify, Amazon DynamoDB ve Amazon Cognito ile)

Sunucusuz Bir Web Uygulaması Oluşturma

3. Modül: Sunucusuz Hizmet Arka Ucu

Web uygulamanıza yönelik istekleri ele alma amacıyla bir arka uç işlemi oluşturmak için AWS Lambda ve Amazon DynamoDB kullanacaksınız.

Genel Bakış

Bu modülde, web uygulamanıza yönelik istekleri ele alma amacıyla bir arka uç işlemi oluşturmak için AWS Lambda ve Amazon DynamoDB kullanacaksınız. İlk modülde dağıttığınız tarayıcı uygulaması, kullanıcıların kendi seçtikleri bir yere bir tek boynuzlu at gönderilmesini istemelerini sağlar. Bu istekleri yerine getirmek için tarayıcıda çalışan JavaScript'in bulutta çalışan bir hizmeti çağırması gerekir.

Mimariye Genel Bakış

Mimariye Genel Bakış

Bir kullanıcı tek boynuzlu at istediği her an, çağrılacak bir Lambda işlevi uygulayacaksınız. İşlev filodan bir tek boynuzlu at seçer, isteği bir DynamoDB tablosuna kaydeder ve ardından ön uç uygulamasına gönderilen tek boynuzlu at hakkındaki ayrıntılarla yanıt verir.

Bu işlev Amazon API Gateway kullanılarak tarayıcıdan çağrılır. Bu bağlantıyı bir sonraki modülde uygulayacaksınız. Bu modülde sadece işlevinizi tek başına test edeceksiniz.

 Tamamlama Süresi

30 dakika

 Kullanılan Hizmetler

Uygulama

  • Bir Amazon DynamoDB Tablosu Oluşturma

    Yeni bir DynamoDB tablosu oluşturmak için Amazon DynamoDB konsolunu kullanın. Rides tablonuzu çağırın ve ona Dize türünde RideId adlı bir bölüm anahtarı verin. Tablo adı ve bölüm anahtarı büyük/küçük harfe duyarlıdır. Verilen tam kimlikleri kullandığınızdan emin olun. Diğer tüm ayarlar için varsayılan ayarları kullanın.

    Tabloyu oluşturduktan sonra bir sonraki adımda kullanılacak ARN'yi not edin.

    a. AWS Management Console'da Hizmetler'i ve ardından Veritabanları altında DynamoDB'yi seçin.
    b. Tablo oluştur'u seçin.
    c. Tablo adı için Rides ifadesini girin. Bu alan büyük-küçük harfe duyarlıdır.
    d. Bölüm anahtarı adı için RideId ifadesini girin ve anahtar türü içi Dize'yi seçin. Bu alan büyük-küçük harfe duyarlıdır.
    e. Varsayılan ayarları kullan kutusunu işaretleyin ve Oluştur'u seçin.
    f. Yeni tablonuzun Genel Bakış bölümünün en altına gidin veARN'yi not edin. Bunu bir sonraki bölümde kullanacaksınız.

  • Lambda işleviniz için bir IAM Rolü oluşturun

    Her Lambda fonksiyonunun kendisiyle ilişkili bir IAM rolü vardır. Bu rol, işlevin diğer hangi AWS hizmetleriyle etkileşime girmesine izin verildiğini tanımlar. Bu atölyenin amaçları doğrultusunda, Lambda işlevinize Amazon CloudWatch Logs'a günlük yazmak ve DynamoDB tablonuza öge yazmak için erişim sağlayan bir IAM rolü oluşturmanız gerekir.

    Yeni bir rol oluşturmak için IAM konsolunu kullanın. Onu WildRydesLambda olarak adlandırın ve rol türü için AWS Lambda'yı seçin. Amazon CloudWatch Logs'a yazmak ve öğeleri DynamoDB tablonuza koymak için işlevinize izinler veren politikalar eklemeniz gerekir.

    Gerekli CloudWatch Logs izinlerini vermek için AWSLambdaBasicExecutionRole adlı yönetilen politikayı bu role ekleyin. Ayrıca, rolünüz için bir önceki bölümde oluşturduğunuz tablo için ddb: PutItem eylemine izin veren özel bir satır içi politika oluşturun.

    a. AWS Management Console'dan Hizmetler'e ve ardından Güvenlik, Kimlik ve Uygunluk bölümünde IAM'yi seçin.

    b. Sol gezinme çubuğunda Roller'i ve ardından Yeni Rol Oluştur'u seçin.

    c. AWS hizmeti grubundan rol türü için Lambda'yı seçin, ardından Sonraki: İzinler'e tıklayın.

    Not: Bir rol türünün seçilmesi rolünüz için otomatik olarak AWS hizmetlerinin sizin adınıza bu rolü üstlenmesini sağlayan bir güven politikası oluşturur. Bu rolü CLI, AWS CloudFormation veya başka bir mekanizma kullanarak oluşturuyorsanız doğrudan bir güven politikası belirlersiniz.

    d. Filtre metin kutusuna AWSLambdaBasicExecutionRole yazmaya başlayın ve bu rolün yanındaki kutuyu işaretleyin.

    e. Sonraki Adım'ı seçin.

    f. Rol Adı için WildRydesLambda ifadesini girin.

    g. Rol Oluştur'u seçin.

    h. Roller sayfasındaki filtre kutusuna WildRydesLambda yazın ve az önce oluşturduğunuz rolü seçin.

    i. İzinler sekmesinde, yeni bir satır içi politika oluşturmak için sağ alt köşedeki Satır içi politika ekle bağlantısını seçin.

    j. Bir hizmet seç'i belirleyin.

    k. Hizmet bul etiketli arama kutusuna DynamoDB yazmaya başlayın ve göründüğünde DynamoDB'yi seçin.

    l. Eylemleri seç'i belirleyin.

    m. Filtre eylemleri etiketli arama kutusuna PutItem yazmaya başlayın ve göründüğünde PutItem öğesinin yanındaki kutuyu işaretleyin.

    n. Kaynaklar bölümünü seçin.

    o. Belirli seçeneği seçili durumdaykentablo bölümünde ARN ekle bağlantısını seçin.

    p. Tablo için ARN belirle alanına bir önceki bölümde oluşturduğunuz tablonun ARN'sini yapıştırın ve Ekle'yi seçin.

    q. Politikayı İncele'yi seçin.

    r. Politika adı için DynamoDBWriteAccess ifadesini girin ve Politika oluştur'u seçin.

  • İstekleri İşlemek İçin Lambda İşlevi Oluşturma

    AWS Lambda, HTTP isteği gibi olaylara yanıt olarak kodunuzu çalıştırır. Bu adımda bir tek boynuzlu at göndermek için web uygulamasından API isteklerini işleyecek olan temel işlevi oluşturacaksınız. Bir sonraki modülde kullanıcılarınızın tarayıcılarından çağrılabilecek bir HTTP uç noktasını açığa çıkaracak olan RESTful API oluşturmak için Amazon API Gateway'i kullanacaksınız. Daha sonra web uygulamanız için tamamen işlevsel bir arka uç oluşturmak amacıyla bu adımda oluşturduğunuz Lambda işlevini bu API'ye bağlayacaksınız.

    API isteklerini işleyecek olan RequestUnicorn adlı yeni bir Lambda işlevi oluşturmak için AWS Lambda konsolunu kullanın. İşlev kodunuz için sağlanan requestUnicorn.js örnek uygulamasını kullanın. Bu dosyadan kopyalayın ve AWS Lambda konsolunun düzenleyicisine yapıştırın.

    İşlevinizi bir önceki bölümde oluşturduğunuz WildRydesLambda IAM rolünü kullanacak şekilde yapılandırdığınızdan emin olun.

    a. Hizmetler'i ve ardından İşlem bölümünde Lambda'yı seçin.
    b. İşlev oluştur'a tıklayın.
    c. Varsayılan Sıfırdan yazar kartını seçili bırakın.
    d. Ad alanına RequestUnicorn yazın.
    e. Çalışma Zamanı için Node.js 6.10'u seçin.
    f. Rol açılır listesinden Var olan bir rolü seçin öğesinin seçildiğinden emin olun.
    g. Mevcut Rol açılır listesinden WildRydesLambda'yı seçin.
    h. İşlev oluştur'a tıklayın.
    i. İşlev kodu bölümüne gidin ve index.js kod düzenleyicisindeki mevcut kodu requestUnicorn.js içeriğiyle değiştirin.
    j. Sayfanın sağ üst köşesindeki "Kaydet" seçeneğine tıklayın.

  • Uygulamanızı Doğrulama

    Bu modül için AWS Lambda konsolunu kullanarak oluşturduğunuz işlevi test edeceksiniz. Bir sonraki modülde, ilk modülde dağıttığınız tarayıcı tabanlı uygulamadan işlevinizi çağırabilmeniz için API Gateway ile bir REST API ekleyeceksiniz.

    a. İşlevinizin ana düzenleme ekranından, Bir test olayını seçin... açılır listesinden Test olayını yapılandır'ı seçin.
    b. Yeni test olayı oluştur'u seçili tutun.
    c. Olay adı alanına TestRequestEvent yazın
    d. Aşağıdaki test olayını kopyalayın ve düzenleyiciye yapıştırın:

    {
        "path": "/ride",
        "httpMethod": "POST",
        "headers": {
            "Accept": "*/*",
            "Authorization": "eyJraWQiOiJLTzRVMWZs",
            "content-type": "application/json; charset=UTF-8"
        },
        "queryStringParameters": null,
        "pathParameters": null,
        "requestContext": {
            "authorizer": {
                "claims": {
                    "cognito:username": "the_username"
                }
            }
        },
        "body": "{\"PickupLocation\":{\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}"
    }

    e. Oluştur'a tıklayın.
    f. Ana işlev düzenleme ekranında, açılır listede TestRequestEvent ile Test et'e tıklayın.
    g. Sayfanın en üstüne gidin ve Yürütme sonucu bölümünün Ayrıntılar bölümünü genişletin.
    h. Yürütmenin başarılı olduğunu ve işlev sonucunun aşağıdaki gibi göründüğünü doğrulayın:

    {
        "statusCode": 201,
        "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}",
        "headers": {
            "Access-Control-Allow-Origin": "*"
        }
    }

Bu modül sizin için yararlı oldu mu?

Teşekkür ederiz
Lütfen neleri beğendiğinizi bize iletin.
Close
Sizi hayal kırıklığına uğrattığımız için özür dileriz
Eski, kafa karıştırıcı veya hatalı bir şey mi var? Lütfen geri bildirim sağlayarak bu öğreticiyi iyileştirmemize yardımcı olun.
Close

Bir RESTful API Dağıtma