チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す - AWS Lambda

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す

このチュートリアルでは、コンソールを使用して Lambda 関数を作成し、Amazon Simple Storage Service (Amazon S3) バケットのトリガーを設定します。Amazon S3 バケットにオブジェクトを追加するたびに、関数が実行され、オブジェクトタイプが Amazon CloudWatch Logs に出力されます。


      Amazon S3 バケット、Lambda 関数、Amazon  CloudWatch Logs 間のデータフローを示す図

Lambda 関数と Amazon S3 トリガーを使用すると、さまざまな種類のファイル処理タスクを実行できます。例えば、Lambda 関数を使用して、画像ファイルが Amazon S3 バケットにアップロードされるたびにサムネイルを作成したり、アップロードされたドキュメントをさまざまな形式に変換したりできます。このチュートリアルを完了したら、「Amazon S3 トリガーを使用してサムネイル画像を作成する」のチュートリアルを試して、画像処理タスクを実行することができます。

このチュートリアルを完了するには、次のステップを実行します。

  1. Amazon S3 バケットを作成する。

  2. Amazon S3 バケット内のオブジェクトのオブジェクトタイプを返す Lambda 関数を作成します。

  3. オブジェクトがバケットにアップロードされたときに関数を呼び出す Lambda トリガーを設定します。

  4. 最初にダミーイベントを使用して関数をテストし、次にトリガーを使用してテストします。

これらのステップを完了することにより、Amazon S3 バケットにオブジェクトが追加されたり、Amazon S3 バケットから削除されたりするたびに実行されるように Lambda 関数を設定する方法を学びます。AWS Management Console のみを使って、このチュートリアルを完了できます。

前提条件

AWS アカウントがない場合は、以下のステップを実行して作成します。

AWS アカウント にサインアップするには
  1. https://portal.aws.amazon.com/billing/signup を開きます。

  2. オンラインの手順に従います。

    サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを使用して検証コードを入力するように求められます。

    AWS アカウントにサインアップすると、AWS アカウントのルートユーザーが作成されます。ルートユーザーには、アカウントのすべての AWS のサービスとリソースへのアクセス権があります。セキュリティのベストプラクティスとして、管理ユーザーに管理アクセスを割り当てルートユーザーアクセスが必要なタスクを実行する場合にのみ、ルートユーザーを使用してください。

サインアップ処理が完了すると、AWS からユーザーに確認メールが送信されます。https://aws.amazon.com/[アカウント] をクリックして、いつでもアカウントの現在のアクティビティを表示し、アカウントを管理することができます。

AWS アカウント にサインアップしたら、AWS アカウントのルートユーザー をセキュリティで保護し、AWS IAM Identity Center を有効にして、管理ユーザーを作成します。これにより、日常的なタスクにルートユーザーを使用しないようにします。

AWS アカウントのルートユーザーをセキュリティで保護する
  1. [ルートユーザー] を選択し、AWS アカウント のメールアドレスを入力して、アカウント所有者として AWS Management Console にサインインします。次のページでパスワードを入力します。

    ルートユーザーを使用してサインインする方法については、「AWS サインイン User Guide」の「Signing in as the root user」を参照してください。

  2. ルートユーザーの多要素認証 (MFA) を有効にします。

    手順については、「IAM ユーザーガイド」の「AWS アカウント のルートユーザーの仮想 MFA デバイスを有効にする (コンソール)」を参照してください。

管理ユーザーを作成する
  1. IAM アイデンティティセンターを有効にします。

    手順については、「AWS IAM Identity Center ユーザーガイド」の「AWS IAM Identity Center の有効化」を参照してください。

  2. IAM アイデンティティセンターで、管理ユーザーに管理者アクセスを付与します。

    IAM アイデンティティセンターディレクトリ をアイデンティティソースとして使用するチュートリアルについては、「AWS IAM Identity Center ユーザーガイド」の「デフォルトの IAM アイデンティティセンターディレクトリ でユーザーアクセスを設定する」を参照してください。

