好奇心の赴くままに

好奇心の赴くままに

やりたいことを書いています。

JenkinsMasterサーバからJenkinsSlaveサーバにSSH接続してジョブを実行する

以下の本を進めている中でdockercomposeでJenkinsMasterとJenskinsSlaveを立てて、MasterからSlaveにSSH接続するところでつまずいたので、Jenkinに慣れるためにコンテナでなく、EC2サーバを立ててやってみました。

https://www.amazon.co.jp/dp/B07GP1Q3VT/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

目次

ローカル開発環境

Windows10

Jenkins(Master)環境

CentOS7
Java8

Jenkins(Slave)環境

CentOS7
Java8

前提

今回のゴール

MasterからSlaveに接続してSlave側で簡単なジョブを実行できる

f:id:kamada-math:20191231203502p:plain

手順

AWSインフラ構築

f:id:kamada-math:20191231203511p:plain

上記環境を構築する

Jenkinsサーバ(Master)の構築

CentOS7のAMIを選択して、CentOS7サーバを構築する f:id:kamada-math:20191229193903p:plain

※セキュリティグループは以下のように設定する

タイプ プロトコル ポート範囲 ソース 用途
SSH TCP 22 マイIP ローカルからの接続用
カスタムTCP TCP 8080 マイIP ブラウザからのアクセス用

サーバに接続後、サーバにJenkinsをインストールする

$ sudo yum -y install java-1.8.0-openjdk    # 前提環境のインストール
$ sudo curl -o /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo   # Jenkins公式yumレポジトリの追加 
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # Jenkinsインストール時に使用する公開鍵を追加
$ sudo yum install jenkins # Jenkinsのインストール
$ sudo systemctl enable jenkins # 自動起動設定
$ sudo systemctl start jenkins # Jenkinsの起動
$ sudo systemctl status jenkins # 起動及び自動起動確認

※firewalldが有効になっている場合は、別途8080番へのアクセスを許可する必要があるので注意
※EC2ではセキュリティグループでアクセス制限を行う為、firewalldは標準ではインストールされていない

http://(公開IP):8080/」に接続して画面に沿って初期設定を進める

f:id:kamada-math:20191209005536p:plain

この画面まで進めれば完了 f:id:kamada-math:20191209010248p:plain

Jenkinsサーバ(Slave)の構築

Master側と同様にCentOS7のAMIを選択して、CentOS7サーバを構築する f:id:kamada-math:20191229193839p:plain ※セキュリティグループは以下のように設定する

タイプ プロトコル ポート範囲 ソース 用途
SSH TCP 22 マイIP ローカルからの接続用
SSH TCP 22 (Master側のセキュリティグループ) Master側からの接続用

サーバ起動後、SSH接続して、Java環境のインストール
※Masterとの連携のためにSlave側でSlave.jarを実行させる必要がある為。

$ sudo yum -y install java-1.8.0-openjdk    # 前提環境のインストール
$ sudo adduser jenkins  # SSH接続、ジョブ実行用のユーザー作成
$ sudo passwd jenkins  # パスワードを設定
New password:(適当に入力)
Retype new password:(適当に入力)
$ su jenkins # jenkinsユーザーに切り替え
$ mkdir /home/jenkins/jenkins_slave # SlaveのJenkinsワークスペースを作成

SSH接続のための公開鍵・秘密鍵を作成

Jenkinsユーザーのまま以下を実行

$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa  # 公開鍵・秘密鍵を作成
Enter file in which to save the key (/home/jenkins/.ssh/id_rsa):(そのままEnter)
Enter passphrase (empty for no passphrase):(適用に入力)
Enter same passphrase again:(適用に入力)
$ cat id_rsa.pub > ~/.ssh/authorized_keys # 公開鍵の配置
$ chmod 700 ~/.ssh  # ディレクトリの権限変更
$ chmod 600 ~/.ssh/authorized_keys # ファイルの権限変更
$ cat id_rsa # 秘密鍵をクリップボードに保存

Master側でのSlave側をノードとして設定する

