Code Monkey home page Code Monkey logo

aws_sam_java_hands-on's Introduction

AWS SAM Java Hands-on

目的

AWS サーバーレスアプリケーションモデル (AWS SAM) ハンズオン(Java)

前提

ソフトウェア バージョン 備考
java 8
sam 0.3.0
docker 17.06.2
docker-compose 1.21.0
vagrant 2.0.3

構成

  1. 構築
  2. 配置
  3. 運用
  4. 開発

構築

開発用仮想マシンの起動・プロビジョニング

  • Dockerのインストール
  • docker-composeのインストール
  • pipのインストール
vagrant up
vagrant ssh

開発パッケージのインストール

  • aws-sam-cliのインストール
pip install --user aws-sam-cli 
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-zulu

ドキュメント環境構築

cd /vagarnt
sdk list gradle
sdk use gradle 4.9

ドキュメントの生成

gradle asciidoctor
ruby -run -e httpd ./docs t -p 8000

http://192.168.33.10:8000/に接続して確認する

⬆ back to top

配置

AWS認証設定

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 describe-regions

デプロイ用のS3バケットを用意する

aws s3 mb s3://java-hands-on

デプロイを実行する

cd /vagrant/sam-app
sam validate
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 --capabilities CAPABILITY_IAM

デプロイが成功したら動作を確認する

aws cloudformation describe-stacks --stack-name java-hands-on --query 'Stacks[].Outputs[1]'

⬆ back to top

運用

スタックの削除

aws cloudformation delete-stack --stack-name java-hands-on

S3バケットの削除

aws s3 rb s3://java-hands-on --force

### git-secretsの設定
インストール
```bash
cd /home/vagrant
git clone https://github.com/awslabs/git-secrets.git
cd git-secrets/
sudo make install

既存プロジェクトにフックを設定

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.json

⬆ back to top

開発

アプリケーションの作成

cd /vagrant
sam init --runtime java
cd sam-app

ローカルでテストする

cd /vagrant/sam-app
mvn install
mvn test
sam local generate-event api > event_file.json
sam local invoke HelloWorldFunction --event event_file.json
sam local start-api --host 0.0.0.0

http://192.168.33.10:3000/helloに接続して確認する

コードカバレッジのセットアップ

pom.xmlファイルにJaCoCoのレポジトリ情報を追加して以下のコマンドを実行する

mvn install
mvn help:describe -Dplugin=org.jacoco:jacoco-maven-plugin -Ddetail

カバレッジレポートを作る

mvn clean jacoco:prepare-agent test jacoco:report
ruby -run -e httpd ./target/site/jacoco -p 8000

http://192.168.33.10:8000/に接続して確認する

⬆ back to top

参照

aws_sam_java_hands-on's People

Contributors

k2works avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.