AWS CLIで情報を出力しようVPC編(Linux版-その3)

VPCにはどの様な情報があるのだろうか?。一番気になるのは,CIDR,サブネット,どのようにしたら見れるのだろうか?

             図A VPCの一覧を図で書いてみる

1.利用中のリージョンのVPC情報を出力しよう

利用中のVPC一覧を出力する場合は、以下のコマンドを実行します。

aws aws ec2 describe-vpcs

              図B VPC一覧出力

json形式で出力されます。

2.必要な情報のみ出力するようにしましょう

オプションのqueryを使用することで絞り込みができます。
以下の例は、CIDRとVPC名に絞った例です。トップレベルがVpcs,で(画像B 階層と項目)
CidrBlockとtags[0]をdict{}に配置させます。

aws ec2 describe-vpcs \
--query "Vpcs[].[{CIDR:CidrBlock,Name:Tags[0].Value}]" \
--out table

オプションのqueryを使用することで絞り込みができます。
–query オプションの順番を変えても出力順序は変わりません。CIDRが先に出力されます

aws ec2 describe-vpcs \
--query "Vpcs[].[{Name:Tags[0].Value,CIDR:CidrBlock}]" \
--out table

           図C 項目を絞って出力

VPCのCIDRとVPC名を出力できました。

3.必要な情報(追加)出力するようにしましょう

オプションのqueryを使用することで絞り込みができます。
以下の例は、CIDRとVPCIdにVPCの名前を追加した例です。トップレベルがSubnets,で
(画像D 階層と項目)CidrBlockとVpcIdをdict{}に配置させます。

aws ec2 describe-vpcs \
--query "Vpcs[].[{CIDR:CidrBlock,Name:Tags[0].Value,VpcId:VpcId}]" \
--out table

            図D CIDRとVPC名とVPCID

VPCのCIDRとVPC名とVPCIDを出力できました。

4.サブネット情報を出力してみましょう

VPCの情報出力では、サブネットの情報は出力されないので、サブネット情報
を出力するコマンドでサブネット情報を出力しましょう。

aws ec2 describe-subnets

             図E サブネット情報

サブネットの情報がjson形式で出力されます。

5.必要な情報のみ出力するようにしましょう

オプションのqueryを使用することで絞り込みができます。
以下の例は、CIDRとVPCIdに絞った例です。トップレベルがSubnets,で(画像E サブネット情報)
VPCid,CidrBlock,Nameを出力させます。

aws ec2 describe-subnets --query "Subnets[].[VpcId,CidrBlock,Tags[0].Value]" \
--out table

              図F サブネットのCIDRとVPCID

サブネットのCIDRとVPCIDが出力されます。

6.VPCとサブネットの情報を出力しよう

VPCの情報出力では、サブネットの情報は出力されないので、サブネット情報
を出力するコマンドとVPC-Idをfilterに指定してサブネット情報を出力しましょう。

aws ec2 describe-subnets \
--filters "Name=vpc-id,Values=vpc-0e628XXXXXXXXYYYY" \
--query "Subnets[].{CIDR:CidrBlock,VpcId:VpcId,Name:Tags[?Key=='Name'].Value}" \
--out table

         図G サブネットとVPCID

VPCIDをフィルターして、このVPCにどんなサブネットがあるのかがわかります。

7.VPC CIDRとサブネット CIDRを出力しよう

サブネットの情報(CIDR)とVPCのCIDRを出力したい。これにはちょっと工夫が必要です。
コマンド一発というわけにはいかないのです。他に方法があるかもしれません。

aws ec2 describe-subnets --query "sort_by(Subnets[].{VpcId:VpcId,SubnetCIDR:Cidr
Block,AZ:AvailabilityZone},&VpcId)" \
--out table > subnet.txt
aws ec2 describe-vpcs \
--query "Vpcs[].[{CIDR:CidrBlock,VpcId:VpcId}]" \
--out text > vpc.txt
./replace.py