管理ユーザーとしてサインインする
  • IAM アイデンティティセンターのユーザーとしてサインインするには、IAM アイデンティティセンターのユーザーの作成時に E メールアドレスに送信されたサインイン URL を使用します。

    IAM アイデンティティセンターのユーザーを使用してサインインする方法については、「AWS サインイン User Guide」の「Signing in to the AWS access portal」を参照してください。

Amazon S3 バケットを作成する


        Amazon S3 バケットの手順で、バケットを作成しているところを示すチュートリアルのワークフロー図

AWS Management Console を使用して Amazon S3 バケットを初めて作成する

Amazon S3 バケットを作成するには
  1. Amazon S3 コンソールを開き、バケットページを選択します。

  2. [バケットを作成する] を選択します。

  3. [全般設定] で、次の操作を行います。

    1. [バケット名] には、Amazon S3 バケットの命名規則を満たすグローバルに一意な名前を入力します。バケット名は、小文字、数字、ドット (.)、およびハイフン (-) のみで構成できます。

    2. [AWS リージョン] で、リージョンを選択します。チュートリアルの後半では、同じリージョンで Lambda 関数を作成する必要があります。

  4. 他のすべてのオプションはデフォルト設定値のままにしておき、[バケットの作成] を選択します。

テストオブジェクトをバケットにアップロードする


        Amazon S3 バケットの手順で、バケットをアップロードしているところを示すチュートリアルのワークフロー図

チュートリアルの後半では、Lambda コンソールで Lambda 関数をテストします。関数のコードが正しく機能していることを確認するには、Amazon S3 バケットにテストオブジェクトが含まれている必要があります。このオブジェクトには任意のファイルを選択できます (例: HappyFace.jpg)。

テストオブジェクトをアップロードするには
  1. Amazon S3 コンソールのバケットページを開き、前のステップで作成したバケットを選択します。

  2. [アップロード] を選択します。

  3. [ファイルを追加] を選択し、ファイルセレクターを使用してアップロードするオブジェクトを選択します。

  4. [開く][アップロード] の順に選択します。

チュートリアルの後半で関数コードをテストするときは、アップロードしたオブジェクトのファイル名を含むデータを渡すので、ここで書き留めておきます。

許可ポリシーを作成する


        Lambda 関数の手順で、許可ポリシーを作成しているところを示すチュートリアルのワークフロー図

Lambda 関数の実行ロールを作成する前に、必要な AWS リソースにアクセスするための許可を関数に付与する許可ポリシーを作成します。このチュートリアルでは、このポリシーにより、Lambda が Amazon S3 バケットからオブジェクトを取得し、Amazon CloudWatch Logs に書き込むことができます。

