Kinesis Firehouseとは

AWS Kinesis Firehouseとは?
ストリームデータをS3やRedshiftに送るサービス

import boto3
import uuid
import json

accesskey = "*"
secretkey = "*"
region = "ap-northeast-1"

  
client = boto3.client('firehose', aws_access_key_id=accesskey, aws_secret_access_key= secretkey, region_name=region)
data = {
	"musicID": 'xxxxxxxxxx',
	"userId": 1,
	"artistId": 1
}

response = client.put_record(
	DeliveryStreamName = "PUT-S3-UNJQf",
	Record = {
		'Data': f'{json.dumps(data)}\n'
	}
)
{
            "Effect": "Allow",
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            ],
            "Resource": [
                "arn:aws:firehose:ap-northeast-1:*:deliverystream/PUT-S3-UNJQf"
            ]
        },
        {

raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDeniedException) when calling the PutRecord operation: User: arn:aws:iam::702423327513:user/kinesis is not authorized to perform: firehose:PutRecord on resource: arn:aws:firehose:ap-northeast-1:*:deliverystream/PUT-S3-UNJQf because no identity-based policy allows the firehose:PutRecord action

うむー なんかよくわからんが、どういうことができるかは何となく理解したかも

AWS WAFを使っていく

WAFはWeb Application Firewallの略でWebアプリケーションを保護するためのソリューション
ALB, CloudFront, API Gatewayに割り当てて利用する
リソースにWebACLを割り当てたら、WebACLにルールを登録する
番号が小さい順に評価される
– IP制限
– レートベース(同一IPからの接続数制限)
– 脆弱性に関するルール
– 悪意あるhttpリクエスト

WAF template
L DLします
https://aws.amazon.com/jp/about-aws/whats-new/2017/07/use-aws-waf-to-mitigate-owasps-top-10-web-application-vulnerabilities/

iamでAdministratorAccessを付与したロールを作成します。
cloudformationで先ほどDLしたowasp_10_base.ymlをuploadしてstackを作成します。
その際に、iam roleでcloudformation_roleを付与します。

これでWAFのWebACLsに作られているはずなのだが、、、、
なんとなくわかったようなわかってないような…

AWS CIDR

CIDR(Classless Inter-Domain Routing)
CIDRはIPアドレスの範囲で、172.10.0.0〜172.10.255.255と書くと面倒なので、172.10.0.0/16と書く
この”/16″というのは左の”16ビット固定” という意味
“172.10.0.4/32” は、32ビット(全部固定)という意味
RFC1918とは、プライベートIPアドレスについて記載したRFC文章

RFC1918の範囲
– クラスA(大規模ネットワーク): 10.0.0.0 ~ 10.255.255.255
– クラスB(大規模ネットワーク): 172.16.0.0 ~ 172.31.255.255
– クラスC(大規模ネットワーク): 192.168.0.0 ~ 192.168.255.255

予約されている5つのアドレス
10.0.0.0 ネットワークアドレス
10.0.0.1 VPCルータ
10.0.0.2 Amazonが提供するDNS
10.0.0.3 AWSで予約されているアドレス
10.0.0.255 ブロードキャストアドレス

そーゆーことか、めちゃくちゃ勉強になった

AWS Session Managerを使ってみよう

AWS Session Managerを使うと、SSHを使わずにEC2に接続できる

### Session Managerの使い方
IAM -> Roles -> Create role -> EC2
AmazonEC2RoleforSSM を選択する

Role Name: SSM
ssmはsession managerの略だと思われる。smでもよかったのにww

IAM role “SSM” で再度EC2インスタンスを作成します。

### AWS Systems Manager
Start sessionを押下すると、Target instanceが表示される

sh-4.2$ pwd
/usr/bin

うおおおおおおおおおおおお
なんだこれ

というか、最初は/usr/binがcurrentになるのね。
なかなか面白い。

AWS Global Acceleratorとは?

AWS Global AcceleratorはALB, NLB, EC2などのコンポーネントの前段に配置することで、可用性とパフォーマンスを改善してくれるネットワークサービス

既存のALBに追加したり、ALB新規作成時に追加できる

### 使ってみる
– Create accelerator
– Listenerを80 TCPに設定します
– Endpointに対象リージョンのEC2を紐付ける

Global Acceleratorを作成すると、Static IPアドレス2つとDNSが作られる。
なるほど、なんとなくイメージはわかったかも。

AWS Aurora入門

Amazon Auroraとは?
-> MySQL及びPostgreSQLに互換性を持った完全マネージド型のリレーショナルデータベース
-> MySQLの5倍、PostgreSQLの3倍のスループットを発揮
-> ストレージは10GBから最大64TBまで自動スケール

### 構成
Primary/Secondary構成とは異なり、クラスタ単位で構成される
クラスタエンドポイント、読み取りエンドポイント、カスタムエンドポイントがある

### 実際に作ってみる
– 前準備のrds-subnet-groupとrds security group作るまでに少し時間がかかった…

$ sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
$ rpm –import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
$ sudo yum install –enablerepo=mysql80-community mysql-community-server

$ mysql -h database-1.hoge.ap-northeast-1.rds.amazonaws.com –ssl-ca=.ssh/rds-ca-2019-root.pem -u admin -p

うおおおおおおおおおお
なんか超久しぶりだから焦りまくった…

Auroraでregional clusterとwriter instanceの違いがイマイチよくわからんが…
keep going

AWS Batchとは?

AWSのフルマネージド型バッチ処理実行サービスのこと
– 最適なコンピューティングリソースの動的プロビジョニングができる
– 「ジョブ」という概念を定義しておき多岐に渡る処理を管理実行できる

事前に定義したジョブ定義をキューで管理、処理
複数の子ジョブを実行させる事が出来る

AWS Batchの用語
– jobs, job definitions, job queues, compute environments
– マルチノード並列ジョブ: 複数のインスタンスにまたがるジョブ

とりあえず触ってみる

– create compute environment

job definitionsを設定する

あれええええ なんか違うなーーーーーーーーーwwww

AWS EventBridgeとは

AWS内外でのイベントをトリガーにLambdaなどを動かせるhubがEventBridgeらしい。
PagerDutyを触ってみたがよく分からないので、とりあえず動かしてみることに。

service providerをAWS, service nameをEC2として、Event typeでEC2 Instance State-change Notificationで Specific stateがstoppedとなったら、Lambda functionを実行するようruleを作成できる。

scheduleとcron expressionを使うと、cronと同じようなことができる

ふむ、なるほどー

AWS DirectConnectとは

AWSが提供する専用接続サービスでユーザのネットワーク環境からAWSまでのインターネットを経由せずにプライベートな接続を確立する
エクイニクス社の「TY2(東京)」、「OS1(大阪)」およびアット東京社の「CC1(東京)」のAWS Direct Connectロケーションを利用できる

AWS DirectConnectは、インターネット回線を利用しないで接続する方法

GitLabとは?

GitLabはGitLab社が公開しているGitサービス
無料で利用できるCEと有料で利用できるEEがある
Githubの後発として開発されたサービス
グループプライベートリポジトリを作れる

### Githubとの違い
– 他のツールとの連携が充実
– デザインはGithubの方が操作しやすいが、Gitlabはトレンドに沿っている
– ジョブの実行ができる
– 安定性はGithubの方が安定している
– ユーザー数はGithubは5600万人以上(2021)、Gitlabは10万人(2017)でダントツにGithubの方が多い
– GitLab独自のCI/CDが提供されている(Java関連のCI/CDも人気)

– リポジトリのグルーピングが好評

git commitしてmergeする

github使ってると、なんか変な感じだな