Tutorial: Menggunakan AWS Lambda dengan Amazon Simple Notification Service - AWS Lambda

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

Tutorial: Menggunakan AWS Lambda dengan Amazon Simple Notification Service

Dalam tutorial ini, Anda menggunakan fungsi Lambda di satu Akun AWS untuk berlangganan topik Amazon Simple Notification Service SNS (Amazon) yang terpisah. Akun AWS Saat Anda memublikasikan pesan ke SNS topik Amazon, fungsi Lambda Anda akan membaca konten pesan dan mengeluarkannya ke Amazon Logs. CloudWatch Untuk menyelesaikan tutorial ini, Anda menggunakan AWS Command Line Interface (AWS CLI).

SNSTopik Amazon yang terhubung ke fungsi Lambda yang terhubung ke grup CloudWatch log Log

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

  • Di akun A, buat SNS topik Amazon.

  • Di akun B, buat fungsi Lambda yang akan membaca pesan dari topik.

  • Di akun B, buat langganan untuk topik tersebut.

  • Publikasikan pesan ke SNS topik Amazon di akun A dan konfirmasikan bahwa fungsi Lambda di akun B mengeluarkannya ke Log. CloudWatch

Dengan menyelesaikan langkah-langkah ini, Anda akan belajar cara mengonfigurasi SNS topik Amazon untuk menjalankan fungsi Lambda. Anda juga akan mempelajari cara membuat kebijakan AWS Identity and Access Management (IAM) yang memberikan izin untuk sumber daya di sumber lain Akun AWS untuk memanggil Lambda.

Dalam tutorial ini, Anda menggunakan dua hal terpisah Akun AWS. AWS CLI Perintah mengilustrasikan hal ini dengan menggunakan dua profil bernama yang disebut accountA danaccountB, masing-masing dikonfigurasi untuk digunakan dengan yang berbeda Akun AWS. Untuk mempelajari cara mengonfigurasi penggunaan profil yang berbeda, lihat Pengaturan file konfigurasi dan kredensi di Panduan AWS Command Line Interface Pengguna untuk Versi 2. AWS CLI Pastikan untuk mengonfigurasi default yang sama Wilayah AWS untuk kedua profil.

Jika AWS CLI profil yang Anda buat untuk keduanya Akun AWS menggunakan nama yang berbeda, atau jika Anda menggunakan profil default dan satu profil yang diberi nama, ubah AWS CLI perintah di langkah berikut sesuai kebutuhan.

Prasyarat

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

Untuk mendaftar Akun AWS
  1. Buka https://portal.aws.amazon.com/billing/pendaftaran.

  2. Ikuti petunjuk online.

    Bagian dari prosedur pendaftaran melibatkan tindakan menerima panggilan telepon dan memasukkan kode verifikasi di keypad telepon.

    Saat Anda mendaftar untuk sebuah Akun AWS, sebuah Pengguna root akun AWSdibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan tugas yang memerlukan akses pengguna root.

AWS mengirimkan email konfirmasi setelah proses pendaftaran selesai. Anda dapat sewaktu-waktu melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan mengunjungi Akun Saya. https://aws.amazon.com

Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.

Amankan Anda Pengguna root akun AWS
  1. Masuk ke AWS Management Consolesebagai pemilik akun dengan memilih Pengguna root dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi.

    Untuk bantuan masuk dengan menggunakan pengguna root, lihat Masuk sebagai pengguna root di AWS Sign-In Panduan Pengguna.

  2. Aktifkan autentikasi multi-factor (MFA) untuk pengguna root Anda.

    Untuk petunjuk, lihat Mengaktifkan MFA perangkat virtual untuk pengguna Akun AWS root (konsol) Anda di Panduan IAM Pengguna.

Buat pengguna dengan akses administratif
  1. Aktifkan Pusat IAM Identitas.

    Untuk mendapatkan petunjuk, silakan lihat Mengaktifkan AWS IAM Identity Center di Panduan Pengguna AWS IAM Identity Center .

  2. Di Pusat IAM Identitas, berikan akses administratif ke pengguna.

    Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM di Panduan AWS IAM Identity Center Pengguna.

Masuk sebagai pengguna dengan akses administratif
  • Untuk masuk dengan pengguna Pusat IAM Identitas, gunakan login URL yang dikirim ke alamat email saat Anda membuat pengguna Pusat IAM Identitas.

    Untuk bantuan masuk menggunakan pengguna Pusat IAM Identitas, lihat Masuk ke portal AWS akses di Panduan AWS Sign-In Pengguna.

