參考:為 Systems Manager 建立格式化的日期和時間字串 - AWS Systems Manager

參考:為 Systems Manager 建立格式化的日期和時間字串

AWS Systems Manager API 操作接受篩選條件,以限制請求傳回的結果數目。其中一些 API 操作接受的篩選條件需要格式化字串以代表特定日期和時間。例如,DescribeSessions API 操作接受 InvokedAfterInvokedBefore 金鑰做為 SessionFilter 物件的部分有效值。另一個範例是 DescribeAutomationExecutions API 操作,它接受 StartTimeBeforeStartTimeAfter 金鑰做為 AutomationExecutionFilter 物件的部分有效值。篩選請求時,您為這些索引鍵提供的數值必須符合 ISO 8601 標準。如需 ISO 8601 的詳細資訊,請參閱 ISO 8601

這些格式化的日期和時間字串不限於篩選條件。在提供請求參數值時,還有一些 API 操作需要 ISO 8601 格式的字串來表示特定的日期和時間。例如,AtTime 操作的 GetCalendarState 請求參數。這些字串很難建立。使用本主題中的範例,來建立格式化的日期和時間字串,以搭配 Systems Manager API 操作使用。

為 Systems Manager 格式化日期和時間字串

以下是 ISO 8601 格式化的日期和時間字串的範例。

2024-05-08T15:16:43Z

這代表 2024 年 5 月 8 日國際標準時間 (UTC) 15:16。字串的行事曆日期部分以四位數的年份、二位數的月份和二位數的日期來表示,並以連字號分隔。這可以用以下格式表示。

YYYY-MM-DD

字串的時間部分以字母「T」開頭做為分隔符號,然後以冒號分隔的二位數小時、二位數分鐘,以及二位數秒表示。這可以用以下格式表示。

hh:mm:ss

字串的時間部分以字母「Z」結尾,表示 UTC 標準。

為 Systems Manager 建立自訂的日期和時間字串

您可以使用偏好的命令列工具從本機機器建立自訂日期和時間字串。您建立 ISO 8601 格式化的日期和時間字串所用的語法會因您本機電腦的作業系統而有所不同。以下是如何在 Linux 上使用 date GNU 的核心使用程序或在 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 文件最後一週的命令歷史記錄。

    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
  • 擷取最後一週的自動化執行歷史記錄。

    lastWeekStamp=$(date '+%Y-%m-%dT%H:%M:%SZ' -d '7 days ago') aws ssm describe-automation-executions \ --filters Key=StartTimeAfter,Values=$lastWeekStamp
  • 擷取最後一個月的工作階段歷史記錄。

    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 文件最後一週的命令歷史記錄。

    $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
  • 擷取最後一週的自動化執行歷史記錄。

    $lastWeekStamp = (Get-Date).AddDays(-7).ToString("yyyy-MM-ddTH:mm:ssZ") Get-SSMAutomationExecutionList ` -Filters @{Key="StartTimeAfter";Values=$lastWeekStamp}
  • 擷取最後一個月的工作階段歷史記錄。

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