Shogo's Blog

Aug 21, 2019 - 1 minute read - Comments - perl lambda

AWS Lambda Perl Runtime で AWS X-Ray を使えるようになりました

AWS Lambda 上で Perl を動かす AWS::Lambda で、 AWSの分散アプリケーションの分析サービスである AWS X-Ray をサポートしました!

AWS X-Ray って何? Perl からどう使うの? という人は @fujiwara さんの記事とYAPC::Tokyo 2019での発表スライドをどうぞ。

使ってみる

Perl Runtime だけでなくX-Ray SDK 側でも対応が必要だったので、プルリクエストを送って取り込んでもらいました。 このプルリクエストがマージされた最新の AWS::XRay を Perl Runtime Layer にプリインストールしたので、あなたのアプリケーションですぐに使えます。

例えばこんな感じのコードを書いて、

use utf8;
use warnings;
use strict;
use AWS::XRay qw/ capture /;

sub handle {
    my ($payload, $context) = @_;
    capture "myApp" => sub {
        capture "hogehoge" => sub {
            sleep 1;
        };
        capture "fugafura" => sub {
            my $segment = shift;
            $segment->{metadata} = $payload;
        };
    };
    return +{"hello" => "lambda"};
}

1;

Layer に X-Rayに対応した最新の Perl Runtime arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-30-runtime:3 を追加、 マネージドコンソールの「Debugging and error handling」セクションにある「Enable AWS X-Ray」を有効化し、実行してみます。

トレース結果

どこに時間がかかっているか一目瞭然ですね!

まとめ

AWS::LambdaAWS::XRay を使って、 Perl で書いたコードを AWS Lambda 上で動かし、さらに分散トレーシングができるようになりました。 以前紹介した AWS SDK for Perl Lambda Layer と合わせて、 ぜひ Perl を活用してみてください。

参考文献

関連記事