AWS X-RayでAPI Gateway + Lambda + SNSをトレースする
だいぶ前にAPI Gateway + Lambda + DynamoDBでX-Rayを使おうとしたのですが、その当時はDynamoDBの部分が上手く可視化できなかった?ようなことがあり、断念しました。
今は簡単に可視化できるようになっており、ボトルネックを調べたりパフォーマンスを見ることができるようになっているようです。
API Gateway トレースの有効化
API Gatewayでトレースの有効化を行います。
API Gatewayをデプロイした後、ステージエディターで「ログ/トレース」から「X-Rayトレースの有効化」にチェックを入れます。
Lambda トレースの有効化
Lambdaでトレースの有効化を行います。
「アクティブトレース」にチェックを入れて保存します。
SNS トレースの有効化
SNSのマネジメントコンソールでは有効化する設定が見当たりませんが、以下にある通りサポートをしているようです。
Amazon SNS で AWS X-Ray のサポートを追加
開発者ガイドを見ると、aws-xray-sdkモジュールのインストールが必要です。--save
でインストールします。
npm i aws-xray-sdk --save
これでLambdaを以下のように書き換えます。
const AWSXRay = require('aws-xray-sdk'); const aws = AWSXRay.captureAWS(require('aws-sdk')); // aws-sdkをAWSXRay.captureAWSの引数にする const sns = aws.SNS({ apiVersion: '2010-03-31', region: 'ap-southeast-2' }); exports.handler = (event, context, callback) => { sns.publish({ Message : '{"Message":"test"}', Subject : 'title', TopicArn: 'arn:aws:sns:ap-southeast-2:xxxxxxxxxxxx:test' }, function(err, data){ if (err) { console.log(err); context.fail('fail'); } }); callback(null, 'OK'); };
これでAPI Gatewayをデプロイした後にGETでも実行します。そのあとにX-RayのTracesを見てみましょう。
機会があれば、API Gateway + Lambda + PinpointでX-Rayが正常表示されるか試してみたいと思います。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント