Menggunakan Lambda dengan infrastruktur sebagai kode (IAc) - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan Lambda dengan infrastruktur sebagai kode (IAc)

Lambda menawarkan beberapa cara untuk menyebarkan kode Anda dan membuat fungsi. Misalnya, Anda dapat menggunakan konsol Lambda atau AWS Command Line Interface (AWS CLI) untuk membuat atau memperbarui fungsi Lambda secara manual. Selain opsi manual ini, AWS menawarkan sejumlah solusi untuk menerapkan fungsi Lambda dan aplikasi tanpa server menggunakan infrastruktur sebagai kode (IAc). Dengan IAc, Anda dapat menyediakan dan memelihara fungsi Lambda dan sumber daya AWS lainnya menggunakan kode alih-alih menggunakan proses dan pengaturan manual.

Sebagian besar waktu, fungsi Lambda tidak berjalan secara terpisah. Sebaliknya, mereka membentuk bagian dari aplikasi tanpa server dengan sumber daya lain seperti database, antrian, dan penyimpanan. Dengan IAc, Anda dapat mengotomatiskan proses penyebaran Anda untuk menyebarkan dan memperbarui seluruh aplikasi tanpa server dengan cepat dan berulang yang melibatkan banyak sumber daya terpisah. AWS Pendekatan ini mempercepat siklus pengembangan Anda, membuat manajemen konfigurasi lebih mudah, dan memastikan bahwa sumber daya Anda digunakan dengan cara yang sama setiap saat.

Alat IAc untuk Lambda

Untuk menyebarkan fungsi Lambda dan aplikasi tanpa server menggunakan IAcAWS, menawarkan sejumlah alat dan layanan yang berbeda.

AWS CloudFormationadalah layanan pertama yang ditawarkan oleh AWS untuk membuat dan mengkonfigurasi sumber daya cloud. DenganAWS CloudFormation, Anda membuat templat teks untuk menentukan infrastruktur dan kode. Ketika AWS diperkenalkan lebih banyak layanan baru dan kompleksitas pembuatan AWS CloudFormation template meningkat, dua alat lebih lanjut dirilis. AWS SAMadalah kerangka kerja berbasis template lain untuk mendefinisikan aplikasi tanpa server. AWS Cloud Development Kit (AWS CDK)Ini adalah pendekatan kode-pertama untuk mendefinisikan dan menyediakan infrastruktur menggunakan konstruksi kode dalam banyak bahasa pemrograman populer.

Dengan keduanya AWS SAM danAWS CDK, AWS CloudFormation beroperasi di belakang layar untuk membangun dan menyebarkan infrastruktur Anda. Diagram berikut menggambarkan hubungan antara alat-alat ini, dan paragraf setelah diagram menjelaskan fitur utama mereka.

Diagram yang menunjukkan bagaimana AWS SAM dan AWS CDK keduanya menyebarkan AWS sumber daya dan kode menggunakanAWS CloudFormation, yang menciptakan tumpukan aplikasi.
  • AWS CloudFormation- Dengan CloudFormation Anda memodelkan dan menyiapkan AWS sumber daya Anda menggunakan template YAMB atau JSON yang menjelaskan sumber daya Anda dan propertinya. CloudFormation menyediakan sumber daya Anda dengan cara yang aman dan berulang, memungkinkan Anda untuk sering membangun infrastruktur dan aplikasi Anda tanpa langkah manual. Saat Anda mengubah konfigurasi, CloudFormation tentukan operasi yang tepat untuk dilakukan untuk memperbarui tumpukan Anda. CloudFormation bahkan dapat memutar kembali perubahan.

  • AWS Serverless Application Model(AWS SAM) - AWS SAM adalah kerangka kerja sumber terbuka untuk mendefinisikan aplikasi tanpa server. AWS SAMtemplate menggunakan sintaks singkatan untuk mendefinisikan fungsi, API, database, dan pemetaan sumber peristiwa hanya dengan beberapa baris teks (YAMB) per sumber daya. Selama penyebaran, AWS SAM mengubah dan memperluas sintaks menjadi AWS SAM sintaks. AWS CloudFormation Karena itu, CloudFormation sintaks apa pun dapat ditambahkan ke AWS SAM template. Ini memberikan AWS SAM semua kekuatan CloudFormation, tetapi dengan garis konfigurasi yang lebih sedikit.

  • AWS Cloud Development Kit (AWS CDK)- DenganAWS CDK, Anda mendefinisikan infrastruktur Anda menggunakan konstruksi kode dan menyediakannya melaluiAWS CloudFormation. AWS CDKmemungkinkan Anda untuk memodelkan infrastruktur aplikasi dengan TypeScript, Python, Java, .NET, dan Go (dalam Pratinjau Pengembang) menggunakan IDE yang ada, alat pengujian, dan pola alur kerja. Anda mendapatkan semua manfaatAWS CloudFormation, termasuk penerapan berulang, rollback yang mudah, dan deteksi drift.

AWSjuga menyediakan layanan yang dipanggil Komposer Aplikasi AWS untuk mengembangkan template IAC menggunakan antarmuka grafis sederhana. Dengan Application Composer, Anda merancang arsitektur aplikasi dengan menyeret, mengelompokkan, dan menghubungkan Layanan AWS dalam kanvas visual. Application Composer kemudian membuat AWS SAM template atau AWS CloudFormation template dari desain Anda yang dapat Anda gunakan untuk menyebarkan aplikasi Anda.

Pada Memulai dengan IAc untuk Lambda bagian di bawah ini, Anda menggunakan Application Composer untuk mengembangkan template untuk aplikasi tanpa server berdasarkan fungsi Lambda yang ada.

Memulai dengan IAc untuk Lambda

Dalam tutorial ini, Anda dapat mulai menggunakan IAc dengan Lambda dengan membuat template dari fungsi Lambda AWS SAM yang ada dan kemudian membangun aplikasi tanpa server di Application Composer dengan menambahkan sumber daya lainnya. AWS

Jika Anda lebih suka memulai dengan melakukan AWS SAM atau AWS CloudFormation tutorial untuk mempelajari cara bekerja dengan template tanpa menggunakan Application Composer, Anda akan menemukan tautan ke sumber daya lain di Langkah selanjutnya bagian di akhir halaman ini.

Saat Anda menjalankan tutorial ini, Anda akan mempelajari beberapa konsep dasar, seperti bagaimana AWS sumber daya ditentukanAWS SAM. Anda juga akan belajar cara menggunakan Application Composer untuk membangun aplikasi tanpa server yang dapat Anda gunakan menggunakan atau. AWS SAM AWS CloudFormation

Untuk menyelesaikan tutorial ini, Anda akan melakukan langkah-langkah berikut:

  • Buat contoh fungsi Lambda

  • Gunakan konsol Lambda untuk melihat AWS SAM template untuk fungsi

  • Ekspor konfigurasi fungsi Anda ke Komposer Aplikasi AWS dan rancang aplikasi tanpa server sederhana berdasarkan konfigurasi fungsi Anda

  • Menyimpan AWS SAM template yang diperbarui yang dapat Anda gunakan sebagai dasar untuk menyebarkan aplikasi tanpa server Anda

Di Langkah selanjutnya bagian ini, Anda akan menemukan sumber daya yang dapat Anda gunakan untuk mempelajari lebih lanjut tentang AWS SAM dan Application Composer. Sumber daya ini mencakup tautan ke tutorial yang lebih canggih yang mengajarkan Anda cara menggunakan aplikasi tanpa server. AWS SAM

Prasyarat

Dalam tutorial ini, Anda menggunakan fitur sinkronisasi lokal Application Composer untuk menyimpan file template dan kode Anda ke mesin build lokal Anda. Untuk menggunakan fitur ini, Anda memerlukan browser yang mendukung File System Access API, yang memungkinkan aplikasi web membaca, menulis, dan menyimpan file di sistem file lokal Anda. Sebaiknya gunakan Google Chrome atau Microsoft Edge. Untuk informasi selengkapnya tentang API Akses Sistem File, lihat Apa itu API Akses Sistem File?

Buat fungsi Lambda

Pada langkah pertama ini, Anda membuat fungsi Lambda yang dapat Anda gunakan untuk menyelesaikan sisa tutorial. Untuk menjaga hal-hal sederhana, Anda menggunakan konsol Lambda untuk membuat fungsi dasar 'Hello world' menggunakan runtime Python 3.11.

Untuk membuat fungsi Lambda 'Hello world' menggunakan konsol
  1. Buka Konsol Lambda.

  2. Pilih Buat fungsi.

  3. Biarkan Penulis dari awal dipilih, dan di bawah Informasi dasar, masukkan LambdaIaCDemo untuk nama Fungsi.

  4. Untuk Runtime, pilih Python 3.11.

  5. Pilih Buat fungsi.

