[AWSJP.COM トップ]
[AWS CLI サンプルコード トップへ]





【AWS CLI サンプルコード】EBS スナップショットの作成日 (StartTime) を日付型に変換する

Powershell で AWS API を操作するサンプルコードの紹介です。Windows 環境を想定しています。




スナップショットのStartTimeをDateTime型に変換する



AWS 環境における EBSのスナップショットに関して、スナップショットの作成日であるStartTimeを DateType型に変更する方法を紹介します。
デフォルトでは StartTime は System.String 型であるため日付の演算ができません。何らかの方法で System.DateTime に変換する必要があります。
このページでは Powershell により変換するサンプルプログラムを紹介します。

スナップショットのEBS は String 型で 例えば "2020-08-10T04:11:05.992Z" というフォーマットで提供されます。
日付を取得するために.SubString(0,19) で "2020-08-10T04:11:05" を取得しています。
その後ParseExactで年、月、日、時間、分、秒 を取り出して[DateTime]に変換しています。以上でスナップショットの作成日をDateTime型に変換できます。
もし時間、分、秒が不要な場合はSubString(0,10)で"2020-08-10"を取り出して"yyyy-MM-dd"で解析すればよいと思います。

以下はサンプルプログラムです。
すべてのEBSに対してタグで取得対象を絞り込んでいます。その後各スナップショットに対して作成日をDateTime型で取得しています。

サンプルプログラム




######################################################
#
# AWS EBS のスナップショット作成日である StartTimeを
# Powershell で DateTime型に変更するサンプルプログラム
#
# Copyright(c) awsjp.com
# Created:2020/4/1
#
######################################################

$SnapShotsFiltered=(aws ec2 describe-snapshots --filters "Name=tag:snapshotname,Values=test" --region ap-northeast-1)
$s=($SnapShotsFiltered | ConvertFrom-json).SnapShots

$s | ForEach{
write-host "-----------------------------------------------------------"
write-host "【変換前】"
$StartTime=$_.StartTime
write-host $StartTime
write-host $StartTime.GetType()

$StartTime=$StartTime.SubString(0,19)

$StartTime=[DateTime]::ParseExact($StartTime,"yyyy-MM-ddTHH:mm:ss", $null)

write-host "【変換後】"
write-host $StartTime
write-host $StartTime.GetType()
}



注意:時間を表す HHを hh にすると"文字列は有効な DateTime ではありませんでした"エラーとなります。これは hh が 00〜12表記のためです。

以下はこのサンプルプログラムの実行例です。変換前と変換後で型が変更されていることが分かると思います。


-----------------------------------------------------------
【変換前】
2020-08-10T01:30:01.030Z
System.String
【変換後】
2020/08/10 1:30:01
System.DateTime

(以下省略)











[AWS CLI サンプルコード トップへ]
[awsjp.com トップ]


本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 Copyright(c) awsjp.com 2018-2019