more replace.py
#!/usr/bin/env python3
import textfile
list_from_vpcs = []
with open('vpc.txt') as f:
	reader = csv.reader(f, delimiter='\t')
	list_from_vpcs = [rows for rows in reader]
for vpc in list_from_vpcs:
	textfile.replace('subnet.txt',vpc[1],vpc[0])
textfile.replace('subnet.txt','VpcId','VpcCIDR')
            図H サブネットCIDRとVPCCIDR

先ず,サブネットの情報をサブネットのCIDRでソートしてsubnet.txtに出力させます。次に,vpc.txtにvpc情報を出力させます。そして、subnet.txtのファイルの中身を、vpc.txtのvpcIDと一致する項目をCIDRに置き換えています。また、表示名をVpcIdからVpcCIDRに変更しています。これで、サブネットとVPCの関係がわかります。

8.InternetGWの情報を出力しよう

InternetGWの情報を必要な項目のみ出力してみましょう

aws ec2 describe-internet-gateways \
--query "InternetGateways[].[{VPC_id:Attachments[0].VpcId,Name:Tags[0].Value}]" --out table

オプションのqueryを使用することで絞り込みができます。
上記の例は、InternetGatewaysがトップレベル次にVpcIdとTagsのValue情報を出力させています


            図J InternetGateway情報

次回はInternetGWとVPC,サブネットCIDRを一緒に出力させる方法を書きます


Linux版その1 EC2の情報出力 https://opt-p.co.jp/blog/aws/post-1633/

Linux版その2 RDSの情報出力 https://opt-p.co.jp/blog/aws/post-1718/

Linux版その4 色々な情報出力 https://opt-p.co.jp/blog/aws/post-2421/

AWS CLIで情報を出力しようRDS編(Linux版-その2)

 RDSってどんな製品(エンジン)が利用できるのだろうか。一覧とかだして、確認
することができたらいいな。AWSコンソールから操作すると、もし、何かミスをし
て、他のシステムに影響があったら困るし、課金されても困る。どんなエンジンが
あるかどうかさえ分かれば、いいのに。こんな時には、AWS CLIを使いましょう。

1.現在利用中のRDSの情報を出力しよう!

利用中のRDS一覧を出力する場合は、以下のコマンドを実行します。

aws rds describe-db-instances

画像A RDSの情報
                画像A RDSの情報

json形式で沢山出力されます。

2.現在利用中のRDSで出力する情報を絞り込んでみよう!

オプションのqueryを使用することで絞り込みができます。
以下の例は、ClassとId,Engine,Endpointのアドレスに絞った例です。
トップレベルがDBInstanceで(画像C 階層と項目)DBInstanceIdentifer,
DBInstanceClass,Engineをdict{}に配置し、{EndPoint.Address}を分けて配置
させます。DBinstanceIdentiferと同列に書くと縦長に配置されて出力されます。

aws rds describe-db-instances \
--query "DBInstances[].[{ID:DBInstanceIdentifier,Class:DBInstanceClass,\
Engine:Engine},{Endpoint:Endpoint.Address}]" \
--out table

画像B 項目を絞って出力
               画像B 項目を絞って出力
              画像C 項目と階層

3.利用可能なRDSのEngineとVersion情報を出力しよう!

利用中のリージョンで、利用可能なRDS一覧を見たい場合に以下のコマンドを実行します。

aws rds describe-db-engine-versions

画像D 出力結果
                画像D 出力結果

json形式でどばーっと出力されます

4 出力する情報を絞り込んでみよう!

オプションのqueryを使用することで絞り込みができます。
以下の例はDBParameterGroupFamilyとEngineversionのみに絞ったものです。
DBParameterGroupFamilyが、このDBパラメータグループファミリー互換性のある名前で
EngineVersion が、このエンジンのバージョンです。

aws rds describe-db-engine-versions \
--query "DBEngineVersions[*].[{FamiryName:DBParameterGroupFamily,Vesion:EngineVersion}]" \
--out table

