質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

0回答

845閲覧

AWS Lambdaとして作成したjarをLambda以外から実行したい

curveworks

総合スコア12

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2022/06/08 02:24

現在、Spring Bootで作成したバッチ処理をLambdaから起動することを実装中なのですが、
もし、バッチ処理がLambdaのタイムアウト時間15分以内に終わらなかった場合に備え、
Lambda以外の手段で該当のjarを実行する手段を検討しています。

そこで、Lambdaのコードとして作成しているjarをEC2から起動することを考えているのですが、
試しにWindowsのコマンドプロンプトからjava -jar xxxx.jarとして起動したところ、
Springの起動ログが出力されたあとはそのままプログラムが終わってしまい、
Lambdaから呼ぶときには実行されるexecメソッドが呼ばれませんでした。
このjarの中のexecメソッドをEC2からが呼ぶようにするにはどのように実行したらよいでしょうか。
それ以外の対応策等もあればご教示いただけると幸いです。

<前提>
極力タイムアウトにならないようにプログラムを作りこんだり、
Lambdaのメモリの上限を上げてCPU性能を上げるなどの施策は別途対応とし、ここでの論点の対象外とさせて頂きます。

[Javaのバージョン] Java11
[主な使用フレームワーク] Spring Boot、Spring Cloud Function
[Lambda設定のハンドラ] org.springframework.cloud.function.adapter.aws.FunctionInvoker::handleRequest
[Lambda設定の環境変数] MAIN_CLASS:batch.App
[ビルドツール] Maven
[IDE] eclipse 2021-03 (4.19.0)

Java

1package batch; 2 3import java.util.function.Function; 4 5import javax.inject.Inject; 6 7import org.springframework.boot.SpringApplication; 8import org.springframework.boot.autoconfigure.SpringBootApplication; 9import org.springframework.context.annotation.Bean; 10import org.springframework.context.annotation.ImportResource; 11 12/** 13 * Spring-Cloud-FunctionとAWS Lambdaとのアダプタークラス。 14 */ 15@SpringBootApplication 16@ImportResource("classpath:applicationContext.xml") 17public class App { 18 19 // メインロジック 20 @Inject 21 MainLogic mainLogic; 22 23 public static void main(String[] args) { 24 SpringApplication.run(App.class, args); 25 } 26 27 /** 28 * Spring Cloud Functionにおけるエントリーポイントを作成するBean定義<br> 29 */ 30 @Bean 31 public Function<String, String> exec() { 32 // メインロジックの実装は別クラスへ移管 33 return mainLogic::execute; 34 } 35}

pom.xml

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 <parent> 7 <groupId>batch</groupId> 8 <artifactId>batch-parent</artifactId> 9 <version>1.0.0-SNAPSHOT</version> 10 <relativePath>../batch-parent/pom.xml</relativePath> 11 </parent> 12 <artifactId>batch</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <name>batch</name> 15 <properties> 16 <java.version>11</java.version> 17 <spring-cloud.version>2021.0.0</spring-cloud.version> 18 </properties> 19 <dependencies> 20 <dependency> 21 <groupId>org.springframework.cloud</groupId> 22 <artifactId>spring-cloud-function-context</artifactId> 23 </dependency> 24 25 <!-- Lambdaを利用するためのライブラリ --> 26 <dependency> 27 <groupId>org.springframework.cloud</groupId> 28 <artifactId>spring-cloud-function-adapter-aws</artifactId> 29 </dependency> 30 </dependencies> 31 <dependencyManagement> 32 <dependencies> 33 <dependency> 34 <groupId>org.springframework.cloud</groupId> 35 <artifactId>spring-cloud-dependencies</artifactId> 36 <version>${spring-cloud.version}</version> 37 <type>pom</type> 38 <scope>import</scope> 39 </dependency> 40 </dependencies> 41 </dependencyManagement> 42 43 <!-- Lambdaにおいては1つのjarである必要があるため、shadeプラグインを導入 --> 44 <build> 45 <resources> 46 <resource> 47 <directory>${basedir}/src/main/resources</directory> 48 <filtering>true</filtering> 49 <includes> 50 <include>**/application*.yml</include> 51 <include>**/application*.yaml</include> 52 <include>**/application*.properties</include> 53 </includes> 54 </resource> 55 <resource> 56 <directory>${basedir}/src/main/resources</directory> 57 <excludes> 58 <exclude>**/application*.yml</exclude> 59 <exclude>**/application*.yaml</exclude> 60 <exclude>**/application*.properties</exclude> 61 </excludes> 62 </resource> 63 </resources> 64 <plugins> 65 <plugin> 66 <groupId>org.apache.maven.plugins</groupId> 67 <artifactId>maven-shade-plugin</artifactId> 68 <configuration> 69 <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope> 70 <createDependencyReducedPom>false</createDependencyReducedPom> 71 <shadedArtifactAttached>true</shadedArtifactAttached> 72 <shadedClassifierName>aws</shadedClassifierName> 73 74 <filters> 75 <filter> 76 <artifact>*:*</artifact> 77 <excludes> 78 <exclude>META-INF/*.SF</exclude> 79 <exclude>META-INF/*.DSA</exclude> 80 <exclude>META-INF/*.RSA</exclude> 81 </excludes> 82 </filter> 83 </filters> 84 </configuration> 85 <dependencies> 86 <dependency> 87 <groupId>org.springframework.boot</groupId> 88 <artifactId>spring-boot-maven-plugin</artifactId> 89 <version>2.6.3</version> 90 </dependency> 91 </dependencies> 92 <executions> 93 <execution> 94 <phase>package</phase> 95 <goals> 96 <goal>shade</goal> 97 </goals> 98 <configuration> 99 <transformers> 100 <transformer 101 implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 102 <resource>META-INF/spring.handlers</resource> 103 </transformer> 104 <transformer 105 implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer"> 106 <resource>META-INF/spring.factories</resource> 107 </transformer> 108 <transformer 109 implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 110 <resource>META-INF/spring.schemas</resource> 111 </transformer> 112 <transformer 113 implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> 114 <transformer 115 implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 116 <mainClass>${start-class}</mainClass> 117 </transformer> 118 </transformers> 119 </configuration> 120 </execution> 121 </executions> 122 </plugin> 123 </plugins> 124 </build> 125</project> 126

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問