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

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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

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

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

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

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

2024-05-08T15:16:43Z

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

YYYY-MM-DD

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

hh:mm:ss

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

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

您可以使用偏好的命令列工具從本機機器建立自訂日期和時間字串。您用來建立 ISO8601 格式日期和時間字串的語法會因本機機器的作業系統而有所不同。以下是如何在 Linux 或 PowerShell Windows 上date從 GNU的 coreutils 使用 ISO 來建立 8601 格式日期和時間字串的範例。

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

使用 Systems Manager API操作時,您可能需要建立歷史日期和時間字串,以便進行報告或故障診斷。以下是如何為 和 () ISO 建立和使用自訂歷史 8601 格式日期和時間字串的範例 AWS Tools for PowerShell AWS Command Line Interface AWS CLI。

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}