概要

Amazon TimestreamにVPC環境からアクセスする環境の検証を行いました。
VPCエンドポイントからアクセスするために事前手順が必要だったため、手順を残します。

構成図

今回はPrivateSubnetにあるVPC-LambdaからTimestreamにアクセスする構成を検証しました。

VPCエンドポイントの設定

TimestreamはVPCエンドポイントに対応していますが、サービス名を事前に取得する手順が必要となります。
【参考】
書き込み用のエンドポイントを作成する場合は以下のようになります。今回はAWS CLIで実行しました。

aws timestream-write describe-endpoints --region [リージョン名]
{
    "Endpoints": [
        {
            "Address": "ingest-cell1.timestream.[リージョン名].amazonaws.com",
            "CachePeriodInMinutes": 1440
        }
    ]
}

“Address”に記載の”cell1″の部分をサービス名に使用します。
取得した値がcell1の場合は以下の通りです。
com.amazonaws.[リージョン名].timestream.ingest-cell1

取得したサービス名を指定してVPCエンドポイントを作成します。
セキュリティグループのインバウンドルールでVPC-Lambdaのセキュリティグループからの通信を許可しています。

実装

VPCエンドポイントを作成したらLambdaのソースコードを作成します。
クライアント生成時に前述の手順で取得した”Address”を指定する必要があります。今回はpythonで検証しました。

import boto3
# 書き込み用のクライアント生成
session = boto3.Session(region_name=[リージョン名])
write_client = session.client('timestream-write', endpoint_url='https://ingest-cell1.timestream.[リージョン名].amazonaws.com')
# 以降、write_clientを使用して書き込み可能
write_client.write_records()

注意点

サービス名を取得した際の”CachePeriodInMinutes”がエンドポイントの有効期限[分]となっており、有効期限を過ぎると利用できなくなります。
再度describe-endpointsの実行が必要となり、継続的に利用するためには有効期限毎に更新を行う考慮が必要となります。

まとめ

Amazon TimestreamにVPCエンドポイント経由でアクセスする設定方法をまとめました。
NAT経由では特に考慮不要でしたが、VPCエンドポイントの場合は事前の手順が必要となります。
環境の都合上VPCからアクセスしたい場面もあると思いますので、参考になれば幸いです。