AWS:EC2とS3をVPCエンドポイントで接続

VPCエンドポイントってなに?

VPCエンドポイントって聞いたこと有りませんでした。

気がついたのがLightsail環境のインスタンスとS3をつなぎたいなと調べる中で出会いました。

Amazonのドキュメントはこちらにあります。

それによると・・・・

元祖wエンドポイントは仮想デバイスです。これらは水平にスケールされ、冗長で、可用性の高い VPC コンポーネントです。これにより、ネットワークトラフィックに可用性リスクや帯域幅の制約を課すことなく、VPC 内のインスタンスとサービス間の通信が可能になります。

VPC エンドポイントでは、AWS PrivateLink を使用する、サポートされている AWS サービスや VPC エンドポイントサービスに VPC をプライベートに接続できます。インターネットゲートウェイ、NAT デバイス、VPN 接続、または AWS Direct Connect 接続は必要ありません。VPC のインスタンスは、サービスのリソースと通信するためにパブリック IP アドレスを必要としません。VPC と他のサービス間のトラフィックは、Amazon ネットワークを離れません。

いちいちインターネットに出ることなく、プライベートネットワークで、VPC外のAWSサービスにアクセスができるようになります。

VPCエンドポイントには2種類あります

VPCエンドポイントの種類としては、インターフェイスタイプとゲートウェイタイプの2種類が存在ます。

ゲートウェイタイプは、S3とDynamoDBが対応しています。

インターフェイスタイプは、以外のサービスが対応しています。

他に、運用に直結する項目で、大きく違うのは通信量です。

ゲートウェイ型はエンドポイント経由の通信料は無料ですが、インターフェイス型は時間あたりのエンドポイントの利用料とGBあたりの通信料が掛かります。

内部通信やから、無料なんと違うんかいなって思ってると、痛い目にあうかもしれません(^^;

今回は、S3をつなぐので、ゲートウェイタイプのVPCエンドポイントの確認を行います。

今回の構成

今回は下記のような環境を構成しました。

※本ページでは、インスタンス、S3の基本的な設定は記載しません。

1)エンドポイントを作成します

下記の内容で作成します。

サービス名:com.amazonaws.ap-northeast-1.s3

VPC:test01-vpc

ルートテーブル:test01-vpc-rtb

ポリシー:フルアクセス

test01-vpctest01-vpc-subnet01はインスタンス構築時に設定されたものです。

構築されるとtest01-vpc-rtbにs3へのサブネットが追加されます。

2)接続をしてみましょう!

たいていの「EC2とS3をVPCエンドポイントで接続する」って記事では、ここまでの作業をすれば接続ができるように書かれています。

ってことで、接続をしてみましょう!

$ aws s3 ls s3//ku-bucket01
Unable to locate credentials. You can configure credentials by running “aws configure”.

??つながらない??

aws configureを設定しろってことは、インターネットゲートウェイ経由で接続をしろって言われてます??

configureを設定すれば接続できることは確認はしたんですが、今回の目的とは違ってしまいます(^^;

IAMロールって知ってます?

いろいろ調べててもわからず、ヘルプを出したところ、「IAMロール」の設定が必要とのアドバイスをもらいました。

「AWS Identity and Access Management 」ってやつで、

AWS リソースへのアクセスを安全に管理するためのウェブサービスです。IAM を使用して、リソースを使用するために認証 (サインイン) され、許可された (アクセス許可を持つ) ユーザーを制御します。

ってこちらのドキュメントに記載されています。

リソースの制御に使用する認証の仕組みなんですね。。

こんなん、ググっても全然出てきませんでしたorz

ロールが作成されていないときこのような状態が表示されます。

では、やってみましょう!

1)IAMロールの作成

インスタンスの画面から、アクション→インスタンスの設定→IAMロールを変更を選択します。

「インスタンスの概要」に”IAMロール”の項目がありますが、”-“な感じになっていると思います。

“新しいIAMロールを作成”を選択します。

「ロールを作成」ボタンをクリックします。

「ユースケースの選択」で”EC2″を選択して「アクセス制限」をクリックします。

ポリシーとして”AmazonS3FullAccess”をクリックして「タグ」をクリックします。

タグが必要なら入力して「確認」をクリックします。

※名称は”test01-s3-access-role“として作成をしました。

「ロールの作成」をクリックすると、IAMロールが作成されます。

2)IAMロールをアタッチします。

「IAMロールを変更」の画面を表示して、今作成したIAMロールを選択して、「保存」をクリックします。

先程の状態の表示が下記のように変わっています。

それと、インスタンス概要にアタッチしたIAMロールが表示されています。

3)S3に接続します。

$ aws s3 ls s3://ku-bucket01

2020-09-19 14:49:51          6 test.txt

 

無事表示されました!

やれやれ。。。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA