本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
參考:為 Systems Manager 建立格式化的日期和時間字串
AWS Systems Manager API 操作接受篩選條件,以限制請求傳回的結果數目。其中一些API操作接受需要格式化字串來代表特定日期和時間的篩選條件。例如, DescribeSessions
API操作接受 InvokedAfter
和 InvokedBefore
金鑰作為SessionFilter
物件的一些有效值。另一個範例是 DescribeAutomationExecutions
API操作,它接受 StartTimeBefore
和 StartTimeAfter
金鑰作為AutomationExecutionFilter
物件的一些有效值。您在篩選請求時為這些金鑰提供的值必須符合 ISO 8601 標準。如需 ISO 8601 的相關資訊,請參閱 ISO 8601。
這些格式化的日期和時間字串不限於篩選條件。此外,在為請求參數提供值時,有些API操作也需要 ISO8601 格式的字串來代表特定日期和時間。例如,AtTime
操作的 GetCalendarState
請求參數。這些字串很難建立。使用此主題中的範例來建立格式化日期和時間字串,以搭配 Systems Manager API操作使用。
以下是 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}