http://(公開IP):8080/」に接続して[Jenkinsの管理]→[ノードの管理]を選択して

f:id:kamada-math:20191231173149p:plain f:id:kamada-math:20191231173046p:plain

左側のノードの作成を押下 f:id:kamada-math:20191231173252p:plain ノード名を入力して

f:id:kamada-math:20191231173346p:plain

以下のように入力する

f:id:kamada-math:20191231211019p:plain

追加ボタンを押下後、以下を入力する。 f:id:kamada-math:20191231202707p:plain

ログ確認

上手くいくとこんな感じになる f:id:kamada-math:20191231173824p:plain

ジョブ実行

Jenkinsホーム画面より[新規ジョブ作成]、[フリースタイル・プロジェクトのビルド]を選択

f:id:kamada-math:20191231205353p:plain

[General]→[実行するノードを制限]にチェックし、 ジョブを実行するSlaveノードのラベルを入力 f:id:kamada-math:20191231210722p:plain

[ビルド]→[ビルドの手順]→[ビルド手順の追加]より シェルスクリプトに適当なシェルスクリプトを入力する

f:id:kamada-math:20191231205807p:plain

ジョブ作成後、[ビルド実行]よりジョブを手動で実行すると コンソール出力画面でSlave側でのジョブ実行が確認できる

f:id:kamada-math:20191231210815p:plain

参考

How to Connect to Remote SSH Agents? – CloudBees Support

How to Setup Jenkins Slaves Using Password and Keys

雑感

日本語のページを参照して進めたら、思いのほか情報が古くてはまった。今後は英語サイトを参考に進めたい。

AWS(EC2)上にSpringBootアプリをデプロイする

Herokuといった選択肢もあるけど、せっかくならAWS上に作ったWeb アプリ(ここではSpringBootアプリ)をデプロイしたいよね。ということで、AWSを触ったことのない人でもAWS環境を構築して、デプロイできるように手順を書いてみました。 用語とか、設定値の説明はほとんど書いていないです。とりあえず手を動かしながら、覚えたい人向け。   

目次

開発環境

Window10
Java1.8
Maven
Spring Boot 2.0.4

前提

  • RDB(MySQL)を利用したSpringBootアプリを作成済み
  • mysql-connector-javaをインストール済み
    ※ない場合はpom.xmlに以下を追加してください。
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
</dependency>

今回のゴール

以下AWS環境にSpring Bootアプリをデプロイする

f:id:kamada-math:20191223033003p:plain

手順

AWSインフラ構築

ざっくりとした用語説明

項目 説明
EC2 仮想サーバー
RDS DBサーバ
VPC EC2やRDSを立てるための大枠のアドレス空間
サブネット VPCをさらに分割したアドレス空間
ルートテーブル 各サブネットのパケットの宛先を見て行先を決めるテーブル
パブリックサブネット 0.0.0.0/0 (デフォルトゲートウェイへの通信) がインターネットゲートウェイに流れるような設定
プライベートサブネット 上記以外のサブネット
インターネットゲートウェイ VPC、インターネット間の通信を実現するためのもの
Elastic IP 静的な公開IPアドレス

VPC、サブネットの作成

左上の[サービス]-[VPC]を選択後、[VPCの作成]より以下項目を入力して [作成]ボタンを押下

項目 設定値
名前タグ testapp_vpc(適当に設定)
IPv4 CIDR ブロック 10.0.0.0/16

f:id:kamada-math:20191223064512p:plain

VPC作成後、左上ペインより、 [サブネット]-[サブネットの作成]より以下項目を入力して[作成]ボタンを押下

項目 設定値
名前タグ testapp_public_subnet(適当に設定)
VPC testapp_vpc(先ほど作成したものを選択)
IPv4 CIDR ブロック 10.0.0.0/16
アベイラビリティゾーン ap-northeast-1a
IPv4 CIDR ブロック 10.0.1.0/24

f:id:kamada-math:20191223093910p:plain

同じようにして以下プライベートサブネットも作成

