AWS サーバーレスアプリケーションモデル (AWS SAM) ハンズオン(Java)
| ソフトウェア | バージョン | 備考 |
|---|---|---|
| java | 8 | |
| sam | 0.6.0 | |
| docker | 17.06.2 | |
| docker-compose | 1.21.0 | |
| vagrant | 2.0.3 |
- Dockerのインストール
- docker-composeのインストール
- pipのインストール
vagrant up
vagrant ssh- aws-sam-cliのインストール
pip install --user aws-sam-cli
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.3/install.sh | bash
source ~/.bashrc
curl -s api.sdkman.io | bash
source "/home/vagrant/.sdkman/bin/sdkman-init.sh"
sdk list maven
sdk use maven 3.5.4
sdk list java
sdk use java 8.0.181-zulusdk list gradle
sdk use gradle 4.9ドキュメントのセットアップ
cd /vagrant/
touch build.gradle
build.gradleを作成して以下のコマンドを実行
gradle build
ドキュメントの生成
gradle asciidoctor
gradle livereloadhttp://192.168.33.10:35729/に接続して確認する
cd /vagrant/ops/code_pipline
./create_stack.sh
cd /vagrant/sam-app
cat <<EOF > .env
#!/usr/bin/env bash
export AWS_ACCESS_KEY_ID=xxxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=xxxxxxxxxx
export AWS_DEFAULT_REGION=us-east-1
EOFアクセスキーを設定したら以下の操作をする
source .env
aws ec2
### デプロイ
デプロイ用のS3バケットを用意する
```bash
aws s3 mb s3://java-hands-onデプロイを実行する
cd /vagrant/sam-app
sam validate
mvn compile
sam package --template-file template.yaml --s3-bucket java-hands-on --output-template-file packaged.yaml
sam deploy --template-file packaged.yaml --stack-name java-hands-on-development --capabilities CAPABILITY_IAMデプロイが成功したら動作を確認する
aws cloudformation describe-stacks --stack-name java-hands-on-development --query 'Stacks[].Outputs[1]'パッケージで以下のエラーが出たら次のコマンドを実行する
Unable to upload artifact hello_world/ referenced by CodeUri parameter of HelloWorldFunction resource.
ZIP does not support timestamps before 1980
find . -mtime +10950 -print -exec touch {} \;
aws cloudformation delete-stack --stack-name nodejs-handsonaws s3 rb s3://nodejs-handson --forceインストール
cd /home/vagrant
git clone https://github.com/awslabs/git-secrets.git
cd git-secrets/
make install
cd ..
rm -rf git-secrets/既存プロジェクトにフックを設定
cd /vagrant
git secrets --install拒否条件を設定
git secrets --register-aws --globalレポジトリをスキャンする
cd /vagrant
git secrets --scan -r 許可ルールを追加する
git config --add secrets.allowed sam-app/event_file.jsoncd /vagrant
sam init --runtime java
cd sam-appcd /vagrant/sam-app
mvn install
mvn test
sam local generate-event apigateway aws-proxy > event_file.json
sam local invoke HelloWorldFunction --event event_file.json
sam local start-api --host 0.0.0.0http://192.168.33.10:3000/helloに接続して確認する
pom.xmlファイルにCheckStyleのレポジトリ情報を追加して以下のコマンドを実行する
mvn install
mvn checkstyle:check
pom.xmlファイルにJaCoCoのレポジトリ情報を追加して以下のコマンドを実行する
mvn install
mvn help:describe -Dplugin=org.jacoco:jacoco-maven-plugin -Ddetailカバレッジレポートを作る
mvn clean jacoco:prepare-agent test jacoco:report
cd target/site/jacoco/
python -m SimpleHTTPServer
http://192.168.33.10:8000/に接続して確認する
- Amazon Linux2にDockerをインストールする
- Pythonのパッケージ管理システムpipのインストールと使い方
- Amazon Linux2にDockerをインストールする
- Pythonのパッケージ管理システムpipのインストールと使い方
- aws-sam-local 改め aws-sam-cli の新機能 sam init を試す
- [Java全般]SDKMAN(旧gvm)でJavaやGrvoovyをインストール
- Introduction to CheckStyle
- JaCoCoでJavaのコードカバレッジレポートを作る
- 図入りのAsciiDoc記述からPDFを生成する環境をGradleで簡単に用意する
- クラウド破産しないように git-secrets を使う