別アカウントのVPCからAWS PrivateLinkを使う
2023/02/12
VPC エンドポイントサービス (AWS PrivateLink)を参考にしました。
目次
NLB + EC2 の構成
右側サービス側のNLB+EC2の構築手順は割愛します。
NLBは内部向けにしました。
EC2は以下のユーザーデータで、画面上にインスタンスの情報が表示されるWebサーバーにしています。
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash yum -y update yum -y install httpd systemctl enable httpd.service systemctl start httpd.service AZ=`curl --silent http://169.254.169.254/latest/meta-data/placement/availability-zone` INSTANCE_ID=`curl --silent http://169.254.169.254/latest/meta-data/instance-id` IP_ADDRESS=`curl --silent http://169.254.169.254/latest/meta-data/public-ipv4` echo $AZ\<br\> >> /var/www/html/index.html echo $INSTANCE_ID\<br\> >> /var/www/html/index.html echo $IP_ADDRESS >> /var/www/html/index.html |
エンドポイントサービスの作成
VPCの[エンドポイントサービスの作成]から作成しました。
NLBを選択して、[エンドポイントの承諾が必要]を有効にしました。
VPCエンドポイントサービス、プリンシパルの許可を設定
作成したエンドポイントサービスを選択して、[ホワイトリストにプリンシパルを追加する]アクションから、コンシューマー側(呼び出し元)のアカウントを追加しました。
123456789012 はもう一方のアカウントIDです。
arn:aws:iam::123456789012:root
arn:aws:iam::123456789012:rootの形式で指定すると、アカウントID123456789012でVPCエンドポイントの作成が許可されたIAMユーザー、IAMロールがVPCエンドポイントを作成できます。
もしもエンドポイントサービスを提供する側が、ほかアカウントで許可されるIAMロールやIAMユーザーを限定したい場合は、arn:aws:iam::123456789012:user/usernameや、arn:aws:iam::123456789012:role/rolenameを指定します。
VPCエンドポイントの作成に必要なので、サービス名をメモっておきました。
VPCエンドポイントの作成
123456789012のアカウントで、VPCエンドポイントを作成しました。
[サービスを名前で検索]を選択して、メモっておいたサービス名を入力して[検証]ボタンを押下しました。
操作しているIAMユーザーにVPCエンドポイントの作成が許可されていれば、サービスが見つかります。
サポートされるAZはNLBが設定されているAZのみになりました。
作成すると、[承諾の保留中]となりました。
エンドポイントサービスで承諾する
エンドポイントサービス側のアカウントに戻り、[エンドポイント接続]タブで承諾をしました。
コンシューマーEC2から接続してみる。
EC2インスタンスを起動して、curlコマンドで、VPCエンドポイントのDNSにリクエストしてみました。
1 2 3 4 5 |
$ curl http://vpce-xxxxxxxxxxxxx.vpce-svc-xxxxxxxxxxx.us-east-1.vpce.amazonaws.com us-east-1b<br> i-xxxxxxxxxx<br> 3.237.94.211 |
エンドポイントサービス側のEC2インスタンスの情報が見れました。
エンドポイント作成後に特定のエンドポイントからのリクエストを拒否したい場合
エンドポイントサービス側で、「エンドポイント接続リクエストの却下」を選択します。
状態がRejectになり、接続しようとしてもエラーになります。
1 2 3 |
$ curl http://vpce-xxxxxxxxxxxxx.vpce-svc-xxxxxxxxxxx.us-east-1.vpce.amazonaws.com curl: (7) Failed to connect to vpce-xxxxxxxxxxxxx.vpce-svc-xxxxxxxxxxx.us-east-1.vpce.amazonaws.com port 80 after 3081 ms: No route to host |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
S3リクエストメトリクスをプレフィックスを指定して有効化
検証でどのリクエストがどれぐらい発生しているのか、さっと知りたくなったので、特定 …
-
-
boto3(Python SDK) s3 get_object でバイト範囲を指定する
S3のGetObjectアクションでバイト範囲を指定することができます。 それに …
-
-
ヤマムギ vol.24 API GatewayでREST API作成と直接DynamoDB登録のデモをしました
2週間ぶりのヤマムギ勉強会デモなのでなんだか久しぶりな気がしました。 今日はポケ …
-
-
AWS Organizationsで組織全体のAWS CloudTrailを有効にしました
Organizationsのサービスメニューから、CloudTrailを選択して …
-
-
Cloud9でAWS CDK環境
最初ローカルに作ろうと思ったのですが、環境依存がというか、Macbookの環境で …
-
-
AWS Firewall Managerを設定して結果を確認
CloudFront対応のポリシーとして作成したかったので、Globalを選択し …
-
-
JAWS FESTA 2017 Reverse X re:Birth
JAWS FESTA 2017 中四国 今年はブログタイトル「JAWS FEST …
-
-
Route53でドメインを新規取得してDNSレコードを設定する
Elastic IPをAWSで発行しているのですから、DNSの設定も同じようにマ …
-
-
EC2ユーザーデータからメタデータを取得してRocket.Chatで80ポートを使用する
Rocket.Chatのデフォルトポート番号は3000です。 80を使うようにす …
-
-
AWS WAFのマネージドルールを見てみました
Web ACLで[Add managed rule groups]を選択しました …