architecture
A
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
AWS Resource Access Manager(RAM) — クロスアカウントリソース共有
AWS RAMを使ったVPCサブネット、Transit Gateway、Route53リゾルバールール、License Managerライセンスのクロスアカウント共有設定、Organizations統合、招待フローを解説。
一言結論
AWS RAMを使うとVPCサブネットやTransit GatewayをアカウントをまたいでコピーせずにOrganizations単位で共有できるため、マルチアカウント環境のネットワーク設計を一元管理しコストを削減できる。
AWS RAM の概要
Resource Access Manager(RAM)は、AWSリソースを別のAWSアカウントやOrganizationsのOUと共有するサービスだ。リソースをコピーせずに共有できるため、コスト効率が高い。
RAM が不要な方法(リソースのコピー):
アカウントA: VPC作成
アカウントB: 別VPCを作成 → VPCピアリング
→ 管理が分散し、コスト2倍
RAM を使った共有:
アカウントA: 共有サブネットを所有・管理
アカウントB, C: 共有サブネットでEC2を起動
→ リソース一元管理、コスト最適化
RAM で共有できるリソース
よく使われる共有リソース:
VPC:
→ サブネット(プライベート/パブリック)
→ ※ VPC自体は共有不可、サブネット単位
ネットワーク:
→ Transit Gateway
→ Route53 Resolver Rules
→ AWS Network Firewall Policy
その他:
→ License Manager(ライセンス設定)
→ AWS Glue Data Catalog
→ Amazon Aurora DB Cluster(クローン)
→ Systems Manager Incident Manager
VPCサブネットの共有設定
# リソース共有の作成(アカウントAで実行)
aws ram create-resource-share \
--name "shared-subnets" \
--resource-arns \
arn:aws:ec2:ap-northeast-1:123456789012:subnet/subnet-private-aaa \
arn:aws:ec2:ap-northeast-1:123456789012:subnet/subnet-private-bbb \
--principals \
arn:aws:organizations::123456789012:ou/o-xxx/ou-yyy \
--allow-external-principals false
# アカウントBでは共有サブネットを確認(所有者はアカウントAのまま)
aws ec2 describe-subnets \
--filters Name=owner-id,Values=123456789012
共有サブネットの特徴:
所有者(アカウントA):
→ サブネット自体の管理(ルートテーブル変更等)
→ ACLや他の設定の変更
参加者(アカウントB):
→ 共有サブネットでEC2/ELB/RDS等を起動
→ 自分のリソースのみ管理(他アカウントのリソースは見えない)
→ サブネット自体の設定変更は不可
Organizationsとの統合
# Organizations全体への共有(OU対象)
aws ram create-resource-share \
--name "org-wide-tgw-share" \
--resource-arns arn:aws:ec2:ap-northeast-1:123456789012:transit-gateway/tgw-xxx \
--principals arn:aws:organizations::123456789012:organization/o-xxx \
--allow-external-principals false
# Organizations統合を有効化(マスターアカウントで実行)
aws ram enable-sharing-with-aws-organization
Organizations統合の利点:
→ 招待/承認フロー不要(Organizationsメンバーは自動承認)
→ OU単位での共有が可能
→ 一括管理
外部アカウントへの共有:
→ allow-external-principals: true に設定
→ 招待メールが送られ、受信側が承認する必要あり
Transit Gateway の共有
マルチアカウント環境でTGWを一元管理するパターン。
# ネットワークアカウントでTGWを作成
aws ec2 create-transit-gateway \
--description "Shared TGW" \
--options AutoAcceptSharedAttachments=enable
# RAMでTGWをOrganizations全体に共有
aws ram create-resource-share \
--name "shared-tgw" \
--resource-arns arn:aws:ec2:ap-northeast-1:123456789012:transit-gateway/tgw-xxx \
--principals arn:aws:organizations::123456789012:organization/o-xxx
# 各アカウントでTGWアタッチメントを作成
aws ec2 create-transit-gateway-vpc-attachment \
--transit-gateway-id tgw-xxx \
--vpc-id vpc-yyy \
--subnet-ids subnet-aaa subnet-bbb
共有の確認と管理
# 自分が共有しているリソースの確認
aws ram list-resources \
--resource-owner SELF
# 自分に共有されているリソースの確認
aws ram list-resources \
--resource-owner OTHER-ACCOUNTS
# 共有への招待を確認・承認(非Organizations環境)
aws ram get-resource-share-invitations
aws ram accept-resource-share-invitation \
--resource-share-invitation-arn arn:...
試験頻出ポイント
| シナリオ | 回答 |
|---|---|
| 複数アカウントで同じサブネットを共有 | RAM でサブネットを共有 |
| Organizationsメンバーに自動承認で共有 | RAM + Organizations統合 |
| 全アカウントで共通TGWを使う | RAM でTGWを共有 |
| 外部アカウントへの共有 | allow-external-principals: true + 招待承認 |
| 共有サブネットの所有者が管理する範囲 | サブネット設定(ルートテーブル等) |
まとめ
RAMはリソースを複製せずにアカウント間で共有する仕組みだ。VPCサブネットの共有でマルチアカウントのネットワーク設計を一元化でき、TGWの共有でハブ型ネットワーク構成を実現できる。OrganizationsとRAMを組み合わせることで、大規模なマルチアカウント環境でも効率的なリソース管理が可能だ。