[Docker] Redmineのコンテナを作成してみよう

### 作成手順
ネットワークを作る -> MySQLコンテナを作る -> Redmineコンテナを作る -> 確認 -> 後始末
※WordPressとほぼ同じ構成だがオプションの名前が異なる

$ sudo docker network create redmine000net2
$ sudo docker run –name mysql000ex13 -dit –net=redmine000net2 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=redmine000db -e MYSQL_USER=redmine000kun -e MYSQL_PASSWORD=rkunpass mysql –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci –default-authentication-plugin=mysql_native_password
$ sudo docker run -dit –name redmine000ex14 –network redmine000net2 -p 8086:3000 -e REDMINE_DB_MYSQL=mysql000ex13 -e REDMINE_DB_DATABASE=redmine000db -e REDMINE_DB_USERNAME=redmine000kun -e REDMINE_DB_PASSWORD=rkunpass redmine

うおおおおおお
何これ?

[docker] 複数コンテナを動かしてみる

wordpress: wordpress, apache, php, mysql

$ sudo docker network create wordpress000net1
$ sudo docker run –name mysql000x11 -dit –net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci –default-authentication-plugin=mysql_native_password
$ sudo docker run –name mysql000x12 -dit –net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress

うむ、Wordpressは少し慣れた感がある

[Docker基礎] 基本コマンド

$ sudo docker run –name apa000ex1 -d httpd
$ sudo docker ps
$ sudo docker stop apa000ex1
$ sudo docker rm apa000ex1

### apache
apacheは80ポートで待ち構えている
$ sudo docker run –name apa000ex2 -d -p 8080:80 httpd
$ sudo docker stop apa000ex2
$ sudo docker rm apa000ex2

うーん、apacheは少し慣れてきた。

AWS S3のデータ保護

### S3バケットのデータ保護
S3はデータセンターのディスクに書き込むときにデータをオブジェクトレベルで暗号化し、ユーザーがデータにアクセスするときに復号する。

### 暗号化の種類
### SSE-S3
S3が管理するキーによるサーバ側の暗号化
SSE-S3を使用すると、オブジェクトは一意のキーで暗号化される
AES-256を使用して暗号化する

### SSE-KMS
AWS KMSに保存されているカスタマーキー(CMK)によるサーバー側の暗号化

### SSE-C
ユーザが指定したキーによるサーバ側の暗号化(SSE-C)

### クライアント側の暗号化
S3に送る前にデータを暗号化
AWS Encryption SDKを使用すると暗号化を容易に実装可能

なるほど、少しずつ理解してきた

lambda入門

トリガーイベント: S3へのファイル投入 ※management console上で操作する

def lambda_handler(event, context):
    print("Lambdaが呼ばれました!")
    input_bucket = event['Records'][0]['s3']['bucket']['name']
    input_key = event['Records'][0]['s3']['object']['key']
    print("bucket =", input_bucket)
    print("key =", input_key)

testして、Deploy, cloudwatch logsで挙動を確認

import boto3

s3 = boto3.client('s3')

def read_file(bucket_name, file):
    response = s3.get_object(Bucket=bucket_name, Key=file_key)
    return response[u'Body'].read().decode('utf-8')

def upload_file(bucket_name, file_key, bytes):
    out_s3 = boto3.resource('s3')
    s3Obj = out_s3.Object(bucket_name, file_key)
    res = s3Obj.put(Body = bytes)
    return res

def lambda_handler(event, context):
    print("Lambdaが呼ばれました!")
    input_bucket = event['Records'][0]['s3']['bucket']['name']
    input_key = event['Records'][0]['s3']['object']['key']
    print("bucket =", input_bucket)
    print("key =", input_key)

text = read_file(input_bucket, input_key)
output_key = "outputs/" + input_key
upload_file(input_bucket, output_key, bytes(text, 'UTF-8'))

なるほど、lamdbaの基本機能はなんとなく理解した

Terraformを使ってみる

dockerを立てる

terraform {
	required_providers {
		docker = {
			source = "kreuzwerker/docker"
			version = "~> 2.15.0"
		}
	}
}

provider "docker" {}

resource "docker_image" "nginx" {
	name = "nginx:lastest"
	keep_locally = false
}

resource "docker_container" "nginx" {
	image = docker_image.nginx.latest
	name = "tutorial"
	ports {
		internal = 80
		external = 8080
	}
}
terraform {
	required_providers {
		aws = {
			source = "hashicorp/aws"
			version = "~> 3.0"
		}
	}
}

provider "aws" {
	profile = "default"
	region = "ap-northeast-1"
}

resource "aws_instance" "app_server" {
	ami = "ami-0e60b6d05dc38ff11"
	instance_type = "t2.micro"
	tags = {
		"Name" = "ec2-1115"
	}
}

なるほどー lambdaを勉強しないと駄目だなー

TerraformでAWS環境を構築したい

$ terraform version
Terraform v1.1.8
$ touch main.tf

main.tf

provider "aws" {
	access_key = "ACCESS_KEY_HERE"
	secret_key = "SECRET_KEY_HERE"
	region = "ap-northeast-1"
}

resource "aws_vpc" "myVPC" {
	cidr_block = "10.1.0.0/16"
	instance_tenancy = "default"
	enable_dns_support = "true"
	enable_dns_hostname = "false"
	tags {
		Name = "myVPC"
	}
}

resource "aws_internet_gateway" "myGW" {
	vpc_id = "${aws_vpc.myVPC.id}"
	depends_on = "${aws_vpc.myVPC}"
}

variable "images" {
	default = {
		ap-northeast1 = "ami-cbf90ecb"
		ap-southeast1 = "ami-68d8e93a"
		ap-southeast2 = "ami-fd9cecc7"
	}
}

なるほど、あとはlambdaのバッチのところか…

WAFCharmとは

WafCharmは、世界中のwebに対する攻撃パターンをAIによって学習し、AWS WAF/Azure WAFのルールを最適化させるWAF自動運用サービス
月額5000円~
サイバーセキュリティクラウド社が提供

なるほどー