レンタルサーバー + WroePress にてWebサイト制作してみます
最近更新してなかったんだけど、というのも資格の勉強がメインになり、特に書くこともなくなっちゃったのが大きな理由です。
そこで、せっかくインフラエンジニアとして動いているのだから、サーバーやネットワークの勉強がてら何か作ってみようと思います。
AWSやGCPを使ってWebサイトを作ってみようとも思ったけど
・初心者が手を出すと思った以上の料金が発生しそう
・そもそもそう言ったサービスは明らかなオーバースペックになりそう
という理由で、国内外のレンタルサーバーを利用させてもらって何かできたらなと思います。
載せることができたらそっちメインで使おうかな。
またここにもURL貼ったりして。
最近コード書いてないから自分の記事見直して何書いてんだコイツって思う今日この頃です。
AWS SAA対策 VPC
2度のSAA試験を受けたので、そこで見かけた
内容を基にアウトプットしていきます。
今回はVPC
(IPアドレス、サブネットマスク、CIDRなどの説明は特にありません)
VPC(Amazon Virtual Private Cloud)
AWSクラウドのネットワークからユーザー専用の領域を切り出すサービス
アカウントを作成すると自動的に各リージョンに1つずつデフォルトVPCとデフォルトサブネットが生成される
■172.31.0.0/16のVPCを作成
■各AZに、/20のサブネットを作成
デフォルトで、
・インターネットゲートウェイ(IGW)を作成、デフォルトVPCに接続
・セキュリティグループを作成、VPCに関連付け
・ネットワークアクセルコントロールリスト(ACL)を作成、VPCに関連付け
・DHCPを関連付
・パブリック、プライベートのDNSホスト名付与
IPアドレスはネットワークインターフェイスカード(NIC)に割り振られ、ホストにアタッチ
このNICを別のホストに再アタッチしてIPフローティングすることもできる
VPCは/16~/28のCIDR範囲で
サブネット
パブリックサブネット
インターネットゲートウェイへのルーティングを設定した、インターネットへ接続できるサブネット
プライベートサブネット
インターネットゲートウェイへのルートがないサブネット
サブネットを作った後のルートテーブルの設定で区別する
プライベートサブネットをネットに繋ぐには?
⇨パブリックサブネットにNATゲートウェイを設置し、そこにアクセス
VPC外部接続
VPCの外側にリソースがある場合の接続方法
・パブリックのAWSネットワークから
・エンドポイントを利用
仮想プライベートネットワーク(VPN)
カスタマーゲートウェイ
・オンプレミス側のカスタマーサイドのゲートウェイの情報を取得
仮想プライベートゲートウェイ
・VPCに仮想プライベートゲートウェイを作り接続を可能にする
Trasit Gateway
多数のVPC間の接続を管理する
NAT
インターネットに接続するときに、NATがプライベートIPアドレスをグローバルIPアドレスに変換する
NATが1対1で変換するのに対して、複数のプライベートIPをグローバルIPアドレスに変換する
プライベートサブネット内のインスタンスに接続するには踏み台サーバーを利用し、戻りトラフィックにはNATゲートウェイが必要
セキュリティグループ
・ポート番号
・別セキュリティグループが紐づけられたリソースからのアクセス
などで設定
特徴
・ステートフル...インバウンドを許可すればアウトバウンドも許可される
・許可のみを指定
・デフォルトでは同じセキュリティグループ内通信のみ許可
ネットワークACL
サブネットに対するトラフィック制御を設定する
特徴
・ステートレス...インバウンドとアウトバウンドのどちらも設定する必要がある
・許可と拒否を指定
・デフォルトでは全ての通信を許可
・設定した番号順に適用する
オンプレミスとVPCの接続
Direct Connect
・安価なアウトバウンドトラフィック料金
・ネットワークの信頼性・帯域幅の向上
Direct Connectロケーションと呼ばれる地点に自社の機器を設置してDirect Connectデバイスという機器に接続することで実現
VPCのGateway___Direct Connectデバイス___自社機器___オンプレ側に設置したGateway
Direct Connect Gateway
同一アカウントに所属する複数リージョンの複数AZから、複数リージョンの複数VPCに接続
VPCエンドポイント
グローバルIPを持つAWSサービスに対しVPCが直接アクセスするゲートとなる
Gateway型
サブネットに特殊なルーティングを設定、VPC内部から直接外のサービスと通信する
PrivateLink型
エンドポイントにプライベートIPアドレスを生成し、DNSから名前解決でルーティングする
VPC Flow Logs
ネットワークトラフィックを取得しCloud Watchでモニタリングする機能
・ネットワークインターフェイスを送信元・送信先とするトラフィックが対象
・セキュリティグループとネットワークACLのルールでトラフィックログを取得
・RDS/Redshift/ElastiCache/WorkSpaceなどのネットワークインターフェイストラフィックも取得可能
VPC Peering
2つのVPC間でトラフィックルーティングが可能。1対1が基本
・異なるアカウント間のVPCも接続可能
・一部のリージョン間の異なるVPC間のピア接続も可能
以下別セクション
AWS SAA 試験対策アウトプット - はしばみあきら blog
AWS SAA対策 IAM
2度のSAA試験を受けたので、そこで見かけた
内容を基にアウトプットしていきます。
今回はIAM
IAM (Identity and Access Managemaent)
安全にAWS操作を実施する認証・認可の仕組み
・IAMユーザー
・IAMグループ
・IAMポリシー
・IAMロール
がある
IAMポリシー
アクセス権限を付与するJSON形式の設定ドキュメント
"Effect"
"Action"
"Resource"
"Condition"
などの要素で、どのサービスに、どのようなアクションを、許可・非許可するなどを設定する
IAMユーザー
IAMポリシー内でAWSを利用できるユーザー
・ルートユーザー(アカウント作成者のユーザー、IAMユーザーではない)
・AWSアカウント作成時に作られるIDアカウント
・全てのAWSサービスとリソースを使用できる権限を有する
・日常的なタスクはルートユーザーを使用しないことを推奨
・管理者権限ユーザー(IAMユーザー)
・管理者権限の許可が付与されたIAMユーザーのこと
・IAMの操作権限まであり
・ルートアカウントしかできない権限は付与されない
・パワーユーザー(IAMユーザー)
・IAM以外の全てのAWSサービスにフルアクセス権限を有するIAMユーザー
・IAMの操作権限はない
IAMグループ
グループとして権限をまとめて設定された単位。複数のIAMユーザーを設定
IAMロール
リソース(エンティティ)に対してアクセス権限を付与
一時的な権限を委譲する際にも利用される
ユーザーに適用するなど、IAMロールはエンティティ(アカウント、IDフェデレーションなど)に適用する
ユーザーアクティビティの記録(★はよく見かけるので覚えておきたい)
★IAM Access Analyzer
S3バケットやIAMロールなどを分析し、セキュリティ上のリスクであるリソースとデ ータへの意図しないアクセスを特定
★AWS Config
IAMのユーザー、グループ、ロール、ポリシーの変更履歴、構成変更の管理・確認ができる機能
★AWS Cloud Trail
AWSインフラストラクチャ全体でアカウントアクティビティをログに記録し、断続的に監視、保持できる機能。APIログなどを監視できる
Service Last Accessed Data
IAMエンティティ(ユーザー、グループ、ロール)が、最後にサービスにアクセスした日付と時刻を表示する機能
Credential Report
利用日時などが記録されたIAM認証情報のレポートファイル
IAM権限のベストプラクティス(選択肢で出てきた気がする部分)
・IAMユーザーやIAMグループには最小権限のみを設定
・新しいポリシーを作るのではなくAWS管理ポリシーを利用する
・インラインポリシーではなくカスタマー管理ポリシーを使用
・MAFを有効化する
・第三者に一時的に権限を付与する場合はIAMロールを使用してアクセスを許可する
IAM設計
AWSを利用するユーザーの役割やアクセス権限を自社の組織構造と組み合わせて設計する
将来を見据えてIAMユーザーよりIAMグループを利用してするのが基本
AWS Organization
複数のAWSアカウントを利用している場合に、統合管理を実施することができる
IAMのアクセス管理を大きな組織でも楽に実施できるようにするマネージド型サービス
・複数アカウントの一元管理
AWSアカウントをグループ化、ポリシーを適用し一元的に管理
・新規アカウントの一元管理
コンソール、CLIなどでAWSアカウントを新規作成、内容を管理できる
・一括請求
複数アカウントの請求を一括化する
AWSアカウントの中からマスターアカウントを選定し、マスターアカウントによって管理
組織(OU)を構成してマスターアカウントがメンバーアカウントを管理する
SCP
メンバーアカウントを持つ個々のAWSアカウント、またはOU内のアカウントグループに対して、サービスへのアクセス許可・拒否の設定
タグ付戦略
リソースにメタデータをタグ形式で割り当てる
タグは、リソースの管理、識別、整理、検索、フィルタリングに役立つ
以下別セクション
AWS SAA 試験対策アウトプット - はしばみあきら blog
AWS SAA 試験対策アウトプット
今回はAWS SAAに挑戦して2回も落ちてしまったので、勉強の方法を見直してアウトプットすることにしていきます。
とりあえずアウトプットした内容をここを旗艦にリンクさせていこうと思います
なのでこのページは随時更新予定です。
【SwiftUI】ホイールピッカーを作る
今回はホイールピッカーを作っていきます。
コロコロと文字列が動くあれです。
Pickerでホイールピッカーを表示
ライブラリパネルを開き「Picker」をドロップする
struct ContentView: View { var body: some View { VStack{ Picker(selection: .constant(1), label: Text("Picker")) { Text("1").tag(1) Text("2").tag(2) } } } }
初期だとこんな感じですね。
表示させると「1」と「2」のホイールが出てきました
表示に合わせて画像を変える
前回 SF Symbols でアイコンを表示できることを知りました
これを組み合わせて、ホイールした内容に合わせて画像を変化させてみます
struct ContentView: View { // 変数の変更を保持する @State private var selectedWether = 0 // アイコン用配列 let weatherIcons = [ Image(systemName: "sun.min.fill"), Image(systemName: "moon.fill"), Image(systemName: "cloud.fill") ] // アイコン色用配列 let weatherColor = [ Color.orange, Color.yellow, Color.gray ] var body: some View { VStack{ Picker(selection: $selectedWether, label: Text("Weather")) { // .tagの番号が、selectionに入る Text("Sunny").tag(0) Text("Moon").tag(1) Text("Cloud").tag(2) } HStack{ // 配列weatherIcons[]から、選択した.tag番号の画像が引数になる weatherIcons[selectedWether] .frame(width: 50, height: 50) // 色も同じく配列weatherColor[]から .foregroundColor(weatherColor[selectedWether]) } .imageScale(.large) } } }
ピッカー内の.tagのカッコ内は選択している部分の数字を、Picker()のselectionに渡します
つまり変数 selectedWether に選択部分の数字が入ります
あとはその値を使い、アイコン用の配列や、配色用の配列から値を引っ張る、と言った感じですね
JSとかReactとかを触っていたからなんとなく雰囲気が掴めてるけど、前提知識なく触るのは大変そうだ
シミュレーションの挙動はこんな感じです
次回はもう少し発展していきます
【SwiftUI】SF Symbols でアイコン表示
SF symbol というアイコンを表示するコードがあります。
画像を用意しなくても簡単な画像を使うことができます。
SF Symbolアプリ
どのようなアイコンがあるかは、アプリをダウンロードしそこから検索することができます。
アイコンを表示する
プロジェクトを立ち上げた時点のビュー
Hello World! を変えてみます
struct ContentView: View { var body: some View { // SF Symbols 表示 Image(systemName: "sun.min") } }
アイコンが表示されました
大きさや色の指定
ただ、かなり小さいのでサイズを変えます
また、色をつけて、他のアイコンも表示してみます
struct ContentView: View { var body: some View { // SF Symbols 表示 VStack{ Image(systemName: "sun.min.fill") // 色を付ける .foregroundColor(.orange) // 画像サイズ変更(.small, .medium, .large から選択) .imageScale(.large) .padding(10.0) Image(systemName: "moon.fill") .foregroundColor(.yellow) .imageScale(.large) .padding(10) Image(systemName: "cloud.fill") .foregroundColor(.gray) .imageScale(.large) .padding(10) } } }
このように表示することができました。
SwiftUIのアウトプットをしていきます
タイトルの通りです。
如何せんプログラミングって難しいのでインプットとアウトプットをしながら知識を身につけていこうという魂胆です。
初心者の自分が、あ〜こういう感じなんだよねぇって感じで書いていくので、生あったかい目で見つめてくれれば幸いです。。。
また、変化の激しい世界でもありますので、書いたことがいつの間にか使えなくなっていたり別のものに置き換わっていたりということがよくあります。
色々と違うやんという部分も出てくるかと思いますがご愛敬です。
と言った感じで、SwiftUIの学習を進めていきたいと思います。