Tetapkan akses ke pengguna tambahan
  1. Di Pusat IAM Identitas, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

    Untuk petunjuknya, lihat Membuat set izin di Panduan AWS IAM Identity Center Pengguna.

  2. Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.

    Untuk petunjuk, lihat Menambahkan grup di Panduan AWS IAM Identity Center Pengguna.

Jika Anda belum menginstal AWS Command Line Interface, ikuti langkah-langkah di Menginstal atau memperbarui versi terbaru AWS CLI untuk menginstalnya.

Tutorial membutuhkan terminal atau shell baris perintah untuk menjalankan perintah. Di Linux dan macOS, gunakan shell dan manajer paket pilihan Anda.

catatan

Di Windows, beberapa CLI perintah Bash yang biasa Anda gunakan dengan Lambda (zipseperti) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan Ubuntu dan Bash versi terintegrasi Windows, instal Windows Subsystem for Linux.

Buat SNS topik Amazon (akun A)

Langkah pertama: Buat SNS topik Amazon
Untuk membuat topik
  • Di akun A, buat topik SNS standar Amazon menggunakan AWS CLI perintah berikut.

    aws sns create-topic --name sns-topic-for-lambda --profile accountA

    Anda akan melihat output seperti yang berikut ini.

    { "TopicArn": "arn:aws:sns:us-west-2:123456789012:sns-topic-for-lambda" }

    Buat catatan dari Amazon Resource Name (ARN) dari topik Anda. Anda akan memerlukannya di tutorial saat menambahkan izin ke fungsi Lambda Anda untuk berlangganan topik.

Buat peran eksekusi fungsi (akun B)

Langkah berikutnya: Buat peran eksekusi

Peran eksekusi adalah IAM peran yang memberikan izin fungsi Lambda untuk Layanan AWS mengakses dan sumber daya. Sebelum membuat fungsi di akun B, Anda membuat peran yang memberikan izin dasar fungsi untuk menulis CloudWatch log ke Log. Kami akan menambahkan izin untuk membaca dari SNS topik Amazon Anda di langkah selanjutnya.

Untuk membuat peran eksekusi
  1. Di akun B buka halaman peran di IAM konsol.

  2. Pilih Buat peran.

  3. Untuk jenis entitas Tepercaya, pilih AWS layanan.

  4. Untuk kasus penggunaan, pilih Lambda.

  5. Pilih Berikutnya.

  6. Tambahkan kebijakan izin dasar ke peran dengan melakukan hal berikut:

    1. Di kotak pencarian Kebijakan izin, masukkanAWSLambdaBasicExecutionRole.

    2. Pilih Berikutnya.

  7. Selesaikan peran dengan melakukan hal berikut ini:

    1. Di bawah Rincian peran, masukkan lambda-sns-role nama Peran.

    2. Pilih Buat peran.

Buat fungsi Lambda (akun B)

Langkah berikutnya: Buat fungsi

Buat fungsi Lambda yang memproses pesan Amazon SNS Anda. Kode fungsi mencatat isi pesan dari setiap catatan ke Amazon CloudWatch Logs.

Tutorial ini menggunakan runtime Node.js 18.x, tetapi kami juga menyediakan kode contoh dalam bahasa runtime lainnya. Anda dapat memilih tab di kotak berikut untuk melihat kode runtime yang Anda minati. JavaScript Kode yang akan Anda gunakan dalam langkah ini adalah pada contoh pertama yang ditunjukkan di JavaScripttab.

.NET
AWS SDK for .NET
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

Mengkonsumsi SNS acara dengan menggunakan Lambda. NET.

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 using Amazon.Lambda.Core; using Amazon.Lambda.SNSEvents; // Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace SnsIntegration; public class Function { public async Task FunctionHandler(SNSEvent evnt, ILambdaContext context) { foreach (var record in evnt.Records) { await ProcessRecordAsync(record, context); } context.Logger.LogInformation("done"); } private async Task ProcessRecordAsync(SNSEvent.SNSRecord record, ILambdaContext context) { try { context.Logger.LogInformation($"Processed record {record.Sns.Message}"); // TODO: Do interesting work based on the new message await Task.CompletedTask; } catch (Exception e) { //You can use Dead Letter Queue to handle failures. By configuring a Lambda DLQ. context.Logger.LogError($"An error occurred"); throw; } } }
Go
SDKuntuk Go V2
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

Mengkonsumsi SNS acara dengan Lambda menggunakan Go.

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package main import ( "context" "fmt" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) func handler(ctx context.Context, snsEvent events.SNSEvent) { for _, record := range snsEvent.Records { processMessage(record) } fmt.Println("done") } func processMessage(record events.SNSEventRecord) { message := record.SNS.Message fmt.Printf("Processed message: %s\n", message) // TODO: Process your record here } func main() { lambda.Start(handler) }
Java
SDKuntuk Java 2.x
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

Mengkonsumsi SNS acara dengan Lambda menggunakan Java.

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.SNSEvent; import com.amazonaws.services.lambda.runtime.events.SNSEvent.SNSRecord; import java.util.Iterator; import java.util.List; public class SNSEventHandler implements RequestHandler<SNSEvent, Boolean> { LambdaLogger logger; @Override public Boolean handleRequest(SNSEvent event, Context context) { logger = context.getLogger(); List<SNSRecord> records = event.getRecords(); if (!records.isEmpty()) { Iterator<SNSRecord> recordsIter = records.iterator(); while (recordsIter.hasNext()) { processRecord(recordsIter.next()); } } return Boolean.TRUE; } public void processRecord(SNSRecord record) { try { String message = record.getSNS().getMessage(); logger.log("message: " + message); } catch (Exception e) { throw new RuntimeException(e); } } }
JavaScript
SDKuntuk JavaScript (v3)
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

Mengkonsumsi SNS acara dengan menggunakan Lambda. JavaScript

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 exports.handler = async (event, context) => { for (const record of event.Records) { await processMessageAsync(record); } console.info("done"); }; async function processMessageAsync(record) { try { const message = JSON.stringify(record.Sns.Message); console.log(`Processed message ${message}`); await Promise.resolve(1); //Placeholder for actual async work } catch (err) { console.error("An error occurred"); throw err; } }

Mengkonsumsi SNS acara dengan menggunakan Lambda. TypeScript

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { SNSEvent, Context, SNSHandler, SNSEventRecord } from "aws-lambda"; export const functionHandler: SNSHandler = async ( event: SNSEvent, context: Context ): Promise<void> => { for (const record of event.Records) { await processMessageAsync(record); } console.info("done"); }; async function processMessageAsync(record: SNSEventRecord): Promise<any> { try { const message: string = JSON.stringify(record.Sns.Message); console.log(`Processed message ${message}`); await Promise.resolve(1); //Placeholder for actual async work } catch (err) { console.error("An error occurred"); throw err; } }
PHP
SDKuntuk PHP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

Mengkonsumsi SNS acara dengan menggunakan Lambda. PHP

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 <?php /* Since native PHP support for AWS Lambda is not available, we are utilizing Bref's PHP functions runtime for AWS Lambda. For more information on Bref's PHP runtime for Lambda, refer to: https://bref.sh/docs/runtimes/function Another approach would be to create a custom runtime. A practical example can be found here: https://aws.amazon.com/blogs/apn/aws-lambda-custom-runtime-for-php-a-practical-example/ */ // Additional composer packages may be required when using Bref or any other PHP functions runtime. // require __DIR__ . '/vendor/autoload.php'; use Bref\Context\Context; use Bref\Event\Sns\SnsEvent; use Bref\Event\Sns\SnsHandler; class Handler extends SnsHandler { public function handleSns(SnsEvent $event, Context $context): void { foreach ($event->getRecords() as $record) { $message = $record->getMessage(); // TODO: Implement your custom processing logic here // Any exception thrown will be logged and the invocation will be marked as failed echo "Processed Message: $message" . PHP_EOL; } } } return new Handler();
Python
SDKuntuk Python (Boto3)
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

Mengkonsumsi SNS acara dengan Lambda menggunakan Python.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 def lambda_handler(event, context): for record in event['Records']: process_message(record) print("done") def process_message(record): try: message = record['Sns']['Message'] print(f"Processed message {message}") # TODO; Process your record here except Exception as e: print("An error occurred") raise e
Ruby
SDKUntuk Ruby
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

Mengkonsumsi SNS acara dengan Lambda menggunakan Ruby.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 def lambda_handler(event:, context:) event['Records'].map { |record| process_message(record) } end def process_message(record) message = record['Sns']['Message'] puts("Processing message: #{message}") rescue StandardError => e puts("Error processing message: #{e}") raise end
Rust
SDKuntuk Rust
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

Mengkonsumsi SNS acara dengan Lambda menggunakan Rust.

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 use aws_lambda_events::event::sns::SnsEvent; use aws_lambda_events::sns::SnsRecord; use lambda_runtime::{run, service_fn, Error, LambdaEvent}; use tracing::info; // Built with the following dependencies: // aws_lambda_events = { version = "0.10.0", default-features = false, features = ["sns"] } // lambda_runtime = "0.8.1" // tokio = { version = "1", features = ["macros"] } // tracing = { version = "0.1", features = ["log"] } // tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt"] } async fn function_handler(event: LambdaEvent<SnsEvent>) -> Result<(), Error> { for event in event.payload.records { process_record(&event)?; } Ok(()) } fn process_record(record: &SnsRecord) -> Result<(), Error> { info!("Processing SNS Message: {}", record.sns.message); // Implement your record handling code here. Ok(()) } #[tokio::main] async fn main() -> Result<(), Error> { tracing_subscriber::fmt() .with_max_level(tracing::Level::INFO) .with_target(false) .without_time() .init(); run(service_fn(function_handler)).await }
Untuk membuat fungsi
  1. Buat direktori untuk proyek, dan kemudian beralih ke direktori itu.

    mkdir sns-tutorial cd sns-tutorial
  2. Salin JavaScript kode sampel ke file baru bernamaindex.js.

  3. Buat paket penyebaran menggunakan zip perintah berikut.

    zip function.zip index.js
  4. Jalankan AWS CLI perintah berikut untuk membuat fungsi Lambda Anda di akun B.

    aws lambda create-function --function-name Function-With-SNS \ --zip-file fileb://function.zip --handler index.handler --runtime nodejs18.x \ --role arn:aws:iam::<AccountB_ID>:role/lambda-sns-role \ --timeout 60 --profile accountB

    Anda akan melihat output seperti yang berikut ini.

    { "FunctionName": "Function-With-SNS", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:Function-With-SNS", "Runtime": "nodejs18.x", "Role": "arn:aws:iam::123456789012:role/lambda_basic_role", "Handler": "index.handler", ... "RuntimeVersionConfig": { "RuntimeVersionArn": "arn:aws:lambda:us-west-2::runtime:7d5f06b69c951da8a48b926ce280a9daf2e8bb1a74fc4a2672580c787d608206" } }
  5. Rekam Amazon Resource Name (ARN) dari fungsi Anda. Anda akan memerlukannya di tutorial saat menambahkan izin untuk mengizinkan Amazon SNS memanggil fungsi Anda.

Tambahkan izin ke fungsi (akun B)

Langkah selanjutnya: Tambahkan izin untuk berfungsi

SNSUntuk Amazon memanggil fungsi Anda, Anda harus memberinya izin dalam pernyataan tentang kebijakan berbasis sumber daya. Anda menambahkan pernyataan ini menggunakan AWS CLI add-permission perintah.

Untuk memberikan SNS izin Amazon untuk menjalankan fungsi Anda
  • Di akun B, jalankan AWS CLI perintah berikut menggunakan SNS topik ARN untuk Amazon yang Anda rekam sebelumnya.

    aws lambda add-permission --function-name Function-With-SNS \ --source-arn arn:aws:sns:us-east-1:<AccountA_ID>:sns-topic-for-lambda \ --statement-id function-with-sns --action "lambda:InvokeFunction" \ --principal sns.amazonaws.com --profile accountB

    Anda akan melihat output seperti yang berikut ini.

    { "Statement": "{\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\": \"arn:aws:sns:us-east-1:<AccountA_ID>:sns-topic-for-lambda\"}}, \"Action\":[\"lambda:InvokeFunction\"], \"Resource\":\"arn:aws:lambda:us-east-1:<AccountB_ID>:function:Function-With-SNS\", \"Effect\":\"Allow\",\"Principal\":{\"Service\":\"sns.amazonaws.com\"}, \"Sid\":\"function-with-sns\"}" }
catatan

Jika akun dengan SNS topik Amazon di-host di opt-in Wilayah AWS, Anda perlu menentukan wilayah di prinsipal. Misalnya, jika Anda bekerja dengan SNS topik Amazon di wilayah Asia Pasifik (Hong Kong), Anda harus menentukan sns.ap-east-1.amazonaws.com bukan sns.amazonaws.com untuk prinsipal.

Berikan izin lintas akun untuk SNS langganan Amazon (akun A)

Langkah berikutnya: Berikan izin lintas akun

Agar fungsi Lambda Anda di akun B berlangganan SNS topik Amazon yang Anda buat di akun A, Anda harus memberikan izin untuk akun B untuk berlangganan topik Anda. Anda memberikan izin ini menggunakan AWS CLI add-permission perintah.

Untuk memberikan izin kepada akun B untuk berlangganan topik
  • Di akun A, jalankan AWS CLI perintah berikut. Gunakan ARN untuk SNS topik Amazon yang Anda rekam sebelumnya.

    aws sns add-permission --label lambda-access --aws-account-id <AccountB_ID> \ --topic-arn arn:aws:sns:us-east-1:<AccountA_ID>:sns-topic-for-lambda \ --action-name Subscribe ListSubscriptionsByTopic --profile accountA

Buat langganan (akun B)

Langkah berikutnya: Buat langganan

Di akun B, Anda sekarang berlangganan fungsi Lambda Anda ke SNS topik Amazon yang Anda buat di awal tutorial di akun A. Saat pesan dikirim ke topik ini (sns-topic-for-lambda), Amazon akan SNS memanggil Function-With-SNS fungsi Lambda Anda di akun B.

Untuk membuat langganan
  • Di akun B, jalankan AWS CLI perintah berikut. Gunakan wilayah default tempat Anda membuat topik dan ARNs untuk topik dan fungsi Lambda Anda.

    aws sns subscribe --protocol lambda \ --region us-east-1 \ --topic-arn arn:aws:sns:us-east-1:<AccountA_ID>:sns-topic-for-lambda \ --notification-endpoint arn:aws:lambda:us-east-1:<AccountB_ID>:function:Function-With-SNS \ --profile accountB

    Anda akan melihat output seperti yang berikut ini.

    { "SubscriptionArn": "arn:aws:sns:us-east-1:<AccountA_ID>:sns-topic-for-lambda:5d906xxxx-7c8x-45dx-a9dx-0484e31c98xx" }

Publikasikan pesan ke topik (akun A dan akun B)

Langkah berikutnya: Publikasikan pesan

Sekarang fungsi Lambda Anda di akun B berlangganan SNS topik Amazon Anda di akun A, saatnya untuk menguji penyiapan Anda dengan menerbitkan pesan ke topik Anda. Untuk mengonfirmasi bahwa Amazon SNS telah memanggil fungsi Lambda Anda, Anda CloudWatch menggunakan Log untuk melihat output fungsi Anda.

Untuk menerbitkan pesan ke topik Anda dan melihat output fungsi Anda
  1. Masukkan Hello World ke dalam file teks dan simpan sebagaimessage.txt.

  2. Dari direktori yang sama tempat Anda menyimpan file teks Anda, jalankan AWS CLI perintah berikut di akun A. Gunakan ARN untuk topik Anda sendiri.

    aws sns publish --message file://message.txt --subject Test \ --topic-arn arn:aws:sns:us-east-1:<AccountA_ID>:sns-topic-for-lambda \ --profile accountA

    Ini akan mengembalikan ID pesan dengan pengidentifikasi unik, yang menunjukkan bahwa Amazon SNS telah menerima pesan tersebut. Amazon SNS kemudian mencoba untuk mengirimkan pesan ke pelanggan topik tersebut. Untuk mengonfirmasi bahwa Amazon SNS telah memanggil fungsi Lambda Anda, CloudWatch gunakan Log untuk melihat output fungsi Anda:

  3. Di akun B, buka halaman Grup log di CloudWatch konsol Amazon.

  4. Pilih kelompok log untuk fungsi Anda (/aws/lambda/Function-With-SNS).

  5. Pilih aliran log terbaru.

  6. Jika fungsi Anda dipanggil dengan benar, Anda akan melihat output yang mirip dengan berikut yang menunjukkan konten pesan yang Anda terbitkan ke topik Anda.

    2023-07-31T21:42:51.250Z c1cba6b8-ade9-4380-aa32-d1a225da0e48 INFO Processed message Hello World 2023-07-31T21:42:51.250Z c1cba6b8-ade9-4380-aa32-d1a225da0e48 INFO done

Bersihkan sumber daya Anda

Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah biaya yang tidak perlu untuk Anda Akun AWS.

Di Akun A, bersihkan SNS topik Amazon Anda.

Untuk menghapus SNS topik Amazon
  1. Buka halaman Topik SNS konsol Amazon.

  2. Pilih topik yang Anda buat.

  3. Pilih Hapus.

  4. Masukkan delete me di bidang input teks.

  5. Pilih Hapus.

Di Akun B, bersihkan peran eksekusi, fungsi Lambda, dan langganan AmazonSNS.

Untuk menghapus peran eksekusi
  1. Buka halaman Peran IAM konsol.

  2. Pilih peran eksekusi yang Anda buat.

  3. Pilih Hapus.

  4. Masukkan nama peran di kolom input teks dan pilih Hapus.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Ketik delete kolom input teks dan pilih Hapus.

Untuk menghapus SNS langganan Amazon
  1. Buka halaman Langganan SNS konsol Amazon.

  2. Pilih langganan yang Anda buat.

  3. Pilih Delete, Delete.