Lihat AWS SAM template untuk fungsi Anda

Sebelum Anda mengekspor konfigurasi fungsi Anda ke Application Composer, gunakan konsol Lambda untuk melihat konfigurasi fungsi Anda saat ini sebagai AWS SAM template. Dengan mengikuti langkah-langkah di bagian ini, Anda akan belajar tentang anatomi AWS SAM template dan cara mendefinisikan sumber daya seperti fungsi Lambda untuk mulai menentukan aplikasi tanpa server.

Untuk melihat AWS SAM template untuk fungsi Anda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang baru saja Anda buat (LambdaIaCDemo).

  3. Di panel Ikhtisar fungsi, pilih Template.

    Di tempat diagram yang mewakili konfigurasi fungsi Anda, Anda akan melihat AWS SAM template untuk fungsi Anda. Template akan terlihat seperti berikut ini.

    # This AWS SAM template has been generated from your function's # configuration. If your function has one or more triggers, note # that the AWS resources associated with these triggers aren't fully # specified in this template and include placeholder values.Open this template # in AWS Application Composer or your favorite IDE and modify # it to specify a serverless application with other AWS resources. AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Specification template describing your function. Resources: LambdaIaCDemo: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout: 3 Handler: lambda_function.lambda_handler Runtime: python3.11 Architectures: - x86_64 EventInvokeConfig: MaximumEventAgeInSeconds: 21600 MaximumRetryAttempts: 2 EphemeralStorage: Size: 512 RuntimeManagementConfig: UpdateRuntimeOn: Auto SnapStart: ApplyOn: None PackageType: Zip Policies: Statement: - Effect: Allow Action: - logs:CreateLogGroup Resource: arn:aws:logs:us-east-1:123456789012:* - Effect: Allow Action: - logs:CreateLogStream - logs:PutLogEvents Resource: - >- arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/LambdaIaCDemo:*

Mari luangkan waktu sejenak untuk melihat template YAMB untuk fungsi Anda dan memahami beberapa konsep kunci.

Template dimulai dengan deklarasiTransform: AWS::Serverless-2016-10-31. Deklarasi ini diperlukan karena di balik layar, AWS SAM template digunakan melaluiAWS CloudFormation. Menggunakan Transform pernyataan mengidentifikasi template sebagai file AWS SAM template.

Setelah Transform deklarasi datang Resources bagian. Di sinilah AWS sumber daya yang ingin Anda terapkan dengan AWS SAM template Anda ditentukan. AWS SAMtemplate dapat berisi kombinasi AWS SAM sumber daya dan sumber AWS CloudFormation daya. Ini karena selama penerapan, AWS SAM templat diperluas ke AWS CloudFormation templat, sehingga AWS CloudFormation sintaks apa pun yang valid dapat ditambahkan ke templat. AWS SAM

Saat ini, hanya ada satu sumber daya yang ditentukan di Resources bagian template, fungsi Lambda Anda. LambdaIaCDemo Untuk menambahkan fungsi Lambda ke AWS SAM template, Anda menggunakan jenis AWS::Serverless::Function sumber daya. Sumber daya fungsi Lambda menentukan runtime fungsi, penangan fungsi, dan opsi konfigurasi lainnya. Properties Jalur ke kode sumber fungsi Anda yang AWS SAM harus digunakan untuk menyebarkan fungsi juga didefinisikan di sini. Untuk mempelajari lebih lanjut tentang sumber daya fungsi LambdaAWS SAM, lihat AWS::Serverless::Functiondi Panduan AWS SAMPengembang.

Selain properti dan konfigurasi fungsi, template juga menentukan kebijakan AWS Identity and Access Management (IAM) untuk fungsi Anda. Kebijakan ini memberikan izin fungsi Anda untuk menulis log ke Amazon CloudWatch Logs. Saat Anda membuat fungsi di konsol Lambda, Lambda secara otomatis melampirkan kebijakan ini ke fungsi Anda. Untuk mempelajari selengkapnya tentang menentukan kebijakan IAM untuk fungsi dalam AWS SAM templat, lihat policies properti di AWS::Serverless::Functionhalaman Panduan AWS SAMPengembang.

Untuk mempelajari lebih lanjut tentang struktur AWS SAM templat, lihat anatomi AWS SAM templat.

Gunakan Komposer Aplikasi AWS untuk mendesain aplikasi tanpa server

