はしばみあきら blog

プログラミングアウトプットするブログ。202010スタート

レンタルサーバー + WroePress にてWebサイト制作してみます

最近更新してなかったんだけど、というのも資格の勉強がメインになり、特に書くこともなくなっちゃったのが大きな理由です。

 

そこで、せっかくインフラエンジニアとして動いているのだから、サーバーやネットワークの勉強がてら何か作ってみようと思います。

 

AWSGCPを使ってWebサイトを作ってみようとも思ったけど

 

・初心者が手を出すと思った以上の料金が発生しそう

・そもそもそう言ったサービスは明らかなオーバースペックになりそう

 

という理由で、国内外のレンタルサーバーを利用させてもらって何かできたらなと思います。

 

載せることができたらそっちメインで使おうかな。

またここにもURL貼ったりして。

 

 

 

最近コード書いてないから自分の記事見直して何書いてんだコイツって思う今日この頃です。

 

AWS SAA対策 VPC

2度のSAA試験を受けたので、そこで見かけた

内容を基にアウトプットしていきます。

 

今回はVPC

IPアドレスサブネットマスク、CIDRなどの説明は特にありません)

 

 

 

VPCAmazon 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アドレスに変換する

 

IPマスカレード

NATが1対1で変換するのに対して、複数のプライベートIPをグローバルIPアドレスに変換する

 

プライベートサブネット内のインスタンスに接続するには踏み台サーバーを利用し、戻りトラフィックにはNATゲートウェイが必要

 

 

セキュリティグループ

インスタンスへのトラフィック可否を設定する

・ポート番号

IPアドレス

・別セキュリティグループが紐づけられたリソースからのアクセス

などで設定

 

特徴

・ステートフル...インバウンドを許可すればアウトバウンドも許可される

・許可のみを指定

・デフォルトでは同じセキュリティグループ内通信のみ許可

 

 

ネットワークACL

サブネットに対するトラフィック制御を設定する

 

特徴

・ステートレス...インバウンドとアウトバウンドのどちらも設定する必要がある

・許可と拒否を指定

・デフォルトでは全ての通信を許可

・設定した番号順に適用する

 

 

オンプレミスとVPCの接続

Direct Connect

専用線を介してAWSへプライベートに接続するサービス

・安価なアウトバウンドトラフィック料金

・ネットワークの信頼性・帯域幅の向上

Direct Connectロケーションと呼ばれる地点に自社の機器を設置してDirect Connectデバイスという機器に接続することで実現

 

VPCGateway___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 - はしばみあきら 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対策 VPC - はしばみあきら blog

 

 

 

 

 

AWS SAA 試験対策アウトプット

今回はAWS SAAに挑戦して2回も落ちてしまったので、勉強の方法を見直してアウトプットすることにしていきます。

とりあえずアウトプットした内容をここを旗艦にリンクさせていこうと思います

なのでこのページは随時更新予定です。



AWS SAA対策 IAM - はしばみあきら blog

AWS SAA対策 VPC - はしばみあきら blog



【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)
            }
        }
    }
}

初期だとこんな感じですね。

f:id:hashibamiakira:20210320000332p:plain

表示させると「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)
        }
    }
}

f:id:hashibamiakira:20210320003355p:plain

ピッカー内の.tagのカッコ内は選択している部分の数字を、Picker()のselectionに渡します

つまり変数 selectedWether に選択部分の数字が入ります

あとはその値を使い、アイコン用の配列や、配色用の配列から値を引っ張る、と言った感じですね

JSとかReactとかを触っていたからなんとなく雰囲気が掴めてるけど、前提知識なく触るのは大変そうだ

シミュレーションの挙動はこんな感じです

streamable.com

次回はもう少し発展していきます

【SwiftUI】SF Symbols でアイコン表示

SF symbol というアイコンを表示するコードがあります。

画像を用意しなくても簡単な画像を使うことができます。


SF Symbolアプリ

どのようなアイコンがあるかは、アプリをダウンロードしそこから検索することができます。

ダウンロードサイト

developer.apple.com

アイコンを表示する

プロジェクトを立ち上げた時点のビュー


f:id:hashibamiakira:20210319001701p:plain

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の学習を進めていきたいと思います。