$30 off During Our Annual Pro Sale. View Details »

AWS Aliasを使った開発生産性向上施策について/infra365 vol03 AWS A...

AWS Aliasを使った開発生産性向上施策について/infra365 vol03 AWS Alias_Link and Motivation

【インフラ技術基礎勉強会 #3】
リンクアンドモチベーション登壇資料(2023/06/24)

『AWS Aliasを使った開発生産性向上施策について』

#インフラ技術基礎勉強会 #リンクアンドモチベーション #リンモチ
=============================================
【イベント情報】
■イベントページ
 https://infra365.connpass.com/event/277147/

【株式会社リンクアンドモチベーション】
■お問い合わせ
 [email protected]
■Entrancebook
 https://note.com/lmi/n/n179505e048f4
■テックブログ
 https://link-and-motivation.hatenablog.com/
=============================================

More Decks by リンクアンドモチベーション

Other Decks in Technology

Transcript

  1. 2 © Link and Motivation Group 自己紹介 岸本 直樹(きしもと なおき)

    株式会社リンクアンドモチベーション Developer Productivity Unit SREG @sre_naokishi 2019年入社。2020年からSREとして活動。 ECS移設から開発メトリクス向上Pjtで4keysの一つであ るデプロイ頻度をMiddleからHighへ、生産性の高い組織 へと牽引
  2. 3 © Link and Motivation Group アジェンダ ❏ AWS Aliasを使うにあたっての背景

    ❏ 課題ケース①EC2インスタンスにSSHする運用 ❏ 課題ケース②ECS環境にCodebuildでデプロイ実行する運用 ❏ まとめ ❏ 余談
  3. 5 © Link and Motivation Group AWS Aliasを使うにあたっての背景 ▷顕在化していた課題 開発者A

    AWSにログインせずとも、ローカ ルから叩けるよ! 開発者B AWS上にあるテスト環境へのデプロイす るために用意されてるCodebuild動かす かぁ
  4. 6 © Link and Motivation Group AWS Aliasを使うにあたっての背景 ▷顕在化していた課題 開発者A

    AWSにログインせずとも、ローカ ルから叩けるよ! え!?そんな方法あるの?? 知らなかった!! 開発者B
  5. 7 © Link and Motivation Group AWS Aliasを使うにあたっての背景 ▷顕在化していた課題 開発者A

    AWSにログインせずとも、ローカ ルから叩けるよ! え!?そんな方法あるの?? 知らなかった!! 開発者B AWSの操作に関して 開発者全員が生産性高い状態を標準化したい
  6. 9 © Link and Motivation Group AWS Aliasを使うにあたっての背景 ▷標準化するのにあたっての要件 導入が容易であること

    要件 自由にカスタマイズができること AWSと親和性が高いこと AWS Aliasが要件を満たす
  7. 10 © Link and Motivation Group AWS Aliasとは? aws cliが使えれば、セットアップが容易

    bashスクリプトでエイリアスが作成できる └ ~/.aws/cli/aliasに記載 $ mkdir -p ~/.aws/cli $ echo '[toplevel]' > ~/.aws/cli/alias test-alias = !f() { aws sns publish --message "${1}" --phone-number ${2} }; f 頻繁に使用するコマンドやスクリプトを短縮するために AWS Command Line Interface (AWS CLI) で作成できるショートカット
  8. 15 © Link and Motivation Group EC2サーバーに入るためには踏み台サーバーを経由 各サーバーのIPを特定するために、AWSアカウント にログインし、該当IPを検索してSSH どういう課題か

    ssh ec2-user@${インスタンスのIP} -i ~/.ssh/key コマンド: 生産性が低いことが当たり前になっていた!! 踏み台サーバーのなかにAWS Aliasを導入し SSHを自動化
  9. 17 © Link and Motivation Group 実際に作成したもの ssh-instance = !f()

    { read -p "SSHしたいEC2インスタンス名を入力してください(曖昧検索されます):" INSTANCE_NAME instance_list=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=*$INSTANCE_NAME*" "Name=instance-state- name,Values=running" | jq -r .Reservations[].Instances[].Tags[].Value) echo "SSHしたいインスタンスの番号を選択してください" select instance in $instance_list do instance_name=$instance break done instance_ip=$(aws get-instance-ip $instance_name) ssh ec2-user@${instance_ip} -i ~/.ssh/key }; f
  10. 18 © Link and Motivation Group 実際に作成したもの ssh-instance = !f()

    { read -p "SSHしたいEC2インスタンス名を入力してください(曖昧検索されます):" INSTANCE_NAME instance_list=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=*$INSTANCE_NAME*" "Name=instance- state-name,Values=running" | jq -r .Reservations[].Instances[].Tags[].Value) echo "SSHしたいインスタンスの番号を選択してください" select instance in $instance_list do instance_name=$instance break done echo "どちらのユーザーでSSHしますか?" select user in mcs2-user ec2-user do login_user=$user break done instance_ip=$(aws get-instance-ip $instance_name) ssh ${login_user}@${instance_ip} -i ~/.ssh/dev-ap-login-key.pem }; f 少しの工夫でトイルを月6時間ほどの時間削減 (1日にECSを使う開発者:6人×前の方法でSSHするのにかかる時間: 2min)
  11. 23 © Link and Motivation Group どういう課題か ECS環境で自分のブランチをテストしたい時 毎回、AWSに入り、環境変数のセット、もしくは自 分が一度起動したCodebuildの実行履歴を探し、再実

    行する必要がある コミット変更するたびに、AWSコンソールを開いて 環境変数のセットという作業が当たり前になっていた ローカルにCodebuild実行用のAWS Aliasを登録してもらい 無駄な思考・時間を削減
  12. 25 © Link and Motivation Group 実際に作成したもの deploy-ecs = !f()

    { read -p "環境名を検索します。検索したい環境名を記入して下さい:" search_text stack_name_list=$(aws ecs list-clusters | jq -r '.clusterArns[]|select(contains('¥"${search_text}¥"'))' | grep web | aw k -F'/' '{print $2}' |awk '{sub("-blue.*", "");print $0;}')$ echo "deployしたい環境名を指定して下さい" select stack in $stack_name_list do stack_name=$stack break done echo "${stack_name}を選択しました" read -p "デプロイしたいブランチ名を指定して下さい:" git_branch aws codebuild start-build --project-name update-ecs-env --environment-variables-override name=TERRAFORM_COMMAND,value=apply,type=PLAINTEXT name=STACK_NAME,value=${stack_name},type=PLAINTEXT name=PARAMS,value="GIT_BRANCH=${git_branch}", type=PLAINTEXT echo "デプロイ実行しました" }; f
  13. 27 © Link and Motivation Group まとめ Good More 少しの工夫で

    大きく生産性を向上できる • AWSを使う作業系はaliasで簡単に かける • 今までの当たり前だと思っていた トイルが無くなる 個人から全体へ ナレッジの共有する仕組みの運用 • 個人ごとで工夫しているナレッジ を全体に共有し、生産性を向上し ていこうという運用を形骸化しな いようにするのが難しい