Untuk mulai membangun aplikasi tanpa server sederhana menggunakan AWS SAM template fungsi Anda sebagai titik awal, Anda mengekspor konfigurasi fungsi Anda ke Application Composer dan mengaktifkan mode sinkronisasi lokal Application Composer. Sinkronisasi lokal secara otomatis menyimpan kode fungsi dan AWS SAM template Anda ke mesin build lokal Anda dan membuat template tersimpan Anda tetap disinkronkan saat Anda menambahkan AWS sumber daya lain di Application Composer.

Untuk mengekspor fungsi Anda ke Application Composer
  1. Di panel Ikhtisar Fungsi, pilih Ekspor ke Komposer Aplikasi.

    Untuk mengekspor konfigurasi dan kode fungsi Anda ke Application Composer, Lambda membuat bucket Amazon S3 di akun Anda untuk menyimpan sementara data ini.

  2. Di kotak dialog, pilih Konfirmasi dan buat proyek untuk menerima nama default untuk bucket ini dan ekspor konfigurasi dan kode fungsi Anda ke Application Composer.

  3. (Opsional) Untuk memilih nama lain untuk bucket Amazon S3 yang dibuat Lambda, masukkan nama baru dan pilih Konfirmasi dan buat proyek. Nama bucket Amazon S3 harus unik secara global dan mengikuti aturan penamaan bucket.

    Memilih Konfirmasi dan membuat proyek membuka konsol Application Composer. Di kanvas, Anda akan melihat fungsi Lambda Anda.

  4. Dari menu tarik-turun, pilih Aktifkan sinkronisasi lokal.

  5. Di kotak dialog yang terbuka, pilih Pilih folder dan pilih folder di mesin build lokal Anda.

  6. Pilih Aktifkan untuk mengaktifkan sinkronisasi lokal.

Untuk mengekspor fungsi Anda ke Application Composer, Anda memerlukan izin untuk menggunakan tindakan API tertentu. Jika Anda tidak dapat mengekspor fungsi Anda, lihat Izin yang diperlukan dan pastikan Anda memiliki izin yang Anda butuhkan.

catatan

Harga Amazon S3 standar berlaku untuk bucket yang dibuat Lambda saat Anda mengekspor fungsi ke Application Composer. Objek yang dimasukkan Lambda ke dalam bucket secara otomatis dihapus setelah 10 hari, tetapi Lambda tidak menghapus bucket itu sendiri.

Untuk menghindari biaya tambahan yang ditambahkan ke AndaAkun AWS, ikuti petunjuk dalam Menghapus ember setelah Anda mengekspor fungsi Anda ke Application Composer. Untuk informasi selengkapnya tentang bucket Amazon S3 yang dibuat Lambda, lihat. Menggunakan AWS Lambda dengan Komposer Aplikasi AWS

Untuk mendesain aplikasi tanpa server Anda di Application Composer

Setelah mengaktifkan sinkronisasi lokal, perubahan yang Anda buat di Application Composer akan tercermin dalam AWS SAM template yang disimpan di mesin build lokal Anda. Anda sekarang dapat menarik dan melepas AWS sumber daya tambahan ke kanvas Application Composer untuk membangun aplikasi Anda. Dalam contoh ini, Anda menambahkan antrean sederhana Amazon SQS sebagai pemicu fungsi Lambda dan tabel DynamoDB untuk fungsi yang akan menulis data.

  1. Tambahkan pemicu Amazon SQS ke fungsi Lambda Anda dengan melakukan hal berikut:

    1. Di bidang pencarian di palet Sumber Daya, masukkanSQS.

    2. Seret sumber daya SQS Queue ke kanvas Anda dan posisikan di sebelah kiri fungsi Lambda Anda.

    3. Pilih Detail, dan untuk Logical ID masukkanLambdaIaCQueue.

    4. Pilih Simpan.

    5. Hubungkan sumber daya Amazon SQS dan Lambda Anda dengan mengklik port Langganan pada kartu antrian SQS dan menyeretnya ke port sebelah kiri pada kartu fungsi Lambda. Munculnya garis antara dua sumber daya menunjukkan koneksi yang sukses. Application Composer juga menampilkan pesan di bagian bawah kanvas yang menunjukkan bahwa dua sumber daya berhasil terhubung.

  2. Tambahkan tabel Amazon DynamoDB untuk fungsi Lambda Anda untuk menulis data dengan melakukan hal berikut:

    1. Di bidang pencarian di palet Sumber Daya, masukkanDynamoDB.

    2. Seret sumber daya DynamoDB Table ke kanvas Anda dan posisikan di sebelah kanan fungsi Lambda Anda.

    3. Pilih Detail, dan untuk Logical ID masukkanLambdaIaCTable.

    4. Pilih Simpan.

    5. Hubungkan tabel DynamoDB ke fungsi Lambda Anda dengan mengklik port kanan kartu fungsi Lambda dan menyeretnya ke port kiri pada kartu DynamoDB.