項目 設定値
名前タグ testapp_private_subnet(適当に設定)
VPC testapp_vpc(先ほど作成したものを選択)
IPv4 CIDR ブロック 10.0.0.0/16
アベイラビリティゾーン ap-northeast-1a
IPv4 CIDR ブロック 10.0.2.0/24

f:id:kamada-math:20191223094144p:plain

インターネットゲートウェイ作成及びVPCとの関連付け

左ペインより[インターネットゲートウェイ]-[インターネットゲートウェイの作成]より 以下項目を入力して[作成]ボタンを押下

f:id:kamada-math:20191223094320p:plain

項目 設定値
名前タグ testapp_igw(適当に設定)

作成後、作成したインターネットゲートウェイを選択し、[アクション]-[VPCにアタッチ]より作成したVPCを選び、アタッチボタンを押下

f:id:kamada-math:20191223094739p:plain

ルートテーブルの作成及びサブネットとの関連付け

左ペインより[ルートテーブル]-[ルートテーブルの作成]より 以下項目を入力して[作成]ボタンを押下

項目 設定値
名前タグ testapp_igw(適当に設定)
VPC testapp_vpc(先ほど作成したものを選択)

f:id:kamada-math:20191223094857p:plain

作成後、作成済みのルートテーブルを選択し、下のルートタブから [ルートの編集]を押下し、以下のルートを追加

送信先 ターゲット
0.0.0.0/0 testapp_igw(先ほど作成したインターネットゲートウェイを選択)

f:id:kamada-math:20191223094957p:plain

ルート追加後、作成済みのルートテーブルを選択し、[アクション]-[サブネット関連付けの編集]より
作成した公開サブネット(testapp_public_subnet)を選択し、保存ボタンを押下

EC2の作成

左上の[サービス]-[EC2]を選択後、左ペインより[インスタンス]-[インスタンスの作成]より以下項目を入力して[作成]ボタンを押下

項目 設定値
AMI Amazon Linux2
インスタンスタイプ t2.micro
ネットワーク testapp_vpc(作成したVPCを選択)
サブネット testapp_public subnet

ステップ6:セキュリティグループの設定において以下でセキュリティグループを新規作成する

タイプ プロトコル ポート範囲 ソース 用途
SSH TCP 22 マイIP サーバ接続用
カスタムTCP TCP (SpringBootの接続ポート) 0.0.0.0/0 ブラウザからのアクセス用

ElasticIPの作成及び関連付け

左ペインより[ElasticIP]-[ElasticIPアドレスの割り当て]より [割り当て]ボタンを押下して、ElasticIPを取得する。  

取得後、取得したElasticIPを選択し、[アクション]-[ElasticIPアドレスの割り当て] より作成したEC2インスタンスを選択後、[関連付ける]ボタンを押下

RDSのセキュリティグループの作成

左ペインより[セキュリティグループ]-[セキュリティグループの作成]より 以下項目を入力して、[作成]ボタンを押下。 

項目 設定値
セキュリティグループ名 testapp_rdssg
説明 testapp_rdssg
VPC testapp_vpc(作成したVPC)
タイプ プロトコル ポート範囲 ソース 用途
MySQL/Aurora 3306 (EC2のプライベートIP) DB接続用

RDSの作成

左上の[サービス]-[RDS]を選択後、[VPCの作成]より以下項目を入力して [作成]ボタンを押下

項目 設定値
パラメータグループファミリー MySQL5.7
グループ名 testapp-prgr(適当に設定)
説明 testapp-prgr(適当に設定)

f:id:kamada-math:20191223101907p:plain 作成後、[パラメータグループアクション]-[編集]より以下パラメータを変更(日本語の文字化けを防ぐため)

パラメータ 説明 設定値
character_set_client クライアントの送信する文字コード utf-8
character_set_connection 文字コードの情報がない時の文字コード utf-8
character_set_datebase 参照しているデータベースの文字コード utf-8
character_set_results クライアントへ送信する文字コード utf-8
character_set_server 既定の文字コード utf-8