画像E FamiryNameとVersion出力
            画像E FamiryNameとVersion出力

queryオプションの設定は以下のようになります 結果は、Json形式で出力されます。
これを踏まえて絞り込む内容を記述します。
トップレベルが、DBEngineVersions[*]. (画像F 階層と項目)
DBEngineVersions[*] .[{FamiryName:DBParameterGroupFamily,Vesion:EngineVersion}]
下の階層(画像C 階層と項目)DBParameterGroupFamily項目)の値と、EngineVersion項目の値を
{key1:value,key2:value}のdict形式でフォーマットして、項目名を出力するようにする

画像F 階層と項目
               画像F 階層と項目

5 RDSのエンジンを指定してそのエンジン情報のみ出力しよう!

5.1 エンジンにaurora-mysqlを指定

aurora-mysqlのみ出力したい場合は、engineにaurora-mysqlを指定します。
更にFamiryNameとVesionのみを出力するようにします。

aws rds describe-db-engine-versions --engine aurora-mysql \
--query "DBEngineVersions[*].[{FamiryName:DBParameterGroupFamily,Vesion:EngineVersion}]"\
--out table

画像G RDS aurora-mysql
              画像G RDS aurora-mysql

5.2 エンジンにoracle-eeを指定

oracleの場合は、oracle-eeとoracle-seが利用可能です。–engineオプション にoracle-ee
まで指定する必要があります。

aws ds describe-db-engine-versions --engine oracle-ee \
--query "DBEngineVersions[*].[{FamiryName:DBParameterGroupFamily,Vesion:EngineVersion}]"\
--out table

画像H oracle-ee
                画像H oracle-ee

6 VersionUp可能なエンジンを表示しよう!

6.1 MariaDB 10.2.37からバージョンアップ可能なRDS一覧

RDSを利用していると、現在利用しているエンジンのバージョンアップを要求される
ことがあります。どのバージョンにアップしたら良いのか(可能なのか)が
AWS CLIコマンドで確認できます。以下の例はmariadb 10.2.37からバージョンアップ
可能なエンジンの一覧を出力するものです。

echo 'mariadb 10.2.37 up'
aws rds describe-db-engine-versions \
--engine mariadb --engine-version 10.2.37 \
--query "DBEngineVersions[].ValidUpgradeTarget[].[{Des:Description,Auto:AutoUp
grade,Major:IsMajorVersionUpgrade,UpVersion:EngineVersion}]" \
--out table

画像J marriadb 10.2.37からバージョンアップ可能なRDS
     画像J marriadb 10.2.37からバージョンアップ可能なRDS

queryオプションの指定はトップレベルが(画像K 階層と項目)DBEngineVersions 一つ下の
レベルがValidUpgradeTargetそこを全て見るのでDBEngineVersions[*].ValidUpgradeTarget[*]
その下の項目(画像L 指定項目)、Description,AutoUpgrade,IsMajorverVersion,EngineVersion
をDict形式で指定する

画像K 階層と項目
                 画像K 階層と項目
画像L 指定項目
                 画像L 指定項目

6.2 Oracle-ee 12.1.0.2.v2からバージョンアップ可能なRDS

以下の例はoracle-ee 12.1.0.2.v2からバージョンアップ可能なエンジンの一覧を出力するものです。

echo 'oracle-ee 12.1.0.2.v2 up'
aws rds describe-db-engine-versions \
--engine oracle-ee --engine-version 12.1.0.2.v2 \
--query "DBEngineVersions[].ValidUpgradeTarget[].[{Version:EngineVersion,Auto:
AutoUpgrade,Major:IsMajorVersionUpgrade}]" \
--out table

画像M oracle12.0.1.2V2からバージョンアップ可能なRDS一覧
画像M oracle12.0.1.2.V2からバージョンアップ可能なRDS一覧 (画像を一部加工してます)

7.感想

RDSの情報でニーズがありそうな項目を出力するコマンドを実行してみました。
今利用のバージョンからバージョンアップ可能な物は何があるかは、良く問い合わせがあります。
何かのお役に立てば何よりです。

Linux版その1 EC2の情報出力 https://opt-p.co.jp/blog/aws/post-1633/

Linux版その3 VPCの情報出力 https://opt-p.co.jp/blog/aws/post-2080/

Linux版その4 色々な情報出力 https://opt-p.co.jp/blog/aws/post-2421/

AWS CLIで情報を出力しようEC2編(Linux版-その1)

1. AWS CLIを利用すると色々なリソース情報が見れます!

AWS EC2をコンソールから作成し、管理するサーバが多くなったら、一覧が欲しいですよね。
コンソールでは、分かり難いし、一覧を管理したい。そこで、AWS CLIコマンドを利用すると
EC2のリソース情報を取得し、且つ、必要な情報に絞って出力するように出来ます。
今回はEC2の情報を出力してみます。

2. まずはAWS CLIをインストールしよう!

Linuxのコンソール画面で以下のコマンドを実行してインストールします

$curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o "awscliv2.zip"
$unzip awscliv2.zip
$sudo ./aws/install

3. AWS CLIを使ってみよう!

3.1 AWS CLI のバージョンを確認する!

aws --version
aws-cli/2.4.15 Python/3.8.8
 
最新でなかった場合はバージョンアップしましょう
バージョンアップ方法は以下です

3.2 AWS CLIのバージョンアップ方法!

curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update 
aws --version
aws-cli/2.4.29 Python/3.8.8

2022/03/28時点で最新バージョンです
詳しくは、以下を参照 AWS CLI 最新バージョンをインストールまたは更新する https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

3.3 利用中のリージョンでec2 インスタンスの情報をすべて出力してみよう!

利用中のリージョンに存在するEC2インスタンスのすべての情報を出力するには以下のように記述します SQLの  select * from ec2 みたいなものです

aws ec2 describe-instances

画像A 出力結果
                 画像A 出力結果

Json形式で どばーっと出力されます

3.2 出力する情報を絞りこんでみよう!

上記コマンドでは沢山の情報が出力されるのでqueryオプションを使用して情報を絞り込みます
Sqlの select name,OS from EC2 みたいなものです。EC2名とOSに絞り込みます

aws ec2 describe-instances \
--query "Reservations[*].Instances[*].[{OS:PlatformDetails,Name:Tags[0].Value}]" \
--out table 

画像B 2項目出力
                画像B2項目出力

queryオプションの設定は以下のようになります
Json形式で出力されるので、これを踏まえて絞り込む内容を記述します
まず、Reservations[*].Instances[*]   (画像C 階層) トップレベルがReservations
一つ下の階層がInstances これがリスト[]になっているので、
すべてを対象にする為に、Reservations[*].Instances[*] と指定します
更に下の階層(画像D PlatformDetails項目)の値と、
同じ階層にある(画像E Name項目)Tags:[0]リストの最初の項目Value値 を指定します
.[{OS:PlatformDetails,Name:Tags[0].Value}]
{key1:value,key2:value}のdict形式にフォーマットして、項目名と値を出力するようにする
--out table テーブル形式にすることで見た目が分かり易すくなります

画像C 階層
                  画像C 階層
画像D PlatformDetails項目
              画像D PlatformDetails項目
画像E Name項目
                 画像E Name項目

2.3 出力項目を増やしてみよう!(インスタンスタイプ)

aws ec2 describe-instances \
--query "Reservations[*].Instances[*].[{OS:PlatformDetails,Name:Tags[0].Value,Type:InstanceType}]" \
--out table

画像F 3項目出力
                 画像F 3項目出力

追加したqueryオプションの設定は以下のようになります
[{OS:PlatformDetails,Name:Tags[0].Value,Type:InstanceType}]"
下の階層の (画像G Instancetype項目) の値を追加して、出力するようにする

画像G InstanceType項目
               画像G InstanceType項目