Sekarang Anda telah menambahkan sumber daya tambahan ini, mari kita lihat AWS SAM template yang diperbarui Application Composer telah dibuat.

Untuk melihat AWS SAM template Anda yang diperbarui
  • Pada kanvas Application Composer, pilih Template untuk beralih dari tampilan kanvas ke tampilan template.

AWS SAMTemplate Anda sekarang harus berisi sumber daya dan properti tambahan berikut:

  • Antrian Amazon SQS dengan pengenal LambdaIaCQueue

    LambdaIaCQueue: Type: AWS::SQS::Queue Properties: MessageRetentionPeriod: 345600

    Saat Anda menambahkan antrean Amazon SQS menggunakan Application Composer, Application Composer menetapkan properti. MessageRetentionPeriod Anda juga dapat mengatur FifoQueue properti dengan memilih Detail pada kartu SQS Queue dan memeriksa atau menghapus centang antrian Fifo.

    Untuk mengatur properti lain untuk antrian Anda, Anda dapat mengedit template secara manual untuk menambahkannya. Untuk mempelajari lebih lanjut tentang AWS::SQS::Queue sumber daya dan properti yang tersedia, lihat AWS: :SQS: :Queue di Panduan Pengguna. AWS CloudFormation

  • EventsProperti dalam definisi fungsi Lambda Anda yang menentukan antrean Amazon SQS sebagai pemicu fungsi

    Events: LambdaIaCQueue: Type: SQS Properties: Queue: !GetAtt LambdaIaCQueue.Arn BatchSize: 1

    EventsProperti terdiri dari jenis acara dan satu set properti yang bergantung pada jenisnya. Untuk mempelajari tentang perbedaan yang dapat Layanan AWS Anda konfigurasikan untuk memicu fungsi Lambda dan properti yang dapat Anda atur, lihat EventSourcedi Panduan AWS SAMPengembang.

  • Sebuah tabel DynamoDB dengan identifier LambdaIaCTable

    LambdaIaCTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S BillingMode: PAY_PER_REQUEST KeySchema: - AttributeName: id KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES

    Ketika Anda menambahkan tabel DynamoDB menggunakan Application Composer, Anda dapat mengatur kunci tabel Anda dengan memilih Detail pada kartu tabel DynamoDB dan mengedit nilai-nilai kunci. Application Composer juga menetapkan nilai default untuk sejumlah properti lain termasuk BillingMode danStreamViewType.

    Untuk mempelajari lebih lanjut tentang properti ini dan properti lain yang dapat Anda tambahkan ke AWS SAM template Anda, lihat AWS: :DynamoDB: :Table di Panduan Pengguna. AWS CloudFormation

  • Kebijakan IAM baru yang memberikan izin fungsi Anda untuk melakukan operasi CRUD pada tabel DynamoDB yang Anda tambahkan.

    Policies: ... - DynamoDBCrudPolicy: TableName: !Ref LambdaIaCTable

AWS SAMTemplate akhir yang lengkap akan terlihat seperti berikut ini.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Specification template describing your function. Resources: LambdaIaCDemo: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout: 3 Handler: lambda_function.lambda_handler Runtime: python3.11 Architectures: - x86_64 EventInvokeConfig: MaximumEventAgeInSeconds: 21600 MaximumRetryAttempts: 2 EphemeralStorage: Size: 512 RuntimeManagementConfig: UpdateRuntimeOn: Auto SnapStart: ApplyOn: None PackageType: Zip Policies: - Statement: - Effect: Allow Action: - logs:CreateLogGroup Resource: arn:aws:logs:us-east-1:594035263019:* - Effect: Allow Action: - logs:CreateLogStream - logs:PutLogEvents Resource: - arn:aws:logs:us-east-1:594035263019:log-group:/aws/lambda/LambdaIaCDemo:* - DynamoDBCrudPolicy: TableName: !Ref LambdaIaCTable Events: LambdaIaCQueue: Type: SQS Properties: Queue: !GetAtt LambdaIaCQueue.Arn BatchSize: 1 Environment: Variables: LAMBDAIACTABLE_TABLE_NAME: !Ref LambdaIaCTable LAMBDAIACTABLE_TABLE_ARN: !GetAtt LambdaIaCTable.Arn LambdaIaCQueue: Type: AWS::SQS::Queue Properties: MessageRetentionPeriod: 345600 LambdaIaCTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S BillingMode: PAY_PER_REQUEST KeySchema: - AttributeName: id KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES

Terapkan aplikasi tanpa server Anda menggunakan AWS SAM (opsional)

Jika Anda ingin menggunakan AWS SAM untuk menyebarkan aplikasi tanpa server menggunakan template yang baru saja Anda buat di Application Composer, Anda harus menginstal file terlebih dahulu. AWS SAM CLI Untuk melakukan ini, ikuti instruksi di Instalasi AWS SAM CLI.

Sebelum Anda menyebarkan aplikasi Anda, Anda juga perlu memperbarui kode fungsi yang disimpan oleh Application Composer bersama dengan template Anda. Saat ini, lambda_function.py file yang disimpan oleh Application Composer hanya berisi kode dasar 'Hello world' yang disediakan Lambda saat Anda membuat fungsi.

Untuk memperbarui kode fungsi Anda, salin kode berikut dan tempel ke lambda_function.py file Application Composer yang disimpan ke mesin build lokal Anda. Anda menentukan direktori untuk Application Composer untuk menyimpan file ini ketika Anda mengaktifkan mode Local Sync.

Kode ini menerima pasangan nilai kunci dalam pesan dari antrian Amazon SQS yang Anda buat di Application Composer. Jika kedua kunci dan nilai adalah string, kode kemudian menggunakannya untuk menulis item ke tabel DynamoDB didefinisikan dalam template Anda.

import boto3 import os import json # define the DynamoDB table that Lambda will connect to tablename = os.environ['LAMBDAIACTABLE_TABLE_NAME'] # create the DynamoDB resource dynamo = boto3.client('dynamodb') def lambda_handler(event, context): # get the message out of the SQS event message = event['Records'][0]['body'] data = json.loads(message) # write event data to DDB table if check_message_format(data): key = next(iter(data)) value = data[key] dynamo.put_item( TableName=tablename, Item={ 'id': {'S': key}, 'Value': {'S': value} } ) else: raise ValueError("Input data not in the correct format") # check that the event object contains a single key value # pair that can be written to the database def check_message_format(message): if len(message) != 1: return False key, value = next(iter(message.items())) if not (isinstance(key, str) and isinstance(value, str)): return False else: return True
Untuk menerapkan aplikasi tanpa server

Untuk menyebarkan aplikasi Anda menggunakan AWS SAMCLI, lakukan langkah-langkah berikut. Agar fungsi Anda dapat membangun dan menerapkan dengan benar, Python versi 3.11 harus diinstal pada mesin build Anda dan di mesin Anda. PATH

  1. Jalankan perintah berikut dari direktori di mana Application Composer menyimpan lambda_function.py file Anda template.yaml dan.

    sam build

    Perintah ini mengumpulkan artefak build untuk aplikasi Anda dan menempatkannya dalam format dan lokasi yang tepat untuk menerapkannya.

  2. Untuk menerapkan aplikasi Anda dan membuat sumber daya Lambda, Amazon SQS, dan DynamoDB yang ditentukan AWS SAM dalam template Anda, jalankan perintah berikut.

    sam deploy --guided

    Menggunakan --guided tanda berarti itu AWS SAM akan menunjukkan kepada Anda petunjuk untuk memandu Anda melalui proses penerapan. Untuk penerapan ini, terima opsi default dengan menekan Enter.

Selama proses penerapan, AWS SAM buat sumber daya berikut di: Akun AWS

  • Sebuah AWS CloudFormation tumpukan bernama sam-app

  • Fungsi Lambda dengan format nama sam-app-LambdaIaCDemo-99VXPpYQVv1M

  • Antrian Amazon SQS dengan format nama sam-app-LambdaIaCQueue-xL87VeKsGiIo

  • Sebuah tabel DynamoDB dengan format nama sam-app-LambdaIaCTable-CN0S66C0VLNV

