メニュー
AWS Lambda
開発者ガイド

ステップ 2.1: デプロイパッケージを作成する

デプロイパッケージは、Lambda 関数のコードが含まれている .zip ファイルです。このチュートリアルでは、async ライブラリをインストールする必要があります。これを行うには、コマンドウィンドウを開き、次でコピーして保存するコードファイルを保存するディレクトリに移動します。非同期ライブラリをインストールするには、次に示すように npm を使用します。

npm install async

Node.js

  1. テキストエディターを開き、次のコードをコピーします。

    Copy
    var aws = require('aws-sdk'); var zlib = require('zlib'); var async = require('async'); var EVENT_SOURCE_TO_TRACK = /sns.amazonaws.com/; var EVENT_NAME_TO_TRACK = /CreateTopic/; var DEFAULT_SNS_REGION = 'us-west-2'; var SNS_TOPIC_ARN = 'The ARN of your SNS topic'; var s3 = new aws.S3(); var sns = new aws.SNS({ apiVersion: '2010-03-31', region: DEFAULT_SNS_REGION }); exports.handler = function(event, context, callback) { var srcBucket = event.Records[0].s3.bucket.name; var srcKey = event.Records[0].s3.object.key; async.waterfall([ function fetchLogFromS3(next){ console.log('Fetching compressed log from S3...'); s3.getObject({ Bucket: srcBucket, Key: srcKey }, next); }, function uncompressLog(response, next){ console.log("Uncompressing log..."); zlib.gunzip(response.Body, next); }, function publishNotifications(jsonBuffer, next) { console.log('Filtering log...'); var json = jsonBuffer.toString(); console.log('CloudTrail JSON from S3:', json); var records; try { records = JSON.parse(json); } catch (err) { next('Unable to parse CloudTrail JSON: ' + err); return; } var matchingRecords = records .Records .filter(function(record) { return record.eventSource.match(EVENT_SOURCE_TO_TRACK) && record.eventName.match(EVENT_NAME_TO_TRACK); }); console.log('Publishing ' + matchingRecords.length + ' notification(s) in parallel...'); async.each( matchingRecords, function(record, publishComplete) { console.log('Publishing notification: ', record); sns.publish({ Message: 'Alert... SNS topic created: \n TopicARN=' + record.responseElements.topicArn + '\n\n' + JSON.stringify(record), TopicArn: SNS_TOPIC_ARN }, publishComplete); }, next ); } ], function (err) { if (err) { console.error('Failed to publish notifications: ', err); } else { console.log('Successfully published all notifications.'); } callback(null,"message"); }); };

    注記

    コードサンプルは、Node.js ランタイム v4.3 に準拠しています。詳細については、「プログラミングモデル (Node.js)」を参照してください。

  2. このファイルを CloudTrailEventProcessing.js として保存します。

  3. CloudTrailEventProcessing.js ファイルを CloudTrailEventProcessing.zip という名前で ZIP 圧縮します。

注記

このチュートリアルの例では Node.js を使用していますが、Lambda 関数を Java または Python で記述することもできます。

次のステップ

ステップ 2.2: 実行ロール (IAM ロール) を作成する

このページの内容: