[アップデート] Amazon DynamoDBがPrivateLink (インターフェイス型VPCエンドポイント) をサポートしました

[アップデート] Amazon DynamoDBがPrivateLink (インターフェイス型VPCエンドポイント) をサポートしました

Clock Icon2024.03.20

閉域網やVPNの接続元からDynamoDBにアクセスしたい

こんにちは、のんピ(@non____97)です。

皆さんは閉域網やVPNの接続元からDynamoDBにアクセスしたいなと思ったことはありますか? 私はあります。

従来DynamoDBはGateway型のVPCエンドポイントしかサポートされていませんでした。そのため、Direct Connect(Private VIF or Tranit VIF)やSite-to-Site VPNの接続元からアクセスする際にはVPC上にプロキシを用意する必要がありました。

今回、Amazon DynamoDBがPrivateLink (インターフェイス型VPCエンドポイント) をサポートしました

https://aws.amazon.com/jp/about-aws/whats-new/2024/03/amazon-dynamodb-aws-privatelink/

AWS Blogsにも投稿されていますね。

https://aws.amazon.com/jp/blogs/database/simplify-private-connectivity-to-amazon-dynamodb-with-aws-privatelink/

これにより上述の悩みを解消することができます。

閉域網から定期的にDynamoDBに情報を連携するときに便利そうです。

実際にやってみました。

いきなりまとめ

  • Amazon DynamoDBのインターフェイス型VPCエンドポイントを作成できるようになった
  • プライベートDNS名を有効にすることはできない
    • エンドポイントURLを指定する必要がある
    • 以前のS3のInterface型VPCエンドポイントと同じ

やってみた

検証環境は以下のとおりです。

Amazon DynamoDBがPrivateLink (インターフェイス型VPCエンドポイント) をサポートしました検証環境構成図

DynamoDBのインターフェイス型VPCエンドポイントをVPC Bに作成します。

DNS名を無効にして作成

作成する際にはプライベートDNS名を無効にしておきます。有効にすると、Private DNS can't be enabled because the service com.amazonaws.us-east-1.dynamodb does not provide a private DNS name.と怒られてしまいます。

VPC エンドポイントの作成中にエラーが発生しました

つまりは現時点ではDynamoDBのインターフェイス型VPCエンドポイントはプライベートDNS名をサポートしていません。そのため、アクセスする際はエンドポイントURLを明示的に指定する必要があります。S3のインターフェイス型VPCエンドポイントがGAした当初と同じような形ですね。

「プライベートDNS名の有効化とは」は以下記事にまとまっています。

https://dev.classmethod.jp/articles/s3-privatelink-diagram/

https://dev.classmethod.jp/articles/amazon-s3-private-connectivity-on-premises-networks/

数分待つとVPCエンドポイントが作成されました。

VPC エンドポイントが正常に作成されました

VPC A上のEC2インスタンスにEC2 Instance Connectで接続します。

接続後、AWS CLIでDynamoDBの操作ができるか確認します。

まずはエンドポイントURLを指定しない場合です。

$ aws dynamodb list-tables 

Could not connect to the endpoint URL: "https://dynamodb.us-east-1.amazonaws.com/"

DynamoDBのエンドポイントに接続できなかったようです。

続いて、まずはエンドポイントURLを指定する場合です。

$ dig vpce-0c8efa3dad1993dcc-e9aoiw9p.dynamodb.us-east-1.vpce.amazonaws.com

; <<>> DiG 9.16.48-RH <<>> vpce-0c8efa3dad1993dcc-e9aoiw9p.dynamodb.us-east-1.vpce.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37016
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;vpce-0c8efa3dad1993dcc-e9aoiw9p.dynamodb.us-east-1.vpce.amazonaws.com. IN A

;; ANSWER SECTION:
vpce-0c8efa3dad1993dcc-e9aoiw9p.dynamodb.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.254

;; Query time: 0 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Wed Mar 20 02:52:25 UTC 2024
;; MSG SIZE  rcvd: 114

$ aws dynamodb list-tables \
  --endpoint-url https://vpce-0c8efa3dad1993dcc-e9aoiw9p.dynamodb.us-east-1.vpce.amazonaws.com
{
    "TableNames": [
        "analyzer"
    ]
}

DynamoDBのエンドポイントに接続でき、確かにテーブル一覧を取得できました。

インターネットに抜けたくない場合に

Amazon DynamoDBがインターフェイス型VPCエンドポイントをサポートしたアップデートを紹介しました。

組織のコンプライアンスややインターネット回線の帯域が細い場合に役立ちそうですね。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.