最近コードを書かなければいけない状況になってきました。せっかくの機会なので、開発言語を何にしようかと適当に調べながら考えていると、下記に最適な開発言語を選択すればいいのでは?という結論になりました。
- 「Amazon CodeGuru」の利用
- 主な実行環境は「AWS Lambda」
- 開発環境は「AWS Cloud9」
Amazon CodeGuru
一言でいうと下記となります。要はAI(機械学習)に開発のサポートをしてもらう感じだと思います。
Q: Amazon CodeGuru とは何ですか?
Amazon CodeGuru は機械学習を利用したデベロッパーツールで、コードの品質を向上し、アプリケーションの最もコストがかかっているコード行を特定するためのインテリジェントな推奨事項を提供します。
Amazon CodeGuru のよくある質問 – アマゾン ウェブ サービス
さらに、CodeGuruにはReviewerとProfilerの2つのコンポーネントがあります。Reviewerはコード内の重大な問題や見つけにくいバグを特定し、Profilerは実稼働状態のアプリケーションにおいて、コードを改善してコストを節約する方法を推奨してくれます。
当然、任意のアプリケーションに適用できるわけではなく、下記の条件(引用)を満たす必要があります。つまり簡単に言えば、Java言語でアプリケーションを開発する必要があります。
Amazon CodeGuru Reviewer
Q: サポートされているプログラミング言語とソースコードリポジトリを教えてください。
Amazon CodeGuru Reviewer は現在、GitHub、GitHub Enterprise、Bitbucket、および AWS CodeCommit リポジトリに保存されている Java コードをサポートしています。
Amazon CodeGuru のよくある質問 – アマゾン ウェブ サービス
Amazon CodeGuru Profiler
Q: サポートされているプログラミング言語は何ですか?
現在、Amazon CodeGuru Profiler では、Java、Scala、Kotlin 他の、JVM アプリケーションをサポートしています。
Amazon CodeGuru のよくある質問 – アマゾン ウェブ サービス
Lambdaのランタイム
Lambdaのランタイムを調べたところ下記(Java 11 Corretto)を選択することができました。

Amazon Corretto 11
「Amazon Corretto 11」とはAWSが提供する、無料のOpenJDKディストリビューション(Java 11)です。上記のように、LambdaのランタイムにJava(Amazon Corretto 11)が選択できるので、下記で開発環境であるCloud9にも同様のJava(Amazon Corretto 11)をインストールして、Javaで書いたLambdaのコードを、同じランタイムでローカル実行できるようにします。
Cloud9の環境の作成
下記のようにEC2インスタンスは「Amazon Linux」にします。ちなみに、 セキュリティを意識して、「Session Manager」(System Manager)を利用した「No-Ingress EC2」として起動しています。

Java(Amazon Corretto 11)のインストール
Javaのバージョンの確認(インストール前)
すでにJavaはインストール済でしたが、当然「Amazon Corretto 11」ではありません。というか「Java 11」でもありません。
$ java -version
java version "1.7.0_261"
OpenJDK Runtime Environment (amzn-2.6.22.1.83.amzn1-x86_64 u261-b02)
OpenJDK 64-Bit Server VM (build 24.261-b02, mixed mode)Code language: JavaScript (javascript)
Linuxのリリースバージョンの確認
OSも確認しますが、当然「Amazon Linux」です。「Amazon Linux 2」では無いので注意が必要です。(「Amazon Corretto 11」は「Amazon Linux 2」用のパッケージもあります)
$ cat /etc/system-release
Amazon Linux AMI release 2018.03
インストールパッケージの確認
下記が「Amazon Linux」にインストールするパッケージ(RPM) になります。

Java(Amazon Corretto 11)のインストール
「yum」コマンドでインストールします。
$ sudo yum -y localinstall https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm
...Code language: JavaScript (javascript)
Javaのバージョンの確認(インストール後)
「Amazon Corretto 11」になりました。
$ java -version
openjdk version "11.0.8" 2020-07-14 LTS
OpenJDK Runtime Environment Corretto-11.0.8.10.1 (build 11.0.8+10-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.8.10.1 (build 11.0.8+10-LTS, mixed mode)Code language: JavaScript (javascript)
まとめ
ということで、「Amazon CodeGuru」のサポートを受けながら「AWS Lambda」を「AWS Cloud9」でローカル開発(実行)するために「Amazon Corretto 11」をインストールしました。久しぶりのJava開発です!