2.5 出力形式をTEXTに変更してみよう!

aws ec2 describe-instances \
--query "Reservations[*].Instances[*].[{OS:PlatformDetails,Name:Tags[0].Value,Type:InstanceType}]" \
--out text

画像H Text形式
                 画像H text形式

Text形式で出力して、情報を加工し易くすることが可能になります

4 応用してみよう!

利用可能なインスタンスタイプ、アーキテクチャ、仮想化、プロセッサー、Hypervisorを
出力しよう。インスタンスタイプの変更可否(互換性)を確認したい場合に重宝します。

aws ec2 describe-instance-types \
--query "InstanceTypes[*].[{InstanceType:InstanceType,Hypervisor:Hypervisor, \
CPU:ProcessorInfo.SupportedArchitectures[0], \
Clock_Ghz:ProcessorInfo.SustainedClockSpeedInGhz}]" \
--out table

                 画像I 出力結果

5 感想

query を利用することで、必要な項目を絞ることができました。 jqを利用しても可能ですが、こちらを利用しても、同様のことができそうです。最初は書き方に悩みましたが、pythonのlist[],dict{}を連想すると、分かり易いです。次回はRDSの情報出力についてです。

参考URL AWS CLI の query による絞り込み
https://qiita.com/draco/items/fa09ae0c2f51de9de449

Linux版その2 RDSの情報出力  https://opt-p.co.jp/blog/aws/post-1718/

Linux版その3 VPCの情報出力  https://opt-p.co.jp/blog/aws/post-2080/

Linux版その4 色々な情報出力 https://opt-p.co.jp/blog/aws/post-2421/

AWSについてのざっくりとしたお話

AWS(Amazon Web Services)image

今回はAWSについて書いてみたいと思います。ただ、もしかしたら弊社ブログを読んでくださっている方の中には「そもそもAWSって何?AWSって言葉自体は聞いたことあるけど、どんなものかよく知らないんだよね~」という方もいらっしゃるかもしれません。

ですから、今回のブログではそのあたりの概要について「ざっくり」と書いてみたいと思います。

1. そもそもAWSってなんだろう?をざっくりと説明します。

AWSというのはAmazon Web Servicesの略称です。つまり、AWSというのはAmazonがやっているクラウドコンピューティングサービスです。

Amazonは有名なので知らない方はなかなかいらっしゃらないと思います。今このブログを読んでくださっているあなたもおそらくAmazonで商品を購入したことはあるでしょう。多くの人がAmazonに対して抱いている一般的イメージとしては「インターネット上の本屋さん」といった感じでしょうか?(もっとも、ご存知のとおりAmazonの商品は書籍だけではありませんが。)

当初AWSはそのAmazonが自社の業務に使うシステムとして作ったものでしたが、その後一般にもリリースされました。以降、さまざまな進化を遂げつつ今日に至っています。

2. じゃあ、クラウドサービスってなんだろう?をざっくりと説明します。

さて、ではクラウドサービスってなんでしょうか?これは要するに、インターネット経由でコンピューティングやデーターベースやストレージなどの色々なITリソースを利用できるサービスのことです。これらを全部自分のオフィスや自宅に用意するのは費用的にもスペース的にも大変ですよね?

そこでインターネットの普及とともにクラウドサービスが登場したわけです。特にAWS、Microsoft Azure、GCP (Google Cloud Platform)は代表的なクラウドサービスです。これらのクラウドサービスからリソースを借りてシステムを構築するわけですね。弊社ではこの中でも特にAWSを得意としております。

3. 従来のシステムとの違いは?をざっくりと説明します。

企業がサーバーを利用したシステムを構築する場合、当初は「オンプレミス」と呼ばれる物が主流でした。これも詳しく話しだすとキリがないのですが、言うなれば「自社運用」です。つまり、サーバー等の機器を全部自社で用意し運用していく方式です。

