0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS試験でよく見る「インターネットを通ることなくS3からデータを取得する」を構築してみた

0
Posted at

はじめに

おきたです。
今回はAWS試験で一度は聞いたことがある、
S3 Gateway Endpointを用いて、インターネットを使用せずにデータの取得を行う
というのを実際に構築していきます。
思ったよりも難しかったので、ぜひぜひチャレンジしてみてください!

なぜ通信が可能なのか

通常、EC2からS3へアクセスするにはインターネットゲートウェイやNATゲートウェイが必要です。

しかし、S3 Gateway Endpointを利用すると、
VPCのルートテーブルにS3専用のルートが追加され、
AWS内部ネットワーク経由でS3にアクセスできるようになります。

そのため、インターネットを経由せずに安全に通信が可能になります。

構成

image.png

構成は上図のようにしていきます。
Private subnetにEC2を設置し、S3 Gateway Endpointを用いてS3に接続していきます。
この接続が確からしいかをSystems Manager Session Managerを用いて検証していきます。

流れ

・VPC作成
・サブネット作成
・ルートテーブルの作成
・IAMロールの作成
・EC2の作成
・S3バケット作成
・VPCエンドポイントの作成
・Systems Manager用のインターフェースエンドポイント作成
・EC2にSession Managerを用いて接続し構築が正しく行われているか検証

上記のようになっております。
(結構やることある)

Step1:VPCの作成

目的:専用のネットワークスペースを作成するため

AWSコンソールの検索窓にVPCと打ち、VPCを作成を押します。
image.png

このように適当な名前タグをつけ、IPv4 CIDRを10.0.0.0/16という風に設定します。

Step2:サブネット作成

目的:EC2を設置するための、ネットワークとは隔離されたスペースを作成するため

同じくVPCのところから、
image.png
上図のサブネットというところをクリックします。

サブネットを作成というところをクリックし、
VPC IDをStep1で作成したVPCに設定します。
サブネットを以下のように設定します。
image.png

設定
VPC ID Step1で作成したVPC ID
サブネット名 Private-subnet
アベイラビリティーゾーン 米国
IPv4 サブネットCIDR ブロック 10.0.0.2/24

としてください。

作成後、アクションのところで
image.png
図のようにDNSホスト名を有効化というところにチェックをいれてください。
(これやらないとSystems Managerのエンドポイント作成が出来ない)

Step3:ルートテーブルを設定

目的:どこを通信するかを指定するため

同じくVPCのところから、ルートテーブルというところを選択します。
見てみると、
image.png
図のような特に名前もついていないルートテーブルが存在しています。
(デフォルトのVPCのルートテーブルがある人は複数あるはずです)
このルートテーブルはVPCを作成すると自動的に作成されます。

このルートテーブルの下の方に、
「サブネットの関連付け」
という項目があります。
image.png
そこに、先ほどStep2で作成したサブネットを選択してください。
これによって、ルートテーブルとサブネットが紐づけられました。

Step4:IAMロールの作成

目的:Step5のEC2の作成に必要なIAMロールを作成
AWSコンソールの検索窓にIAMを打ち、ロールというところをクリックします。
ロールを作成を押し、設定します。

image.png

設定を以下のように行います。
ここに書かれていること以外はデフォルトの設定値で構いません。

設定
信頼されたエンティティタイプ AWSのサービス
ユースケース EC2
許可ポリシー① AmazonS3FullAccess
許可ポリシー② AmazonSSMManagedInstanceCore

〇AmazonS3FullAccess
S3に対するアクセスを全て許可するポリシー
これによってEC2がS3にアクセスできるようになります。

〇AmazonSSMManagedInstanceCore
Systems Managerを利用できるようにするためのポリシー
これによってEC2とSystems Managerがアクセスできるようになります。

Step5:EC2の作成

目的:S3にアクセスする+Systems Managerで検証をするため
AWSコンソールの検索窓にEC2を打ち、インスタンスというところをクリックします。
その画面にインスタンスを起動を押します。

設定は以下の通りです。ここに記載されている以外の物はデフォルト値で構いません。

設定
名前タグ 適当な名前付け
キーペア キーペア無しで続行
高度な詳細のIAMインスタンスプロファイル Step4で作成したIAMロール

Step6:S3バケットの作成

目的:アクセスする先をつくる
AWSコンソールの検索窓にS3と打ち、バケットを作成をクリックします。

設定値は全てデフォルトで構いません。

作成し、そのバケットのリンクを踏むと以下の図のようなサイトが出てきます。
image.png

今回は、S3にアクセスできたかを確認するため、S3バケットにオブジェクトを入れていきます。

内容は以下のようにして、ファイル名をindex.htmlとします。
image.png

このファイルをS3バケットにアップロードします。

成功すると、以下の画面になります。
image.png

これでS3バケットの作成および中身を入れることに成功しました。

Step7:S3用のVPCエンドポイントの作成

**目的:VPC外のS3と通信するため
同じくVPCのエンドポイントという欄をクリックします。
image.png

設定を以下のように行います。

設定
名前タグ 適当な名前付け
サービス com.amazonaws.us-east-1.s3
ネットワーク設定 Step2で作成したVPC
ルートテーブル Step3で関連付けたルートテーブル

これでエンドポイントを作成します。

Step8:Systems Manager用のインターフェースエンドポイント作成

目的:Systems Manager用のエンドポイントを作成
現時点で、PrivateサブネットにいるEC2がS3ゲートウェイエンドポイントを通じてS3のバケットに接続している。という構築が出来ているはずです。

一方でSystems Manager用のエンドポイントを作成しない限り、外部からEC2に接続することが出来ないため、Systems Manager用のエンドポイントを作成します。

AWSコンソールの検索窓にVPCと入れ、左側のバーでエンドポイントの箇所をクリックしてください。

今回は3種類のエンドポイントを作成してもらいます。

エンドポイント 役割
com.amazonaws.us-east-1.ssm Systems Manager本体のAPIがコマンド送信など行うため
com.amazonaws.us-east-1.ec2messages EC2とSSMを連携するために必要
com.amazonaws.us-east-1.ssmmessages シェル操作を行うために必要

設定は以下の通りにします。

設定
名前タグ 適当な名前
サービス さきほどのエンドポイント3種類のいずれか
ネットワーク設定 Step2で作成したVPC
サブネット Step2で作成したサブネット
セキュリティグループ Step5で作成したセキュリティグループと同じもの

にします。これを3種類作成してください。

Step9:EC2にSession Managerを用いて接続し構築が正しく行われているか検証

目的:きちんと構成が出来ているかを確認する
ようやく最後の段階に入ってきました。
AWSコンソールの検索窓にEC2を打ち、先ほど作成したEC2インスタンスにチェックマークを押します。
すると、接続ボタンが光るので、押してください。

SSM Session Managerという欄をクリックしてください。

image.png

ここのPing StatusとSession Manager connection statusが緑色であればOKです。
(赤色の場合はだいたい、セキュリティグループが原因だと思います)

接続すると、黒い画面に映ります。
ここで以下のコマンドを打ちます。
whoami
aws s3 ls
aws s3 ls s3://s3バケット名
aws s3 cp s3://s3バケット名/index.html -

それぞれ回答が得られればOKです!
以下の図のようになるはずです。

image.png

最後に

今回はS3ゲートウェイを用いた構築を行いました。
AWS試験では1行ほどで軽く済まされる内容でしたが、実践してみるとかなり歯ごたえがありました。

せひチャレンジしてみてください。

注意

使用後のリソースはすぐに削除するようにしてください!
(無駄に課金されてしまうので)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?