[UPDATE] AWS Elemental MediaConnectでAWS PrivateLinkをサポートしました

AWS Elemental MediaConnect用のInterface型VPC Endpointが利用可能になりました。インターネットを介さずにMediaConnectのAPIにアクセス可能です。実際に動作を確認してみました。
2022.02.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。本日お届けするアップデート情報はこちら!AWSの高品質ライブ動画伝送サービスであるAWS Elemental MediaConnectでAWS PrivateLinkをサポートしました。(2022/02/10にポストされたアップデート情報となります。)

Interface型VPCエンドポイント(PrivateLink)を使用することで、EC2などVPC内のリソースからInternet GatewayやNAT Gateway、プロキシなどを経由せずにMediaConnectのAPIにアクセスできるようになります。またDirectConnectやVPNを経由してオンプレミス環境からMediaConnectのAPIにアクセスが可能です。本エントリではこのMediaConnectのInterface VPC Endpointについて実際に動作を確認してみたのでまとめてみます。

実際にAWS Elemental MediaConnect用のPrivateLink(Interface VPC Endpoint)について試してみます。

動作検証環境について

PrivateLink for MediaConnectの動作検証用の環境として以下を準備しました。

  • Public SubnetとPrivate Subnetを持つVPC
    • Public SubnetはInternet Gatewayへの経路を持ち、インターネット通信可能
    • Private Subnetはインターネット通信不可
      • Internet Gateway、NAT Gateway等への経路を持たない
  • PublicSubnet、Private SubnetにそれぞれEC2を1台構築
    • PublicSubnetのEC2を踏み台にしてPrivate SubnetのEC2にSSH接続

この環境にMediaConnect用のVPCエンドポイントを追加することで、Private SubnetのEC2からMediaConnect APIにアクセスできるようになる、というわけです。これを実際に確認していきます。