もちろん今でもこの方式で運用されているシステムはたくさんあります。ただ、この方式の場合自社で構築・運用するので最初の導入までにお金や時間がずいぶんかかります。また、導入した後も管理・維持していく上でのコストがかかります。全部自社で用意するとなると、自社の都合に合わせて自由に環境を作れるというメリットもありますが、お金や手間もそれなりにかかるわけです。

なんとかコストダウンや効率化を図りたいところですよね?そこでAWSの登場です!オンプレミスと違ってAWSが用意したクラウド上のリソースを使用してあなたの会社のシステムを構築するわけですね。

4. AWSを導入する利点は?をざっくりと説明します。

さあそれではAWSの利点の説明に入りましょう。まず、AWSを使用すると金銭的にも時間的にも導入コストを下げることができます。オンプレミスと異なり、ハードウェアはインターネットでつながった向こう側のどこかにあるAWSのデータセンター(セキュリティ上の理由などから、具体的にそれがどこなのかといったことは公表されていません)にある物を借りて使います。

基本的にはハードウェアの調達が不要であることと、システムの構築にかかる時間も短くてすむことから初期費用という点ではかなりAWSの方にアドバンテージがあると言えます。また、運用開始後のコストに関しても、AWSは使った分だけ利用料金を支払う従量課金制であるので無駄な費用が発生しにくいのが特徴です。さらには、オンプレミスと違って構築したシステムの規模を後からその時々の都合で大きく拡張したり小さく縮小したりすることも可能だという柔軟性があります。これもコスト削減につながりますね。

メンテナンスに関しても、ハードウェアの部分に関しては基本的にはAWS側で面倒をみてくれます。コストの面だけでなく、機能・性能といった面やセキュリティといった面においてもAWSは意欲的で、それゆえにかなり速いスピードで新しいサービスが次々とローンチされています。

と、ここまで書くとシステムを構築するならAWS一択かなぁといった印象を持った方もいらっしゃるかもしれませんね。確かにAWSの方が導入時の初期費用は安くすみますし、運用開始後も無駄な費用が発生しにくいですが、システムの規模や使い方によってはオンプレミスの方が費用が掛からない場合もあり得ます。また、AWSはオンプレミスと違ってハードには手を触れることができません。ですから、場合によってはオンプレミスの方がいいということもあるでしょう。あるいは、現在オンプレミスで利用しているシステムをそう簡単にAWSに移行することはできないという場合もあるかもしれませんね。

そんな場合でもAWSではオンプレミスと連携するためのサービスが用意してあります。AWSとオンプレミス、どちらか一方に絞るのではなく連携させて上手に使うということも可能になっているのです。

◆ 最後に:より詳しく知りたい方へ

少し長くなりましたが、ここまでAWSについて「ざっくりと」説明させていただきました。いかがでしたでしょうか?より詳しい説明を聞きたいという方、自社にも導入してみようかなと思われた方がいらっしゃいましたら、どうぞご遠慮なさらずに弊社までご連絡くださいませ。ざっくりとではなく、あなたと「じっくりと」AWSについてお話できる機会を楽しみにお待ちしています。

【AWS】S3で2分55秒でWebサイトをインターネット上に公開する。

AWS S3