以下構成でRDSを作成する

項目 設定値
DBエンジン MySQL
バージョン 5.7.22
テンプレート 無料利用枠
DB インスタンス識別子 testapp-rds(適当に設定)
マスターユーザー名 *******(適当に設定)
スターパスワード *******(適当に設定)
インスタンスタイプ t2.micro
VPC testapp_vpc
最初のデータベース名 *******(適当に設定)
セキュリティグループ testapp_rdssg
パラメータグループ testapp_prgr

EC2に接続後、各種インストール

Powershellを開き、EC2にSSH接続する

> ssh -i  "(キーペアのパス)" ec2-user@(公開IP)  # EC2にSSH接続
$ sudo yum update # yumリポジトリアップデート
$ yum install java-1.8.0-openjdk.x86_64   # SpringBootを動かすためのJavaをインストール
$ yum install mysql                                   # MySQLクライアントをインストール

RDSのエンドポイントを確認後、RDSに接続確認

> mysql -h (RDSのエンドポイント ) -P 3306 -u (マスターユーザ名) -p
> 先ほど設定したマスターパスワード入力

環境変数を設定して、SpringBootアプリの接続情報を上書きする

※ 公式リファレンスを見るとapplication.propertiesよりも環境変数のほうが読み込み優先度が高いことがわかる

Spring Boot Reference Documentation

$ vim ~/.bach_profile  # 環境変数の設定
export SPRING_DATASOURCE_URL=jdbc:mysql://(RDSのエンドポイント):3306/(作成したDB名)
export SPRING_DATASOURCE_USERNAME=(設定したマスターユーザー)
export SPRING_DATASOURCE_PASSWORD=(設定したマスターユーザーのパスワード)
export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver

$ source ~/.bash_profile  # 反映

接続確認後、切断

ローカル環境でSpringBootアプリをMavenビルド

> cd (SpringBootアプリのパス)
> mvnw package

EC2上にデプロイ

EC2にsftp接続後、デプロイ

> cd (ビルド後のjarファイルのあるフォルダパス)
> sftp -i  "(キーペアのパス)" ec2-user@(公開IP)
sftp > put (jarファイル)

EC2に接続後、アプリ起動

> ssh -i  "(キーペアのパス)" ec2-user@(公開IP)  # EC2にSSH接続
$ java -jar ~/(jarファイル)

ブラウザからアクセス

http://(公開IPアドレス):(SpringBootの起動ポート番号)/にアクセスして DB接続できているかを確認する

参考

AWS EC2上で Spring Bootアプリ起動 - 闘うITエンジニアの覚え書き

Spring Boot Reference Documentation

Spring-Bootの設定プロパティと環境変数 - Qiita

雑感

AWSコンソール上でやるのはやっぱりしんどいし、手順も面倒くさい。あと、Paasの方が楽やん。

JenkinsとGithubの連携(SpringBoot)

目次

開発環境

Java1.8
Maven
Spring Boot 2.1.4

Jenkins環境

CentOS 7

今回のゴール

GithubへのpushをトリガーにしてJenkins上でSpringBootアプリの自動ビルド、自動デプロイを走らせる

手順

Spring bootプロジェクト作成

Eciipse上でプロジェクトを作成する。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>TestApp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>TestApp</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

簡単なHello Worldアプリを作成する

