ヤマムギ

growing hard days.

*

AWS Toolkit for EclipseからLambda関数を直接作成できずにMavenでパッケージ化して作成

      2021/08/23

AWS Toolkit for EclipseからLambda関数を直接作成

チュートリアル の作成、アップロード、呼び出し方法 AWS Lambda 機能の手順にそって進めました。

右クリック-[New]-[Other]を選択しました。

[AWS]-[AWS Lambda Java Project]を選択しました。

手順にそって進めます。

プロジェクト作成が完了すると、Readme.htmlにチュートリアルの手順が記載されています。

ここで手順ではコードを書き換えるのですが、handleRequestのパラメータは String input だとエラーになるので、Object inputのままにしました。

/src/test/java – com.example.lambda.demo のHelloTest.javaの21行目のinputを以下に変更しました。

41行目には , を足します。

右クリック – [Debug As] – [JUnit Test]を実行して、Failure Traceに何も表示されなければテストが正常完了です。

右クリック – [AWS Lambda]-[Upload function to AWS Lambda]を選択しました。

手順に沿って進めました。

IAMロールなどLambda関数に必要な設定をEclipseでできるのですね。

そして、Finishを押下したところでエラーです。

エラーと対応(Java8にする)

エラーメッセージは以下です。

Webで検索すると、JDKのバージョンを8にしよう。
とあったので、まず以下2つのファイルを削除しました。

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
/Library/PreferencePane/JavaControlPanel.prefPane

そして、Java SE Development Kit 8 DownloadsからmacOS x64向けのパッケージをダウンロードしてインストールしました。

でも同じエラーが発生しました。

もう少し調べると、[Upload function to AWS Lambda]を使わずにMavenでパッケージ化してデプロイしたらいいじゃないかという結果があったので、Toolkitを使うのは諦めて従うことにしました。

Mavenでパッケージ化してアップロード

プロジェクトを選択して右クリック-[Run As]-[Maven install]を選択しました。

Targetにdemo-1.0.0.jarができたので、マネジメントコンソールで手動で作ったランタイムがJava8のLambda関数にアップロードしました。

テストのパラメータは、テストコードと同じく、”from Lambda”にしました。

テストが成功しました。

現在のLambdaのデフォルトJavaバージョンは11

よくよく考えたら、今のLambdaのデフォルトJavaバージョンは11なんだからローカルのJDKを8じゃなくて11にしないといけないんじゃないかと思いまして。
ローカルのJDKを11をインストールしてやり直しました。

Java SE Development Kit 11 Downloads

これで、念のためプロジェクト作成からやってみます。

結果、同じでした。
そういう問題ではなかったようです。

Eclipseで開発してデプロイするという目的は達成できたのでよしとします。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS

  関連記事

AWS CLIからIAM Identity CenterへサインインしてCodeCommitのリポジトリを使用する

Macで操作しました。 AWS CLIバージョンアップ [crayon-6a9b …

AWS CLIを使用したIAMロールの引き受けコマンドのメモ

よく忘れて調べるのでメモです。 公式のこちらAWS CLI を使用して IAM …

AWS Transit GatewayのVPCアタッチメント

構成 これぐらいの構成なら、VPCピアリングでいいのですが、Transit Ga …

RDSのスナップショットをS3へエクスポートが日本語マネジメントコンソールでもできるようになってました

RDSスナップショットをS3にエクスポートする新機能を試そうかと思ったのときは、 …

RDSインスタンスのストレージをgp2からgp3に変更しました

2022/11/9にRDSでgp3ボリュームが使用できるようになりました。 Am …

Amazon SES, S3で受信したメールをAWS Lambda, SESで別のメールへ転送する

Amazon SESでメール受信で受信したメールを、毎回S3バケットに見に行って …

CloudFormationドリフト検出

CloudFormationスタックのドリフト検出を確認しました。 CloudF …

WordPress W3 Total Cache のDatabaseCacheをAmazon ElastiCacheのmemcachedに格納する

このブログのアーキテクチャは現在こちらです。 データベースは、Amazon Au …

AWS CodeDeployからEC2 Auto Scalingにデプロイするチュートリアル

公式チュートリアルチュートリアル: アプリケーションを CodeDeployグル …

T3.nanoで仮想メモリ割当をユーザーデータで実行する

T3.nanoはメモリがだいたい500MBです。 実行する処理によってはメモリエ …