皆さんは、AWS S3の「静的ウェブサイトホスティング」という機能をご存じでしょうか?
この機能を利用すると、だれでも簡単にインターネット上にWebサイトを公開することができます。
また、普段からAWSを利用している人でも「知っているけど使ったことがない」という人が案外多いのではないでしょうか。(自分がそうでした
そこで今回、「どのくらい簡単なのか?」を

  • Webサイトが公開されるまでの時間

を計測しながら、実際に検証してみたいと思います!

1. 静的ウェブサイトホスティングとは


そもそも 静的ウェブサイトホスティング とは何なのかと言うと

静的ウェブサイト → いつ・どこで・だれがアクセスしても変わらないWebサイトのこと。
ホスティング   → WebサイトやWebアプリケーションをインターネット上で一般公開すること。

つまりは

「いつ・どこで・だれがアクセスしても変わらないWebサイトをインターネット上に一般公開すること」

ことになります。

ちなみに、この逆でGoogleなど検索結果によって表示される内容が変わるものを動的ウェブサイトと言います。
そして、今回検証するS3の「静的ウェブサイトホスティング」というのは

「S3を利用すれば、いつ・どこで・だれがアクセスしても変わらないWebサイトをインターネット上に一般公開することができる」

という、S3にアクセスするとWebサイトが見れるようになる機能になります。

※イメージ図

2. 内容


今回の検証内容は、AWS公式チュートリアルの

を参考にします。

検証の前に一度こちらのチュートリアルを実践しました。 わかりやすく簡単でした。
検証のおおまかな流れは以下のとおりです

  1. 公開したいhtmlファイルを用意する。
  2. S3バケットを作成する。
  3. 静的ウェブサイトホスティング機能の設定をする。
  4. S3バケットへのアクセス権限設定をする。
  5. S3バケットに対してWebブラウザからアクセスする。

3. 検証


htmlファイルの用意

こちらのindex.htmlが、今回公開したいWebページのホームになります。
検証ですので最低限表示されるものを記述しただけになります。

こちらのerror.htmlは、今回公開するWebページがエラーの際に表示されるページになります。

(0:00) 開始

(0:01) AWSへログイン

(0:15) S3バケットを作成

S3コンソール画面から バケット を選択し、バケットを作成 を押します。

(0:17) S3バケット作成時の設定

バケット作成の設定は赤枠を設定しました。

① バケット名
作成するバケット名を入力します。
作成するバケット名は全リージョンで一意でなければなりません。

② AWSリージョン
バケットが作成されるAWSリージョンを選択します。
日本国内であれば東京や大阪を選びましょう。

③ パブリックアクセスをすべてブロック
パブリックアクセスの設定をおこないます。
今回は検証としてWebサイトを公開するのでこちらはチェックを外します。

④ 警告内容の承認
パブリックアクセスをすべてブロックをオフにしたことによる警告です。
S3内のWebサイトを公開するのでチェックを入れます。

そのほかはそのままで、ページ一番下の バケットを作成 を押します。

(0:50) 作成されたバケットの設定

無事S3バケットが作成されました。
この 作成されたバケット を選択します。

(1:00) 「静的ウェブサイトホスティング」の設定

プロパティタブ を選択します。

この時点では静的ウェブサイトホスティングが無効になっています。
静的ウェブサイトホスティングの 編集 を押します。

編集内容では赤枠を設定しました。

① 静的ウェブサイトホスティング
静的ウェブサイトホスティング機能の有無を選択します。
今回の目的の機能なので 有効にする を選択します。

② ホスティングタイプ
ホスティング機能の種類を選択します。
作成したバケットで公開するので 静的ウェブサイトをホストする を選択します。

③ インデックスドキュメント
公開したいWebサイトのホームとなるページ名を入力します。
最初に作成したファイル名のindex.htmlと入力します。

④ エラードキュメント
エラーの際に表示されるページ名を入力します。
オプションになっているため入力しなくても問題ありませんが
検証のためこちらにも、最初に作成したファイル名のerror.htmlを入力します。

そのほかはそのままで、ページ一番下の 変更の保存 を押します。

(1:40) WebサイトのURLを確認。

先ほどの設定が反映され、静的ウェブサイトホスティングが有効になりました。
この、バケットウェブサイトエンドポイントに表示されているURLがWebサイトのURLになります。

(1:45) バケットポリシーの設定する。

アクセス許可タブ を選択します。

この時点ではまだ何もポリシーが設定されていません。 バケットポリシーの 編集 を押します。

上記ポリシーのバケット名の部分を作成したS3バケット名に変更します。
このポリシーは、指定したバケット内のオブジェクト(ファイル)に対してGETアクションを可能にさせます。
このポリシーを設定して 変更を保存 を押します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::バケット名/*"
            ]
        }
    ]
}

ポリシーに問題なければ先ほどの画面にポリシーが表示されます。

(2:17) htmlファイルをS3バケットへアップロードする。

作成したバケットにindex.htmlとerror.htmlをアップロードします。

(2:55) WebサイトのURLへアクセス

先ほど確認した、バケットウェブサイトエンドポイントに表示されているURLをクリックすると…
無事index.htmlの内容が表示されました!!
記録は2分55秒 たったこれだけの時間でWebサイトが公開できてしまいます。AWS恐るべしですね。

また、存在しないアドレスを入力した際にはerror.htmlが表示されます。


5. あとがき

今回、S3の「静的ウェブサイトホスティング」の機能ではに簡単にWebサイトを公開することができました。
また、今回はWebサイトのURLをバケットウェブサイトエンドポイントの値そのままで使用しましたが、AWSの他サービスと連携することによりドメインの変更することも可能です。

次回はそのドメイン変更を「S3静的ウェブサイトのドメインを変更する」で実施してみたいと思います。

広島のスマートSMEサポーターとして、弊社が経済産業省から認定を受けました

広島のスマートSMEサポーター、オプトプランニング

広島のクラウドエンジニアカンパニー・オプトプランニングです。

2021年6月7日に経済産業省から弊社はスマートSMEサポーターとして認定を受けました。

スマートSMEサポーター制度の詳細は以下のサイトをご確認ください。

https://smartsme.go.jp/

一部、引用すると、スマートSMEサポーター制度とは、中小企業の生産性を高めるためのITツールを提供するITベンダー等のIT導入支援者を「情報処理支援機関」として認定する制度のことです。

ITツールを導入したい中小企業はどんなツールをどんな企業に依頼すればいいかわからないといった悩みに対して、本認定を受けたITベンダーや認定を受けているITベンダーの情報を見ながら依頼先を選定することができます。

また、中小企業が使いやすいITツールの開発をITベンダー等に促すとともに、中小企業のIT導入を通じた生産性向上を図ります。

オプトプランニングは、

・kintone(キントーン)業務アプリ開発サービス

・無料RPAツール「Power Automate Desktop」の導入支援

・クラウド基盤(インフラ)構築・運用サービス(AWS)

・テレワーク・モバイルワーク導入支援コンサルティングサービス     

・中小企業向けセキュリティ対策「あんしんプラス」ウイルスバスタービジネス

・中小企業向けセキュリティ対策「あんしんプラス」メール/Webセキュリティ

などを提供しております。

主に広島の中小企業の生産性向上に向けて、取り組んで参ります。

弊社のサービスにご関心がある方は以下にて、お気軽にお問い合わせください。

https://www.opt-p.co.jp/inquiry/

[予告]AWS(Amazon Web Services)の個別相談会(無料)を6月よりおこないます(広島開催)

広島でのAWS導入セミナーのイメージ

弊社では、AWSについて基盤構築・監視、運用・保守までワンストップ対応で対応しております。

・オンプレミスからAWSに移行したいが、どう進めて良いか分からない

・AWSの導入の仕方について知りたい

・AWSを導入したが、上手く使いこなせていない

・AWSの技術について、不明点をきめ細かくサポートしてほしい

・要件に応じて、AWSのサービス・仕様等の提案をしてほしい

というお客様や

・クラウドエンジニアが不足して、人員・納期調整で苦労している

・自社のエンジニアはシステム開発などに注力させたい

・運用・保守は外部に任せ、本業に注力したい

というお客様に向けた、無料の個別説明会となっています。

自社での導入のご検討のお客様や、エンドユーザーにご提案されるSIベンダー様なども対象としております。

通常1時間程度となっております。

6月より実施しますので、ご希望の会社・団体様は、お気軽に以下の問い合わせフォームからお申し込みください。もしくは電話(082-502-1525)でも受け付けしております。

https://www.opt-p.co.jp/inquiry/