package com.example.demo.tryJenkinsTest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {
    @GetMapping("/hello")
    public String getHello() {
        return "hello";
    }
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
    <h1>Hello World</h1>
</body>
</html>

SpringBootとJenkinsのポートが競合するのでapplication.propertiesファイルでSpringBootのポートを8080番以外に設定する

server.port=8082

結果

f:id:kamada-math:20191209085044p:plain

Jenkinsサーバ構築

AWSコンソール上でCentOSのAMIからCentOSサーバを構築する f:id:kamada-math:20191209000010p:plain

サーバに接続後、サーバにJenkinsをインストールする

$ sudo yum -y install java-1.8.0-openjdk    # 前提環境のインストール

$ sudo curl -o /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo   # Jenkins公式yumレポジトリの追加 
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # Jenkinsインストール時に使用する公開鍵を追加
$ sudo yum install jenkins # Jenkinsのインストール
$ sudo systemctl enable jenkins # 自動起動設定
$ sudo systemctl start jenkins # Jenkinsの起動
$ sudo systemctl status jenkins # 起動及び自動起動確認

※firewalldが有効になっている場合は、別途8080番へのアクセスを許可する必要があるので注意
※EC2ではセキュリティグループでアクセス制限を行う為、firewalldは標準ではインストールされていない

http://(公開IP):8080/」に接続して画面に沿って初期設定を進める

f:id:kamada-math:20191209005536p:plain

f:id:kamada-math:20191209010248p:plain

Github上で新規リポジトリ作成後,先ほど作成したHello WorldアプリをGithubにpush

> cd (Hello Worldアプリのworkspaceパス)
> git init
> git add .
> git commit -m "first commit"
> git remote add origin (gitリポジトリのHTTPパス)
> git fetch
> git merge --allow-unrelated-histories origin/master
> git push -u origin master

Webhookの設定(Jenkins側)

左側の「新規ジョブ作成」からジョブ名入力後、「フリースタイル・プロジェクトのビルド」を選択

f:id:kamada-math:20191209015527p:plain

ビルドトリガの「リモートからビルド」で認証トークン名を設定し、ジョブを作成 f:id:kamada-math:20191209015734p:plain

認証トークン名は後で利用するため、メモ帳等にメモしておく

作成後、Webhook時に使用するRESTAPIの認証情報を取得する為、「Jenkinsの管理]→「ユーザーの管理」よりログインユーザ名の歯車マークを選択 f:id:kamada-math:20191209021453p:plain

設定画面の「APIトークン」より「Add new Token」を押下後、 「Generate」で認証トークンを生成 f:id:kamada-math:20191209021822p:plain

生成時に表示される認証トークンは後で利用するため、メモ帳等にメモしておく

Webhookの設定(Github側)

対象のリポジトリの「Settings」→「Add webhook」より webhookの作成画面を開く f:id:kamada-math:20191209022226p:plain

PayloalURLを以下のように設定し、Add webhookをクリック   [PayloadURL]
http://(ユーザー名):(生成した認証トークン)@(jenkinsホスト)/job/(ジョブ名)/build?token=(認証トークン名)

f:id:kamada-math:20191209022418p:plain

トリガー時のスクリプト実行のための準備

再度サーバに接続後、以下を実行する

# デプロイするディレクトリ作成
$ mkdir /var/webapp/spring/
# javacインストール
$ sudo yum -y install java-1.8.0-openjdk-devel     
# sudoを実行するためにsudoersに設定追加
$ sudo visudo

$ Defaults !visiblepw
Defaults visiblepw

jenkins ALL=(ALL) NOPASSWD:ALL

トリガー時に実行させるスクリプトを設定する

作成したジョブを選択し、設定より設定画面を開く 「ビルド」→「シェルの実行」より以下のスクリプトを設定する

#前に残っているspringプロセスを削除してspringアプリケーションを止める。
ps aux | grep java | grep (作成したSpringBootプロジェクト名)-0.0.1-SNAPSHOT.jar | grep -v sudo | awk '{print "kill -9 " $2}' | sudo  sh

#springアプリケーションをデプロイするディレクトリに移動する。
cd /var/webapp/spring/

# 前にgit cloneしたアプリケーションの削除
sudo rm -rf (作成したSpringBootプロジェクト名)

#git cloneする。
sudo git clone (gitリポジトリのHTTPパス)

#cloneされたリポジトリのルートディレクトリに移動
cd (作成したSpringBootプロジェクト名)

#実行権限を追加 
sudo chmod 700 mvnw

# Mavenでビルドする。ビルドするとプロジェクトのルートディレクトリにtargetディレクトリにspringの実行可能jarファイルができる。
sudo ./mvnw clean package