ポリシーを作成するには
  1. IAM コンソールのポリシーページを開きます。

  2. [ポリシーの作成] を選択します。

  3. [JSON] タブを選択して、次のカスタムポリシーを JSON エディタに貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::*/*" } ] }
  4. [次へ: タグ] を選択します。

  5. [次へ: レビュー] を選択します。

  6. [ポリシーの確認] でポリシーの [名前] に「s3-trigger-tutorial」と入力します。

  7. [ポリシーの作成] を選択します。

実行ロールを作成する


        Lambda 関数の手順で実行ロールを作成しているところを示すチュートリアルのワークフロー図。

実行ロールとは、AWS サービスとリソースにアクセスする許可を Lambda 関数に付与する AWS Identity and Access Management (IAM) ロールです。関数が Amazon S3 バケットからオブジェクトを取得できるようにするには、前のステップで作成した許可ポリシーをアタッチします。

実行ロールを作成して、カスタム許可ポリシーをアタッチするには
  1. IAM コンソールのロールページを開きます。

  2. [ロールの作成] を選択します。

  3. 信頼されたエンティティには、[AWS サービス] を選択し、ユースケースには [Lambda] を選択します。

  4. [次へ] をクリックします。

  5. ポリシー検索ボックスに、「s3-trigger-tutorial」と入力します。

  6. 検索結果で作成したポリシー (s3-trigger-tutorial) を選択し、[次へ] を選択します。

  7. [ロールの詳細] で [ロール名] に lambda-s3-trigger-role を入力してから、[ロールの作成] を選択します。

Lambda 関数を作成する


        Lambda 関数の手順で、関数を作成しているところを示すチュートリアルのワークフロー図

この例では、Node.js 16.x ランタイムを使用してコンソールで Lambda 関数を作成します。コンソールで作成する関数には、基本的な「Hello World」コードがいくつか含まれています。次のステップでは、これを関数コードに置き換えて、Amazon S3 バケットからオブジェクトを取得します。

Lambda 関数を作成するには
  1. Lambda コンソールの関数ページを開きます。

  2. Amazon S3 バケットを作成したときと同じ AWS リージョン で操作していることを確認してください。画面上部にあるドロップダウンリストを使用して、リージョンを変更できます。

    
            Lambda コンソールのドロップダウンリージョンメニューを示す画像
  3. [関数の作成] を選択します。

  4. [一から作成] を選択します。

  5. [基本的な情報] で、以下を実行します。

    1. [関数名] に s3-trigger-tutorial と入力します。

    2. ランタイムNode.js 16.x を選択します。

    3. [アーキテクチャ] で [x86_64] を選択します。

  6. [デフォルトの実行ロールの変更] タブで、次の操作を行います。

    1. タブを展開し、[既存のロールを使用する] を選択します。

    2. 先ほど作成した lambda-s3-trigger-role を選択します。

  7. [関数の作成] を選択します。

関数コードをデプロイする


        Lambda 関数の手順で、コードをデプロイしていることを示すチュートリアルのワークフロー図

Lambda 関数は、Amazon S3 から受信した event パラメータから、アップロードされたオブジェクトのキー名とバケット名を取得します。次に、関数は AWS SDK for JavaScript の HeadObject API 呼び出しを使用して、アップロードされたオブジェクトのオブジェクトタイプを取得します。

このチュートリアルでは Node.js 16.x ランタイムを使用しますが、他のランタイム用のサンプルコードファイルも提供しています。次のボックスでタブを選択すると、関心のあるランタイムのコードが表示されます。デプロイする JavaScript コードは、 というラベルが付いたタブに表示される最初の例ですJavaScript

.NET
AWS SDK for .NET
注記

については、こちらを参照してください GitHub。サーバーレスサンプルリポジトリで完全な例を検索し、設定および実行の方法を確認してください。

.NET を使用して Lambda で S3 イベントを消費します。

using System.Threading.Tasks; using Amazon.Lambda.Core; using Amazon.S3; using System; using Amazon.Lambda.S3Events; using System.Web; // 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 S3Integration { public class Function { private static AmazonS3Client _s3Client; public Function() : this(null) { } internal Function(AmazonS3Client s3Client) { _s3Client = s3Client ?? new AmazonS3Client(); } public async Task<string> Handler(S3Event evt, ILambdaContext context) { try { if (evt.Records.Count <= 0) { context.Logger.LogLine("Empty S3 Event received"); return string.Empty; } var bucket = evt.Records[0].S3.Bucket.Name; var key = HttpUtility.UrlDecode(evt.Records[0].S3.Object.Key); context.Logger.LogLine($"Request is for {bucket} and {key}"); var objectResult = await _s3Client.GetObjectAsync(bucket, key); context.Logger.LogLine($"Returning {objectResult.Key}"); return objectResult.Key; } catch (Exception e) { context.Logger.LogLine($"Error processing request - {e.Message}"); return string.Empty; } } } }
Go
SDK for Go V2
注記

については、こちらを参照してください GitHub。サーバーレスサンプルリポジトリで完全な例を検索し、設定および実行の方法を確認してください。

Go を使用して Lambda で S3 イベントを消費します。

package main import ( "context" "log" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" ) func handler(ctx context.Context, s3Event events.S3Event) error { sdkConfig, err := config.LoadDefaultConfig(ctx) if err != nil { log.Printf("failed to load default config: %s", err) return err } s3Client := s3.NewFromConfig(sdkConfig) for _, record := range s3Event.Records { bucket := record.S3.Bucket.Name key := record.S3.Object.URLDecodedKey headOutput, err := s3Client.HeadObject(ctx, &s3.HeadObjectInput{ Bucket: &bucket, Key: &key, }) if err != nil { log.Printf("error getting head of object %s/%s: %s", bucket, key, err) return err } log.Printf("successfully retrieved %s/%s of type %s", bucket, key, *headOutput.ContentType) } return nil } func main() { lambda.Start(handler) }
Java
SDK for Java 2.x
注記

については、こちらを参照してください GitHub。サーバーレスサンプルリポジトリで完全な例を検索し、設定および実行の方法を確認してください。

Java を使用して Lambda で S3 イベントを消費します。

package example; import software.amazon.awssdk.services.s3.model.HeadObjectRequest; import software.amazon.awssdk.services.s3.model.HeadObjectResponse; import software.amazon.awssdk.services.s3.S3Client; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.S3Event; import com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification.S3EventNotificationRecord; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Handler implements RequestHandler<S3Event, String> { private static final Logger logger = LoggerFactory.getLogger(Handler.class); @Override public String handleRequest(S3Event s3event, Context context) { try { S3EventNotificationRecord record = s3event.getRecords().get(0); String srcBucket = record.getS3().getBucket().getName(); String srcKey = record.getS3().getObject().getUrlDecodedKey(); S3Client s3Client = S3Client.builder().build(); HeadObjectResponse headObject = getHeadObject(s3Client, srcBucket, srcKey); logger.info("Successfully retrieved " + srcBucket + "/" + srcKey + " of type " + headObject.contentType()); return "Ok"; } catch (Exception e) { throw new RuntimeException(e); } } private HeadObjectResponse getHeadObject(S3Client s3Client, String bucket, String key) { HeadObjectRequest headObjectRequest = HeadObjectRequest.builder() .bucket(bucket) .key(key) .build(); return s3Client.headObject(headObjectRequest); } }
JavaScript
SDK for JavaScript (v2)
注記

については、こちらを参照してください GitHub。サーバーレスサンプルリポジトリで完全な例を検索し、設定および実行の方法を確認してください。

を使用した Lambda での S3 イベントの使用 JavaScript。

const aws = require('aws-sdk'); const s3 = new aws.S3({ apiVersion: '2006-03-01' }); exports.handler = async (event, context) => { // Get the object from the event and show its content type const bucket = event.Records[0].s3.bucket.name; const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' ')); const params = { Bucket: bucket, Key: key, }; try { const { ContentType } = await s3.headObject(params).promise(); console.log('CONTENT TYPE:', ContentType); return ContentType; } catch (err) { console.log(err); const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist and your bucket is in the same region as this function.`; console.log(message); throw new Error(message); } };

を使用した Lambda での S3 イベントの使用 TypeScript。

import { S3Event } from 'aws-lambda'; import { S3Client, HeadObjectCommand } from '@aws-sdk/client-s3'; const s3 = new S3Client({ region: process.env.AWS_REGION }); export const handler = async (event: S3Event): Promise<string | undefined> => { // Get the object from the event and show its content type const bucket = event.Records[0].s3.bucket.name; const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' ')); const params = { Bucket: bucket, Key: key, }; try { const { ContentType } = await s3.send(new HeadObjectCommand(params)); console.log('CONTENT TYPE:', ContentType); return ContentType; } catch (err) { console.log(err); const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist and your bucket is in the same region as this function.`; console.log(message); throw new Error(message); } };
Python
SDK for Python (Boto3)
注記

については、こちらを参照してください GitHub。サーバーレスサンプルリポジトリで完全な例を検索し、設定および実行の方法を確認してください。

Python を使用して Lambda で S3 イベントを消費します。

import json import urllib.parse import boto3 print('Loading function') s3 = boto3.client('s3') def lambda_handler(event, context): #print("Received event: " + json.dumps(event, indent=2)) # Get the object from the event and show its content type bucket = event['Records'][0]['s3']['bucket']['name'] key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') try: response = s3.get_object(Bucket=bucket, Key=key) print("CONTENT TYPE: " + response['ContentType']) return response['ContentType'] except Exception as e: print(e) print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket)) raise e
Rust
SDK for Rust
注記

については、こちらを参照してください GitHub。サーバーレスサンプルリポジトリで完全な例を検索し、設定および実行の方法を確認してください。

Rust を使用して Lambda で S3 イベントを消費します。

use aws_lambda_events::event::s3::S3Event; use aws_sdk_s3::{Client}; use lambda_runtime::{run, service_fn, Error, LambdaEvent}; /// Main function #[tokio::main] async fn main() -> Result<(), Error> { tracing_subscriber::fmt() .with_max_level(tracing::Level::INFO) .with_target(false) .without_time() .init(); // Initialize the AWS SDK for Rust let config = aws_config::load_from_env().await; let s3_client = Client::new(&config); let res = run(service_fn(|request: LambdaEvent<S3Event>| { function_handler(&s3_client, request) })).await; res } async fn function_handler( s3_client: &Client, evt: LambdaEvent<S3Event> ) -> Result<(), Error> { tracing::info!(records = ?evt.payload.records.len(), "Received request from SQS"); if evt.payload.records.len() == 0 { tracing::info!("Empty S3 event received"); } let bucket = evt.payload.records[0].s3.bucket.name.as_ref().expect("Bucket name to exist"); let key = evt.payload.records[0].s3.object.key.as_ref().expect("Object key to exist"); tracing::info!("Request is for {} and object {}", bucket, key); let s3_get_object_result = s3_client .get_object() .bucket(bucket) .key(key) .send() .await; match s3_get_object_result { Ok(_) => tracing::info!("S3 Get Object success, the s3GetObjectResult contains a 'body' property of type ByteStream"), Err(_) => tracing::info!("Failure with S3 Get Object request") } Ok(()) }
関数コードをデプロイするには
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 前のステップで作成した関数を選択します (s3-trigger-tutorial)。

  3. [コード] タブを選択します。

  4. 提供された JavaScript コードをコピーして、コードソースペインの index.js タブに貼り付けます。

  5. [デプロイ] をクリックします。

Amazon S3 トリガーを作成する


        Amazon S3 トリガーの手順で、トリガーを作成しているところを示すチュートリアルのワークフロー図

関数コードをデプロイしたので、関数を呼び出す Amazon S3 トリガーを作成します。

Amazon S3 トリガーを作成するには
  1. 関数のコンソールページの[関数の概要] ペインで、[トリガーを追加] を選択します。

  2. [S3] を選択します。

  3. [バケット]で、前のチュートリアルで作成したバケットを選択します。

  4. [イベントタイプ] で、[すべてのオブジェクト作成イベント] を選択します。オブジェクトが削除されたときに Lambda を呼び出すようにトリガーを設定することもできますが、このチュートリアルではそのオプションは使用しません。

  5. [再帰呼び出し] でチェックボックスを選択して、入力と出力に同じ Amazon S3 バケットを使用することは推奨されないことを確認します。Lambda の再帰呼び出しパターンについて詳しくは、Serverless Land の「Lambda 関数が暴走する原因となる再帰パターン」を参照してください。

  6. [追加] を選択します。

Lambda 関数をダミーイベントでテストする


        テスト手順においてダミーイベントでテストしているところを示すチュートリアルのワークフロー図

Lambda 関数を作成して設定したので、テストする準備ができました。まず、ダミーの Amazon S3 イベントを送信して関数が正しく動作していることを確認することで、関数をテストします。

Lambda 関数をダミーイベントでテストするには
  1. Lambda コンソールページで関数の [コード] タブを選択します。

  2. [コードソース] ペインで、[テスト] を選択します。

  3. [テストイベントの設定] ボックスで、以下の操作を行います。

    1. [イベント名] で、MyTestEvent と入力します。

    2. [テンプレート] で、[S3 Put] を選択します。

    3. Event JSONで、以下の値を置き換えます。

      • us-east-1 をAmazon S3 バケットを作成したリージョンに置き換えます。

      • my-bucket の両方のインスタンスをお使いの Amazon S3 バケットの名前に置き換えます。

      • test%2FKey を前にバケットにアップロードしたテストオブジェクトの名前 (例えば、HappyFace.jpg) に置き換えます。

      { "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "us-east-1", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "my-bucket", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::my-bucket" }, "object": { "key": "test%2Fkey", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }
    4. [保存] を選択します。

  4. [コードソース] ペインで、[テスト] を選択します。

  5. 関数が正常に実行されると、[実行結果] タブに次のような出力が表示されます。

    Response "image/jpeg" Function Logs START RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Version: $LATEST 2021-02-18T21:40:59.280Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO INPUT BUCKET AND KEY: { Bucket: 'my-bucket', Key: 'HappyFace.jpg' } 2021-02-18T21:41:00.215Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO CONTENT TYPE: image/jpeg END RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 REPORT RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Duration: 976.25 ms Billed Duration: 977 ms Memory Size: 128 MB Max Memory Used: 90 MB Init Duration: 430.47 ms Request ID 12b3cae7-5f4e-415e-93e6-416b8f8b66e6

Amazon S3 トリガーを使用して Lambda 関数をテストする


          テスト手順で S3 トリガーを使用してテストしているところを示すチュートリアルのワークフロー図

設定したトリガーで関数をテストするには、コンソールを使用して Amazon S3 バケットにオブジェクトをアップロードします。Lambda 関数が正しく呼び出されたことを確認するには、 CloudWatch Logs を使用して関数の出力を表示します。

オブジェクトを Amazon S3 バケットにアップロードするには
  1. Amazon S3 コンソールのバケットページを開き、前に作成したバケットを選択します。

  2. [Upload(アップロード)] を選択します。

  3. [ファイルを追加] を選択し、ファイルセレクターを使用してアップロードするオブジェクトを選択します。このオブジェクトには任意のファイルを選択できます。

  4. [開く][アップロード] の順に選択します。

CloudWatch Logs を使用して正しいオペレーションを確認するには
  1. CloudWatch コンソールを開きます。

  2. Lambda 関数を作成したところと同じ AWS リージョン で操作していることを確認してください。画面上部にあるドロップダウンリストを使用して、リージョンを変更できます。

    
              Lambda コンソールのドロップダウンリージョンメニューを示す画像
  3. [ログ][ロググループ] の順に選択します。

  4. 関数のロググループの名前を選択します (/aws/lambda/s3-trigger-tutorial) 。

  5. [ログストリーム] から、最新のログストリームを選択します。

  6. Amazon S3 トリガーに応答して関数が正しく呼び出されると、次のような出力が表示されます。表示される CONTENT TYPE は、バケットにアップロードしたファイルのタイプによって異なります。

    2022-05-09T23:17:28.702Z 0cae7f5a-b0af-4c73-8563-a3430333cc10 INFO CONTENT TYPE: image/jpeg

リソースのクリーンアップ

このチュートリアル用に作成したリソースは、保持しない場合は削除できます。使用しなくなった AWS リソースを削除することで、AWS アカウントに請求される料金が発生しないようにできます。

Lambda 関数を削除するには
  1. Lambda コンソールの関数ページを開きます。

  2. 作成した関数を選択します。

  3. [アクション] で、[削除] を選択します。

  4. テキスト入力フィールドに delete と入力し、[削除] を選択します。

実行ロールを削除する
  1. IAM コンソールのロールページを開きます。

  2. 作成した実行ロールを選択します。

  3. [削除] を選択します。

  4. テキスト入力フィールドにロールの名前を入力し、[削除] を選択します。

S3 バケットを削除するには
  1. Amazon S3 コンソールを開きます。

  2. 作成したバケットを選択します。

  3. [削除] を選択します。

  4. テキスト入力フィールドにバケットの名前を入力します。

  5. [バケットを削除] を選択します。

次のステップ

詳細なチュートリアルをお試しください。このチュートリアルでは、Amazon S3 トリガーが関数を呼び出して、バケットにアップロードされる各イメージファイルのサムネイルイメージを作成します。このチュートリアルでは、AWS と Lambda ドメインに関する中級レベルの知識が必要です。AWS Command Line Interface( AWS CLI) を使用してリソースを作成し、関数とその依存関係の .zip ファイルアーカイブデプロイパッケージを作成します。