AWS SAMjuga membuat peran dan kebijakan IAM yang diperlukan sehingga fungsi Lambda Anda dapat membaca pesan dari antrian Amazon SQS dan melakukan operasi CRUD pada tabel DynamoDB.

Untuk mempelajari lebih lanjut tentang penggunaan AWS SAM untuk menyebarkan aplikasi tanpa server, lihat sumber daya di bagian ini. Langkah selanjutnya

Menguji aplikasi yang Anda gunakan (opsional)

Untuk mengonfirmasi bahwa aplikasi tanpa server Anda diterapkan dengan benar, kirim pesan ke antrian Amazon SQS Anda yang berisi pasangan nilai kunci dan periksa apakah Lambda menulis item ke tabel DynamoDB Anda menggunakan nilai-nilai ini.

Untuk menguji aplikasi tanpa server
  1. Buka halaman Antrian konsol Amazon SQS dan pilih antrian AWS SAM yang dibuat dari template Anda. Namanya memiliki formatsam-app-LambdaIaCQueue-xL87VeKsGiIo.

  2. Pilih Kirim dan terima pesan dan tempelkan JSON berikut ke Isi pesan di bagian Kirim pesan.

    { "myKey": "myValue" }
  3. Pilih Kirim pesan.

    Mengirim pesan ke antrian menyebabkan Lambda memanggil fungsi Anda melalui pemetaan sumber peristiwa yang ditentukan dalam templat Anda. AWS SAM Untuk mengonfirmasi bahwa Lambda telah memanggil fungsi Anda seperti yang diharapkan, konfirmasikan bahwa item telah ditambahkan ke tabel DynamoDB Anda.

  4. Buka halaman Tabel konsol DynamoDB dan pilih tabel Anda. Namanya memiliki formatsam-app-LambdaIaCTable-CN0S66C0VLNV.

  5. Pilih Jelajahi item tabel. Di panel Item yang dikembalikan, Anda akan melihat item dengan id myKey dan NilaimyValue.

Langkah selanjutnya

Untuk mempelajari lebih lanjut tentang menggunakan Application Composer dengan AWS SAM danAWS CloudFormation, mulailah dengan Menggunakan Application Composer dengan AWS CloudFormation dan. AWS SAM

Untuk tutorial terpandu yang digunakan AWS SAM untuk menyebarkan aplikasi tanpa server yang dirancang di Application Composer, kami juga menyarankan Anda melakukan Komposer Aplikasi AWStutorial di Workshop Pola Tanpa Server. AWS

AWS SAMmenyediakan antarmuka baris perintah (CLI) yang dapat Anda gunakan dengan AWS SAM templat dan integrasi pihak ketiga yang didukung untuk membangun dan menjalankan aplikasi tanpa server Anda. Dengan itu AWS SAMCLI, Anda dapat membangun dan menerapkan aplikasi Anda, melakukan pengujian dan debugging lokal, mengonfigurasi pipeline CI/CD, dan banyak lagi. Untuk mempelajari lebih lanjut tentang menggunakan AWS SAMCLI, lihat Memulai AWS SAM di Panduan AWS Serverless Application Model Pengembang.

Untuk mempelajari cara menerapkan aplikasi tanpa server dengan AWS SAM templat menggunakan AWS CloudFormation konsol, mulailah dengan Menggunakan AWS CloudFormation konsol di Panduan Pengguna. AWS CloudFormation

Daerah yang didukung untuk integrasi Lambda dengan Application Composer

Integrasi Lambda dengan Application Composer didukung sebagai berikut: Wilayah AWS

  • AS Timur (N. Virginia)

  • AS Timur (Ohio)

  • AS Barat (California Utara)

  • AS Barat (Oregon)

  • Afrika (Cape Town)

  • Asia Pasifik (Hong Kong)

  • Asia Pasifik (Hyderabad)

  • Asia Pasifik (Jakarta)

  • Asia Pasifik (Melbourne)

  • Asia Pasifik (Mumbai)

  • Asia Pasifik (Osaka)

  • Asia Pasifik (Seoul)

  • Asia Pasifik (Singapura)

  • Asia Pasifik (Sydney)

  • Asia Pasifik (Tokyo)

  • Kanada (Pusat)

  • Eropa (Frankfurt)

  • Eropa (Zurich)

  • Eropa (Irlandia)

  • Europe (London)

  • Eropa (Stockholm)

  • Timur Tengah (UEA)