リファレンス: ステートマネージャーの書式設定された日付および時刻文字列を作成する - AWS Systems Manager

リファレンス: ステートマネージャーの書式設定された日付および時刻文字列を作成する

AWS Systems Manager API オペレーションは、リクエストによって返される結果の数を制限するフィルターを受け入れます。これらの API オペレーションの中には、特定の日時を表す、フォーマットされた文字列を必要とするフィルターを受け入れるものがあります。例えば、DescribeSessions API アクションは、InvokedAfter オブジェクトの有効な値の一部として InvokedBefore キーと SessionFilter キーを受け入れます。もう 1 つの例は、DescribeAutomationExecutions API オペレーションです。これは、StartTimeBefore オブジェクトの有効な値の一部として StartTimeAfter キーと AutomationExecutionFilter キーを受け入れます。リクエストをフィルタリングするときにこれらのキーに指定する値は、ISO 8601 標準と一致する必要があります。ISO 8601 については、ISO 8601 を参照してください。

これらのフォーマットされた日付および時刻文字列は、フィルタに限定されません。リクエストパラメータの値を指定するときに、特定の日時を表す ISO 8601 形式の文字列を必要とする API オペレーションもあります。例えば、AtTime オペレーションの GetCalendarState リクエストパラメータです。これらの文字列は作成が困難です。このトピックの例を使用して、Systems Manager API オペレーションで使用する、書式設定された日付および時刻文字列を作成します。

Systems Manager の日付と時刻文字列を書式設定する

ISO 8601 形式の日付および時刻文字列の例を次に示します。

2024-05-08T15:16:43Z

これは、協定世界時 (UTC) 2024 年 5 月 8 日の 15:16 を表しています。文字列のカレンダー日付部分は、ハイフンで区切られた 4 桁の年、2 桁の月、および 2 桁の日で表されます。これは、次の形式で表すことができます。

YYYY-MM-DD

文字列の時刻部分は、区切り記号として文字「T」で始まり、コロンで区切られた 2 桁の時間、2 桁の分、2 桁の秒で表されます。これは、次の形式で表すことができます。

hh:mm:ss

文字列の時刻部分は、UTC 標準を示す文字「Z」で終わります。

Systems Manager のカスタム日付と時刻文字列を作成する

任意のコマンドラインツールを使用して、ローカルマシンからカスタムの日付および時刻文字列を作成できます。ISO 8601 形式の日付および時刻文字列の作成に使用する構文は、ローカルマシンのオペレーティングシステムによって異なります。以下は、Linux のGNU coreutils の date または Windows の PowerShell を使用して ISO 8601 形式の日付および時刻文字列を作成する方法の例です。

coreutils
date '+%Y-%m-%dT%H:%M:%SZ'
PowerShell
(Get-Date).ToString("yyyy-MM-ddTH:mm:ssZ")

Systems Manager API オペレーションで作業する場合、レポート作成またはトラブルシューティングのために、日付および時刻の履歴文字列を作成する必要がある場合があります。以下は、AWS Tools for PowerShell および AWS Command Line Interface ( AWS CLI ) の ISO 8601 形式の日付と時刻のカスタム履歴文字列を作成し、使用する方法の例です。

AWS CLI
  • SSM ドキュメントの過去 1 週間のコマンド履歴を取得します。

    lastWeekStamp=$(date '+%Y-%m-%dT%H:%M:%SZ' -d '7 days ago') docFilter='{"key":"DocumentName","value":"AWS-RunPatchBaseline"}' timeFilter='{"key":"InvokedAfter","value":'\"$lastWeekStamp\"'}' commandFilters=[$docFilter,$timeFilter] aws ssm list-commands \ --filters $commandFilters
  • 過去 1 週間のオートメーションの実行履歴を取得します。

    lastWeekStamp=$(date '+%Y-%m-%dT%H:%M:%SZ' -d '7 days ago') aws ssm describe-automation-executions \ --filters Key=StartTimeAfter,Values=$lastWeekStamp
  • 過去 1 か月間のセッション履歴を取得します。

    lastWeekStamp=$(date '+%Y-%m-%dT%H:%M:%SZ' -d '30 days ago') aws ssm describe-sessions \ --state History \ --filters key=InvokedAfter,value=$lastWeekStamp
AWS Tools for PowerShell
  • SSM ドキュメントの過去 1 週間のコマンド履歴を取得します。

    $lastWeekStamp = (Get-Date).AddDays(-7).ToString("yyyy-MM-ddTH:mm:ssZ") $docFilter = @{ Key="DocumentName" Value="AWS-InstallWindowsUpdates" } $timeFilter = @{ Key="InvokedAfter" Value=$lastWeekStamp } $commandFilters = $docFilter,$timeFilter Get-SSMCommand ` -Filters $commandFilters
  • 過去 1 週間のオートメーションの実行履歴を取得します。

    $lastWeekStamp = (Get-Date).AddDays(-7).ToString("yyyy-MM-ddTH:mm:ssZ") Get-SSMAutomationExecutionList ` -Filters @{Key="StartTimeAfter";Values=$lastWeekStamp}
  • 過去 1 か月間のセッション履歴を取得します。

    $lastWeekStamp = (Get-Date).AddDays(-30).ToString("yyyy-MM-ddTH:mm:ssZ") Get-SSMSession ` -State History ` -Filters @{Key="InvokedAfter";Value=$lastWeekStamp}