MediaConnectのAPIへのアクセスはAWS CLIのaws mediaconnectコマンドを使用しました。EC2にはIAMロールにて必要な権限をアタッチしています。また動作確認はいずれも東京リージョン(ap-northeast-1)で行いました。(なお、ドキュメントにも記載がある通り現在のところクロスリージョンは対応していない点に注意しましょう。MediaConnect interface VPC endpoints (AWS PrivateLink) - AWS Elemental MediaConnect

MediaConnect用VPCエンドポイント設定前の状態

PrivateSubnetに配置したEC2からAWS CLIでMediaConnectのAPIにアクセスしようとしても、反応がない状態となります。MediaConnectエンドポイントとの通信ができないためですね。(レスポンスがなく、Ctrl-Cで停止しています。

[ec2-user@ip-10-213-21-15 ~]$ aws mediaconnect list-flows --region ap-northeast-1
^C

MediaConnectのエンドポイントについてdigコマンドで確認してみると以下のような結果となりました。4つのパブリックIPが返ってきています。

[ec2-user@ip-10-213-21-15 ~]$ dig mediaconnect.ap-northeast-1.amazonaws.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> mediaconnect.ap-northeast-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60498
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mediaconnect.ap-northeast-1.amazonaws.com. IN A

;; ANSWER SECTION:
mediaconnect.ap-northeast-1.amazonaws.com. 11 IN A 13.33.210.24
mediaconnect.ap-northeast-1.amazonaws.com. 11 IN A 13.33.210.72
mediaconnect.ap-northeast-1.amazonaws.com. 11 IN A 13.33.210.102
mediaconnect.ap-northeast-1.amazonaws.com. 11 IN A 13.33.210.75

;; Query time: 0 msec
;; SERVER: 10.213.0.2#53(10.213.0.2)
;; WHEN: 日  2月 13 13:17:18 UTC 2022
;; MSG SIZE  rcvd: 134

またPrivate Subnetに関連付けているルートテーブルは以下の状況です。これではMediaConnectのAPIエンドポイントへのアクセスはできませんね。

MediaConnect用VPCエンドポイントの作成

PrivateLink経由までの状況が確認できたところで、実際にMediaConnect用のVPC Endpointを作成していきます。VPCのマネジメントコンソール、エンドポイントの項目の[エンドポイントを作成]ボタンから進みます。名前タグを適切に入力、サービスカテゴリは「AWSのサービス」を選択します。

サービスでは「mediaconnect」で検索して、「サービス名: com.amazonaws.ap-northeast-1.mediaconnect」を選択します。

VPCならびにサブネットを選択します。サブネットはPrivate Subnetを選択しました。2つのAvailability Zoneを利用しているため、両方のAZでサブネットをそれぞれ選択しています。セキュリティグループはMediaConnectのVPCエンドポイント用に作成したものを使用しました。ポリシーについては、今回は検証目的であるためフルアクセスとしています。実際には要件などにあわせて適切に権限を管理する必要があるかと思います。

エンドポイントが作成できました。作成当初はステータスが「保留中」ですがしばらくすると「利用可能」となります。

MediaConnect用VPCエンドポイントの利用

エンドポイントが利用可能になったあと、PrivateSubnet(Internet GatewayやNAT Gatewayへの経路を持たない)に配置したEC2での挙動を確認してみます。以下のようにAWS CLIでaws mediaconnectコマンドを使用することができました。

[ec2-user@ip-10-213-21-15 ~]$ aws mediaconnect describe-flow --flow-arn arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-VAwAXXXXXXXXClJT-b1xxxxxxxxb0:MediaConnectSRTFlow --region ap-northeast-1
{
    "Flow": {
        "Status": "ACTIVE",
        "FlowArn": "arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-VAwAXXXXXXXXClJT-b1xxxxxxxxb0:MediaConnectSRTFlow",
        "AvailabilityZone": "ap-northeast-1d",
        "Name": "MediaConnectSRTFlow",
        "Sources": [
            {
                "Description": "MediaConnect SRT Source.",
                "IngestIp": "198.51.100.1",
                "IngestPort": 3000,
                "WhitelistCidr": "198.51.100.2/32",
                "SourceArn": "arn:aws:mediaconnect:ap-northeast-1:123456789012:source:1-VAwAXXXXXXXXClJT-b1xxxxxxxxb0:MediaConnectSRTSource",
                "Transport": {
                    "MaxBitrate": 5000000,
                    "Protocol": "srt-listener"
                },
                "Name": "MediaConnectSRTSource"
            }
        ],
        "Outputs": [
            {
                "OutputArn": "arn:aws:mediaconnect:ap-northeast-1:123456789012:output:1-VAwAXXXXXXXXClJT-b1xxxxxxxxb0:MediaLive-82xxxxxxxx0f",
                "Description": "Output created automatically by MediaLive for account 123456789012 to input ARN arn:aws:medialive:ap-northeast-1:123456789012:input:5800007",
                "MediaLiveInputArn": "arn:aws:medialive:ap-northeast-1:123456789012:input:5840107",
                "Name": "MediaLive-82xxxxxxxx0f"
            }
        ],
        "Source": {
            "Description": "MediaConnect SRT Source.",
            "IngestIp": "198.51.100.1",
            "IngestPort": 3000,
            "WhitelistCidr": "198.51.100.2/32",
            "SourceArn": "arn:aws:mediaconnect:ap-northeast-1:123456789012:source:1-VAwAXXXXXXXXClJT-b1xxxxxxxxb0:MediaConnectSRTSource",
            "Transport": {
                "MaxBitrate": 5000000,
                "Protocol": "srt-listener"
            },
            "Name": "MediaConnectSRTSource"
        },
        "Entitlements": [],
        "EgressIp": "198.51.100.1",
        "Description": "MediaConnect SRT Source."
    }
}
[ec2-user@ip-10-213-21-15 ~]$ aws mediaconnect stop-flow --flow-arn arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-VAwAXXXXXXXXClJT-b1xxxxxxxxb0:MediaConnectSRTFlow --region ap-northeast-1
{
    "Status": "STOPPING",
    "FlowArn": "arn:aws:mediaconnect:ap-northeast-1:123456789012:flow:1-VAwAXXXXXXXXClJT-b1xxxxxxxxb0:MediaConnectSRTFlow"
}

digコマンドでの名前解決結果についても確認しておきましょう。MediaConnect用のVPCエンドポイントを使用していない状況下ではパブリックIPアドレスが返ってきていましたが、VPCエンドポイント使用下では以下のように、VPC内のプライベートIPが返ってくることがわかります。

[ec2-user@ip-10-213-21-15 ~]$ dig mediaconnect.ap-northeast-1.amazonaws.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> mediaconnect.ap-northeast-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12754
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mediaconnect.ap-northeast-1.amazonaws.com. IN A

;; ANSWER SECTION:
mediaconnect.ap-northeast-1.amazonaws.com. 60 IN A 10.213.21.5
mediaconnect.ap-northeast-1.amazonaws.com. 60 IN A 10.213.22.174

;; Query time: 1 msec
;; SERVER: 10.213.0.2#53(10.213.0.2)
;; WHEN: 日  2月 13 15:52:28 UTC 2022
;; MSG SIZE  rcvd: 102

まとめ

AWS Elemental MediaConnectの新機能、PrivateLink(Interface型VPCエンドポイント)のサポートについて確認してみました。MediaConnectについては、2020年4月のアップデートでInput/Output両方でVPCをサポートしていました。(VPC Input and Output Support now available with AWS Elemental MediaConnect)このVPCサポートでDirectConnectなどで接続したオンプレミス環境からインターネットを介さずに映像伝送が可能でしたが、今回これに加えてMediaConnectのAPIについてもインターネットを介さないアクセスが可能になったかたちです。AWS ElementalなサービスではこれまでPrivateLink対応はされておらず、今回のMediaConnectの対応が初だったかと思います。AWS Elemental MediaLiveなど他AWS ElementalなサービスのPrivateLink対応も期待したいと思いました。