#jarファイルのフォルダに移動
cd target

#jarファイルの実行&でバックグラウンドで実行している。--server.portで好きなポートで実行できる。
sudo java -jar (作成したSpringBootプロジェクト名)-0.0.1-SNAPSHOT.jar --server.port=(設定したポート) &

設定後、保存

テスト

ローカルで以下のように変更後、githubにpush

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
    <h1>Hello Jenkins</h1>
</body>
</html>
> cd (Hello Worldアプリのworkspaceパス)
> git add .
> git commit -m "first cicdtest"
> git push 

すると、以下のようにJenkins上でビルドが走り、 f:id:kamada-math:20191209092314p:plain

ローカル上での変更が反映された(自動デプロイされる)ことが確認できる

f:id:kamada-math:20191209092455p:plain

参考

JenkinsをCentOS 7にyumインストールする手順 | WEB ARCH LABO

CentOS7.0にJenkinsをインストールする - Qiita

Installing Jenkins on Red Hat distributions - Jenkins - Jenkins Wiki

GithubとJenkinsを連携させてアプリケーションを自動デプロイさせる。 - Qiita

Jenkinsでsudo実行時のエラー - Qiita

一般ユーザーを sudo できるようにする - maruko2 Note.

「ゼロからはじめるLinuxサーバー構築・運用ガイド」を読んだ。

読んだきっかけ

恥ずかしい話最近開発業務でLinuxの知識が抜け落ちていたので復習がてら読んだ。

内容

さくらのVPSを利用してLAMP環境を構築していく。サーバ管理に必要な基本的なことからDockerコンテナまで広く浅く学べる本だった。

得られたこと

  • さくらVPSの利用方法
  • CentOS 7になって変わったコマンドについて

すべてのAWSユーザーの必読書「AWS IAMのマニアックな話」を読んだ。

はじめに

最近、勉強したことをブログに書き始めたKamです。
先月の技術書典7で手に入れた「AWS IAMのマニアックな話」を読了したので 本の概要、得られたことを書こうと思います。
ちなみに、電子本であれば、以下で購入可能です。

【ダウンロード版】AWSの薄い本 IAMのマニアックな話

内容

はじめに
第1章 AWS と IAM
第2章 IAM の機能
第3章 IAM チュートリアル
第4章 IAM ポリシーのデザインパターン
第5章 IAM グループのデザインパターン
第6章 IAM とセキュリティ
第7章 IAM の運用
第8章 IAMとCloudFormation
第9章 IAMのテンプレート集
第10章 IAM以外のAWS サービスの活用
付録 A アカウント開設時の設定チェックリスト

得られたこと

  • IAMユーザーは「認証」、IAMグループは「認可」に限定して使用する。(IAMユーザーに直接IAMポリシーをアタッチしない)
  • IAMユーザーには「認証」においてMFA有効化を原則にする
  • インターネット公開系の権限を付与しないように(EC2のIAMをパブリックにする等)注意する
  • 管理者権限付きのIAMユーザーはアクセスキーを発行するのではなく、IP制限を下うえで権限使用時にIAMロールにスイッチして利用する
  • 上記のIAMロールへのスイッチの際にはMFAを強制する
  • マルチアカウント運用の際には、踏み台AWSアカウントを使い、各AWSアカウントのロールにスイッチすることでアカウント管理を楽にできる

開発業務に移りました。

2か月前ほどからクラウド運用チームから開発チームに移動しました。 技術要素としては、クライアントサイド:Javascript,サーバサイド:C##といった感じです。

バリバリコード書くわけではなく、よむことが多いですが、とりあえず頑張ろう!!

2018年の振り返り

業務に関して

  • クラウドサービスの運用業務に配属
  • 業務は楽しい。
  • 定型業務が多い。新しいことが少ない。
  • 自動化できるであろう作業が自動化されていない。
  • プログラミングできない。

プライベート

  • 資格はaws、基本情報を取得。応用は受けたけど落ちた。
  • 周りに比べると勉強している方だが、それでも勉強時間が少ない。