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

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

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

AWS Systems Manager API作業會接受篩選條件,以限制要求傳回的結果數目。其中一些API操作接受過濾器,這些過濾器需要格式化字符串來表示特定的日期和時間。例如,DescribeSessionsAPI作業會接受InvokedAfter和索InvokedBefore引鍵做為SessionFilter物件的某些有效值。另一個範例是DescribeAutomationExecutionsAPI作業,它接受StartTimeBeforeStartTimeAfter索引鍵做為AutomationExecutionFilter物件的某些有效值。您在篩選要求時為這些索引鍵提供的值必須符合 ISO 8601 標準。如需有關 ISO 8601 的詳細資訊,請參閱 ISO86 01。

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

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

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

2024-05-08T15:16:43Z

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

YYYY-MM-DD

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

hh:mm:ss

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

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

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

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

使用 Systems Manager 作API業時,您可能需要建立歷史日期和時間字串,以供報告或疑難排解之用。以下是如何為 AND AWS Command Line Interface (AWS CLI) 建立和使用自訂歷史 ISO 8601 格式的日期和時間字串的 AWS Tools for PowerShell 範例。

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}